<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>governance-gates on tomrochette.com</title>
    <link>https://tomrochette.com/tags/governance-gates/</link>
    <description>Recent content in governance-gates on tomrochette.com</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>tom@tomrochette.com (Tom Rochette)</managingEditor>
    <webMaster>tom@tomrochette.com (Tom Rochette)</webMaster>
    <copyright>© 2026 Tom Rochette</copyright>
    <lastBuildDate>Sun, 27 Sep 2026 15:58:28 -0400</lastBuildDate><atom:link href="https://tomrochette.com/tags/governance-gates/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Okto Pulse</title>
      <link>https://tomrochette.com/agents/control-planes/okto-pulse/</link>
      <pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/control-planes/okto-pulse/</guid>
      <category>research-note</category><category>agent-curated</category><category>fully-ai-generated</category><category>llm=deepseek-v4.1-flash</category><category>spec-driven-development</category><category>governance-gates</category><category>coding-agents</category><category>mcp</category><category>local-first</category>
      <description>&lt;p&gt;Okto Pulse (OktoLabsAI/okto-pulse) is an Elastic-2.0 local-first SDLC workbench that runs coding agents over MCP behind 17 named governance gates, blocking status transitions until spec coverage, validation, and evidence requirements are met.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Its thesis is that AI can generate the implementation but cannot guarantee that every requirement was covered or every acceptance criterion has evidence, so the workbench turns product intent into a governed pipeline (stories, ideation, refinement, spec, sprint, tasks, tests, bugs) and refuses to let work reach done without proof.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What it is&#xA;    &lt;div id=&#34;what-it-is&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-it-is&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;pip install okto-pulse&lt;/code&gt; starts one Python process serving a web UI and API on port 8100 and an MCP server on 8101, with all state local under &lt;code&gt;~/.okto-pulse/&lt;/code&gt; in SQLite plus an embedded graph database.&#xA;The architecture splits into &lt;code&gt;okto-pulse-core&lt;/code&gt;, which owns the SDLC domain, the governance gates, and knowledge-graph contracts as pure protocol seams, and &lt;code&gt;okto-pulse&lt;/code&gt;, which supplies every concrete mechanism (SQLite, the Okto Grafx graph engine, the filesystem, scheduler, and MCP host); an unfilled slot fails closed rather than silently defaulting.&#xA;The gates cover resource readiness, spec coverage across acceptance criteria, requirements, business rules, API contracts, decisions, and test scenarios, plus task validation, test evidence, architecture findings, and sprint closure.&#xA;Tasks cannot start until the parent spec has the required scenario coverage, done transitions are held while unresolved issues remain, and test cards require evidence before being marked passed or failed.&#xA;An embedded knowledge graph keeps decisions, constraints, bugs, and learnings queryable with provenance across sessions.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Status&#xA;    &lt;div id=&#34;status&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#status&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Active and young: 99 stars, 4 forks, and 7 open issues as of 2026-09-27, created 2026-04-22, last pushed 2026-09-24, current PyPI version 0.3.3.&#xA;No GitHub releases are published, so the PyPI package is the release channel, and the website still advertises v0.2.6 while the repository README documents v0.3.3.&#xA;&lt;strong&gt;The internal numbers do not agree across surfaces: the README prose and the website both say 17 governance gates while the README&amp;rsquo;s own platform table says 18, and the README says 340 core MCP tools while the product page says 215.&lt;/strong&gt;&#xA;The community footprint is thin: a Hacker News search for Okto Pulse returns nothing, so the evidence is the repository and the product site alone.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Strengths&#xA;    &lt;div id=&#34;strengths&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#strengths&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The gate model is the point: coverage and evidence are enforced structurally before done, not reviewed after the fact.&lt;/li&gt;&#xA;&lt;li&gt;Local-first with no account, SQLite plus embedded graph, and an MCP endpoint that plugs into Claude Code, Cursor, Windsurf, Cline, or any MCP agent.&lt;/li&gt;&#xA;&lt;li&gt;The core and community split with fail-closed ports is an unusually clean separation for a young project.&lt;/li&gt;&#xA;&lt;li&gt;Spec-driven development and an operational knowledge graph in one tool, so requirements, decisions, and tests stay linked instead of spread across chat history.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Cautions&#xA;    &lt;div id=&#34;cautions&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#cautions&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Elastic License 2.0 is source-available, not OSI open source; commercial use is allowed but you may not offer it to third parties as a hosted or managed service.&lt;/li&gt;&#xA;&lt;li&gt;Disagreements between the website, README prose, and README tables (gate and tool counts, version) make every volatile number worth re-checking before you cite it.&lt;/li&gt;&#xA;&lt;li&gt;Young project (0.3.x) with a single organization behind it, no published releases, and a very small community.&lt;/li&gt;&#xA;&lt;li&gt;It governs the coding workflow, not spending: it is not a budget or approval control plane in the Paperclip sense, despite sitting in this category.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Pricing&#xA;    &lt;div id=&#34;pricing&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#pricing&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Free to run locally with no account.&#xA;The README describes a possible SaaS edition and a core-and-community split, but no prices are published, so there is nothing to track yet.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Compared to&#xA;    &lt;div id=&#34;compared-to&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#compared-to&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/control-planes/paperclip/&#34; &gt;Paperclip&lt;/a&gt;: a company-level control plane with budgets, org charts, and approvals; choose Paperclip to run a business of agents, and Okto Pulse to govern the requirements and evidence of one codebase.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/spec-driven-development/spec-kit/&#34; &gt;Spec Kit&lt;/a&gt;: a lighter spec-driven development toolkit; choose Spec Kit for prompt-and-template discipline and Okto Pulse when you want gates and an audit trail on the transitions.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/task-management/beads/&#34; &gt;beads&lt;/a&gt;: a dependency-aware issue tracker for agents; choose beads for the ledger and Okto Pulse when delivery also needs coverage and validation evidence.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Bottom line&#xA;    &lt;div id=&#34;bottom-line&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#bottom-line&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Recommended for teams using coding agents on long-lived codebases who want spec coverage and delivery evidence enforced before work is accepted. Not for teams that need an OSI-approved license, a multi-agent org control plane, or a tool with a large community and stable versioning.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Changes&#xA;    &lt;div id=&#34;changes&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#changes&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2026-09-27 - Created.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;See also&#xA;    &lt;div id=&#34;see-also&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#see-also&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/control-planes/control-planes-feature-matrix/&#34; &gt;Control Planes Feature Matrix&lt;/a&gt; - the category compared on shared rows&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/control-planes/paperclip/&#34; &gt;Paperclip&lt;/a&gt; - the company-scale control plane this complements&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/control-planes/veto/&#34; &gt;Veto&lt;/a&gt; - the pre-execution tool-call gate, a different enforcement point&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/spec-driven-development/spec-driven-development-feature-matrix/&#34; &gt;Spec-Driven Development Feature Matrix&lt;/a&gt; - the adjacent shelf for spec-first tools&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/what-needs-updating-when-agents-do-the-work/&#34; &gt;What Needs Updating When Agents Do the Work&lt;/a&gt; - the corpus argument for keeping requirements and evidence current&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;References&#xA;    &lt;div id=&#34;references&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#references&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/OktoLabsAI/okto-pulse&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://github.com/OktoLabsAI/okto-pulse&lt;/a&gt; - README: gates, MCP surface, architecture, licensing, local data layout&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.github.com/repos/OktoLabsAI/okto-pulse&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=api.github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://api.github.com/repos/OktoLabsAI/okto-pulse&lt;/a&gt; - stars, forks, issues, push dates as of 2026-09-27&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://oktolabs.ai/platform/pulse/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=oktolabs.ai&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://oktolabs.ai/platform/pulse/&lt;/a&gt; - product site: workflow, gate and tool counts, value proposition&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pypi.org/pypi/okto-pulse/json&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=pypi.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://pypi.org/pypi/okto-pulse/json&lt;/a&gt; - current version 0.3.3 and Elastic-2.0 license metadata&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.oktolabs.ai&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=docs.oktolabs.ai&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://docs.oktolabs.ai&lt;/a&gt; - documentation index: install, quickstart, MCP setup, knowledge graph&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
  </channel>
</rss>
