You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ouroboros should be understood as an OS-like core plus UserLevel programs built on top of it.
The core should provide stable primitives. UserLevel programs should compose those primitives into useful workflows. Some UserLevel programs can be first-party and ship with Ouroboros, such as ooo auto. Others should be installable plugins maintained by teams or the ecosystem.
This gives us a cleaner boundary than putting every useful workflow into core, or into ooo auto.
Layer Model
+-------------------------------------------------------------------+
| Installable UserLevel Programs |
| |
| github-pr-ops merge-assistant jira-sync linear-triage |
| slack-incident release-coordinator customer-debugger ... |
+-------------------------------+-----------------------------------+
|
| plugin contract / declared scopes
v
+-------------------------------------------------------------------+
| First-party UserLevel Programs |
| |
| ooo auto ooo run ooo pm ooo review? ... |
| |
| These are product-level workflows maintained with Ouroboros, |
| but they are still programs above the core, not the core itself. |
+-------------------------------+-----------------------------------+
|
| uses stable OS primitives
v
+-------------------------------------------------------------------+
| Ouroboros Core / OS |
| |
| Seed Ledger State Runtime MCP |
| Provenance Safety Boundaries Progress/Status Handoff |
+-------------------------------+-----------------------------------+
|
| bounded adapters / external calls
v
+-------------------------------------------------------------------+
| External Systems / Runtimes |
| |
| GitHub Jira Linear Slack CI Local repo Agent CLIs |
+-------------------------------------------------------------------+
Core Boundary
Core should provide primitives that can support many workflows:
Seed generation and validation
Ledger and evidence/provenance tracking
Durable workflow state
Runtime/provider abstraction
MCP tool surfaces
Safety boundaries and permission checks
Progress, recovery, and status reporting
Execution handoff and result attachment
Core should not directly encode every domain workflow. It should not need built-in knowledge of GitHub PR merge policy, Jira triage semantics, Slack incident response flows, release checklist conventions, or customer support debugging playbooks.
Those belong at the UserLevel.
First-party UserLevel Programs
ooo auto is not the core. It is a first-party UserLevel program built on core primitives.
That is a valuable first-party workflow. It can use Seed, ledger, state, provenance, safety, runtime, MCP, progress, recovery, and handoff primitives. But it should not become the place where every operational workflow is routed.
This distinction matters. Saying something does not belong in core does not mean Ouroboros cannot ship UserLevel programs. It means those programs should have explicit product boundaries.
Installable UserLevel Programs
Many useful workflows should live beside ooo auto, not inside it.
Capabilities: declared access to core primitives such as Seed, ledger, state, MCP, runtime, and handoff
Permissions: declared external scopes such as GitHub read/write, filesystem, network, shell, or repo access
Command namespace: explicit ownership and collision handling
State boundaries: plugin-owned state vs core-owned state
Audit/provenance: every program-driven action records who invoked it, what program ran, what capabilities were used, and what external systems were touched
Version pinning: reproducible workflow behavior across teams and agents
Trust policy: local plugins, git-sourced plugins, registry plugins, signed or verified plugins
Uninstall/update semantics: remove or upgrade without corrupting core state
Why This Matters
The failure mode is clear:
Bad direction:
ooo auto grows GitHub logic, Jira logic, Slack logic, release logic, etc.
Better direction:
Core exposes stable OS primitives.
ooo auto remains a first-party goal -> Seed -> handoff program.
Additional domain workflows become separate UserLevel programs.
This gives contributors a clean place to put useful but domain-specific ideas. Instead of debating whether every workflow belongs in core or inside ooo auto, we can ask:
Is this an OS primitive?
Is this part of an existing first-party UserLevel program's product boundary?
Or should it be a separate UserLevel program/plugin?
The GitHub PR operational workflow is useful, but it is neither an OS primitive nor part of the ooo auto product boundary.
It should become a separate UserLevel program such as github-pr-ops or merge-assistant, using core primitives for state, provenance, safety, policy checks, and execution handoff.
That keeps core small, keeps ooo auto coherent, and still allows the ecosystem to grow.
MVP Direction
Sub-issue priority: C + D first (audit-wrapped invocation + github-pr-ops reference plugin). A and B (manifest format expansion, manager UX maturation) emerge from what D actually exercises. See #726 for the full sub-issue index.
A full package ecosystem is a large product. The first step should probably be a local-only contract MVP, not a registry.
Possible MVP:
Local plugin/program manifest
Command namespace registration
Declared core capabilities
Declared external permissions
Read-only provenance/audit recording
No registry
No auto-update
No destructive permissions by default
One reference UserLevel program, likely github-pr-ops, to validate the contract
The goal is to stabilize the contract before promising a full ecosystem.
Open Questions
Should the package unit be called plugin, skill, package, workflow, or UserLevel program?
Should the manager reuse the existing skill system, extend it, or replace parts of it?
"Should there be an official registry, or should v1 support local path and git URL only?" — resolved: local + git URL only. Marketplace as a product surface is a non-goal.
Non-goals
Do not move domain-specific operational workflows into core.
Do not put every useful workflow into ooo auto.
Do not let plugins mutate arbitrary core state without declared capabilities.
Do not make install imply trust for destructive actions.
Do not design this only for GitHub PR workflows; GitHub should be one UserLevel program, not the architecture.
Marketplace as a product surface is a non-goal. Plugin distribution is local path + git URL only. Any future catalog/index is reproducibility infrastructure, not a discovery / ranking / recommendation surface.
Self-restraint (operating principles)
The plugin layer exists to keep core small, not to grow ecosystem surface area. Specifically:
We do not pursue plugin count, marketplace dynamics, or "ecosystem health" as success metrics. The success metric for Ouroboros remains the strength of the spec-first discipline (Interview / Seed / Evolve / Provenance) and the quality of execution under that discipline.
Reference plugins are deliberately few, high-quality, and maintained by core authors or co-maintainers — not a long-tail catalog.
Lock-in for Ouroboros comes from the spec-first discipline and the durable substrate (ledger, provenance, seed history), not from how many plugins exist on top.
The plugin layer is plumbing. It exists invisibly to prevent core bloat. It is not a product surface.
Vision
Ouroboros should be understood as an OS-like core plus UserLevel programs built on top of it.
The core should provide stable primitives. UserLevel programs should compose those primitives into useful workflows. Some UserLevel programs can be first-party and ship with Ouroboros, such as
ooo auto. Others should be installable plugins maintained by teams or the ecosystem.This gives us a cleaner boundary than putting every useful workflow into core, or into
ooo auto.Layer Model
Core Boundary
Core should provide primitives that can support many workflows:
Core should not directly encode every domain workflow. It should not need built-in knowledge of GitHub PR merge policy, Jira triage semantics, Slack incident response flows, release checklist conventions, or customer support debugging playbooks.
Those belong at the UserLevel.
First-party UserLevel Programs
ooo autois not the core. It is a first-party UserLevel program built on core primitives.Its product boundary should stay clear:
That is a valuable first-party workflow. It can use Seed, ledger, state, provenance, safety, runtime, MCP, progress, recovery, and handoff primitives. But it should not become the place where every operational workflow is routed.
This distinction matters. Saying something does not belong in core does not mean Ouroboros cannot ship UserLevel programs. It means those programs should have explicit product boundaries.
Installable UserLevel Programs
Many useful workflows should live beside
ooo auto, not inside it.Examples:
These workflows can be powerful while remaining outside both core and
ooo auto.Plugin / Program Manager
To support installable UserLevel programs, Ouroboros needs a manager layer.
The manager is not just a convenience installer. It is the boundary that lets external programs use core primitives safely and predictably.
Example UX sketches:
or, if we want a shorter UserLevel syntax:
ooo add github-pr-ops ooo github-pr "review and prepare merge for PR #123"The plugin owns the command namespace. Core owns the permission model, audit trail, state contract, and execution boundaries.
Required Contract
A first-class UserLevel program/plugin contract likely needs:
Why This Matters
The failure mode is clear:
This gives contributors a clean place to put useful but domain-specific ideas. Instead of debating whether every workflow belongs in core or inside
ooo auto, we can ask:Relationship To #689
#689 is a good example of the boundary problem.
The GitHub PR operational workflow is useful, but it is neither an OS primitive nor part of the
ooo autoproduct boundary.It should become a separate UserLevel program such as
github-pr-opsormerge-assistant, using core primitives for state, provenance, safety, policy checks, and execution handoff.That keeps core small, keeps
ooo autocoherent, and still allows the ecosystem to grow.MVP Direction
Sub-issue priority: C + D first (audit-wrapped invocation +
github-pr-opsreference plugin). A and B (manifest format expansion, manager UX maturation) emerge from what D actually exercises. See #726 for the full sub-issue index.A full package ecosystem is a large product. The first step should probably be a local-only contract MVP, not a registry.
Possible MVP:
github-pr-ops, to validate the contractThe goal is to stabilize the contract before promising a full ecosystem.
Open Questions
ooo <namespace> ...,ouroboros plugin run ..., or both?Non-goals
ooo auto.Self-restraint (operating principles)
The plugin layer exists to keep core small, not to grow ecosystem surface area. Specifically: