Latest commit

History

175 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

enso

enso is built on the Pygmalion model. The maker is the human — the user who shapes the work. The medium is the persistent substrate: codebase, docs, harness instance, knowledge base, the durable state that survives the session. The figure is the orchestration surface, and through it, the agents that do the work. The maker's hand shapes figures against the medium. When the hand lifts, what stands there has to be alive — has to have its own read, its own voice. The seam graph is the technique that lets the hand work the medium without breaking it. The unfinished sculpture is the failure mode to design against. The standard, in every session, is whether the figure stands on its own.

Intelligence lives in the model. Control lives in the runtime and harness. Continuity lives in the substrate.

enso is a seam-oriented harness protocol for agentic work.

Every boundary where behavior changes hands—planning to execution, agent to capability, stance to protocol—is a seam. Most systems treat those boundaries as afterthoughts. enso treats them as first-class: each seam has an interface (the contract) and an enabling point (where you swap the driver). That separation is what makes agent systems inspectable, composable, and compounding over time.

Drop AGENTS.md into your repo and you bootstrap a harness instance—a persistent, project-local orchestration surface that turns ephemeral agent sessions into verifiable, recursive workflows.

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

One file. No dependencies. No CLI. Your agent becomes a more disciplined engineer.


The Problem

If you code with agents, you know this fatigue.

You explain the architecture to an agent that built it three sessions ago. You find bugs reintroduced because last week's lesson evaporated. You watch a brilliant model behave like an amnesiac—writing code that contradicts its own conventions, touching files it promised to avoid, treating every task like opening night with no rehearsal.

The model is not the problem. The model is magnificent. The problem is that decisions vanish at the seams—the boundaries where one behavior hands off to another. Planning collapses into execution without review. An agent's stance leaks into its protocol. Capabilities are hard-coded instead of discovered. Without explicit contracts at each boundary, every session starts cold and coherence decays.

An orchestration surface is the persistent, inspectable contract layer between a human and a swarm of agents—and between the agents themselves. Without it, decisions vanish, lessons evaporate, and the human becomes the memory system. That doesn't scale.

A surface is not just many interfaces. A pile of APIs is not a surface. A surface is a coherent collection of interfaces presented as one thing: the human touches it as one object, each interface has a role, the seams are intentional, transitions don't feel like abandonment, and the vocabulary is shared enough to become usable.


The Solution: The Surface

An agent harness is everything between user intent and model output that is not the language model itself—runtime behavior, context assembly, tool orchestration, verification loops, feedback mechanisms, and lifecycle management.

The harness is the 80% factor in agent reliability. Same model, better harness, dramatically better results.

EvidenceResult
Vercel agent evalsPersistent context via AGENTS.md achieved a 100% pass rate vs. 79% for on-demand skill retrieval—a +21 percentage point improvement (source)
LangChain Terminal Bench 2.0Same model (Claude Opus 4.6), different harness: improved from Top 30 to Top 5 by optimizing the harness alone (source)

"The model contains the intelligence. The harness makes that intelligence useful." — LangChain

Enso is the harness that makes the surface deterministic, inspectable, and compounding. File-based truth replaces vector-database drift. Context lives in verified architecture docs and explicit cross-package state, session over session. It is a way to make that harness explicit, durable, and project-local.


The Seams

SeamInterfaceEnabling Point
Planning → ExecutionStory template (Goal, AC, Approach, Verification)The story document—reviewed before code is touched
Ephemeral → PersistentSix operations: Write, Select, Probe, Compress, Isolate, AssignThe agent's explicit invocation
Agent → CodebaseContext Scope (Write / Read / Exclude)The scoped file list loaded at runtime
Agent → CapabilitySKILL.md frontmatterThe scripts in docs/skills/<name>/
Agent → AgentSpawn contract (context scope, prompt envelope, return path)The bash invocation of pi from within a running harness
Stance → ProtocolSOUL.md / AGENTS.md dual-document structureWhich persona files are injected into the harness at runtime

Every interface is a language. enso's vocabulary is its seam graph.

Seams in practice

Capabilities. Look at docs/skills/<name>/:

The agent reads SKILL.md to discover what this slot does. The shell script does the work. The script can be rewritten in Python or replaced with a different backend—without changing how the agent discovers or routes to it. The contract is stable. The implementation moves.

Stance vs. protocol. When a human-facing agent needs to shift between a debugging session and a reflective conversation, the surface doesn't rewrite its identity. The interface is the dual-document structure (SOUL.md for stance, AGENTS.md for protocol). The enabling point is which files get injected into the harness. Technical work gets precision; personal weight gets presence. Same surface, different register.


The Canonical Stack

Enso works by separating what reasons, what executes, what governs, what persists, and what gets changed. The surface lives in the middle—the contract layer that coordinates across seams.

LayerWhat it isExample
ModelThe LLM that reasons and generates outputGPT, Claude, Gemini
RuntimeThe executable host that runs loops and dispatches toolsOpenCode, Claude Code, Cursor, Codex
Harness protocolThe rules, schema, and workflow for disciplined agent workenso
Harness instanceA project-local realization of the protocol—the surface installed in your repoAGENTS.md, docs/, skills/, logs/
Agent instantiationOne ephemeral task process running inside the runtimethe current session or task
SubstrateThe durable environment being read and transformedcodebase, docs, configs, repo state
  • the model reasons
  • the runtime executes
  • the harness protocol defines how work should happen
  • the harness instance is that protocol installed in a specific project—this is the surface
  • the agent instantiation is the current ephemeral worker
  • the substrate is the durable environment being transformed

What Persists—and What Doesn't

Agent instantiations are ephemeral. They start, do work, and disappear.

Harness instances and substrates persist.

That distinction is the whole game. Without a persistent harness instance attached to a persistent substrate, every agent run starts cold. Decisions vanish. Lessons evaporate. The human becomes the memory system.

Enso fixes that by giving each agent instantiation a durable project context to read from and write back to.


The Execution Loop

The surface becomes executable when work moves through an explicit role loop:

Planner Generator Evaluator adversarial loop

The Planner turns intent into a story contract: goal, scope, acceptance criteria, and verification. The Generator implements only inside the story's declared write scope. The Evaluator checks the result against the frozen contract and evidence. The Human approves plans, accepts results, requests revisions, or blocks unsafe transitions.

The substrate for that loop is a live story file. STORY-000 is reserved for the enso.story/v1 specification; live stories such as STORY-001+ conform to that spec and carry the current state, role outputs, verification evidence, and transition history for one unit of work.

This planner-generator-evaluator pattern is one concrete execution model for enso, not a requirement that every runtime implement it the same way. The strict pi version is documented in docs/reference/hitl-pge-loop-design.md.


Quick Start

1. Plant the Seed

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

AGENTS.md is not just documentation—it is the seed of the harness protocol inside your repo. Once bootstrapped, it becomes part of a project-local harness instance that future agent instantiations can reuse. Without it, the protocol disappears between runs.

2. Activate

Paste exactly this into your agent:

ToolPrompt
Claude Code/read AGENTS.md then /project "Bootstrap this project using the enso protocol."
Cursor@AGENTS.md in chat, then type Bootstrap this project with enso.
OpenCodeRead @AGENTS.md and bootstrap this project.
PiRun pi in the repo, then type: Bootstrap this project with enso.

3. Watch It Grow

00:00> Read @AGENTS.md and bootstrap this project.
00:03Bootstrapping docs/ structure...
00:08Probing codebase—found 14 source files, 2 test suites.
00:18Mapping architecture...
00:35Drafting PRD.md and ARCHITECTURE.md.
00:52First story template ready at docs/stories/STORY-001.md.
00:59Harness instance active. What should we build first?

From there, the cycle repeats: plan, execute, capture, extend. Each session leaves the harness instance sharper than the last.


How It Works

Each agent instantiation runs inside a runtime, follows the enso protocol, and operates against the same substrate through the project's harness instance. The surface is the contract layer that coordinates human intent, agent specialization, and execution.

The Six Operations

The context window is a spotlight—you can illuminate only so much at once. Six operations control what's lit, what's just off-stage, and when to change scenes.

OperationAction
WritePersist insights to disk
SelectLoad only what's needed now
ProbeSearch actively—don't assume, discover
CompressSummarize to fit the token budget
IsolateSplit work across scopes
AssignMatch task to the right agent

The Directory Structure

Enso creates a standard, predictable structure that becomes part of the project's harness instance:

docs/
core/ # Source of truth—PRD, Architecture
stories/ # Active units of work
reference/ # Long-term memory—lessons, conventions
skills/ # Self-authored tools and capabilities
logs/ # Session history

Core holds the source of truth. Stories hold active scoped work. Reference holds earned knowledge. Skills hold self-authored capabilities. Logs hold compressed session memory.

The Self-Extension Loop

Enso draws from the Pi Principle: agents extend themselves by authoring tools, not downloading them.

When an agent encounters friction—a repetitive task, a complex procedure, a missing capability—it doesn't wait. It builds the minimal tool, persists it to docs/skills/, and moves on. Those capabilities become part of the harness instance, and future agent instantiations inherit them automatically. Later sessions refine them.

The Pi Principle lives at the agent → capability seam. When an agent hits friction, it doesn't rewrite its system prompt—it authors a tool where the contract (SKILL.md) stays stable and the driver (the script) can evolve. The compounding effect: a tool built today saves derivation cost in every future session. After months of work, an agent has dozens of custom tools tailored to its codebase—not downloaded dependencies, but authored capabilities. Software that builds software.

"The most powerful agents are not those with the most downloaded dependencies, but those that have built the most custom tools for their specific workflows."


Core Principles

Enso treats context as a scarce resource. Every token competes for attention. Three principles govern the protocol:

  • Separate concerns. Working context is ephemeral, persistent context survives sessions, and reference context is retrieved on demand.
  • Progressive disclosure. Load only what you need, when you need it. Summaries before details. Search before assuming.
  • Stay current, not historical. Documents reflect the present state. Git tracks history. Docs don't accumulate cruft.

Key Capabilities

CapabilityPayoff
Plan-before-executeNo file changes without a verified story
Context scopeExplicit Write/Read/Exclude boundaries on every task
Retrieval-led reasoningVersion-matched docs in docs/ instead of stale training data
Agentic discoveryAgents probe the codebase and build a mental map before talking to you
Institutional memoryLessons and anti-patterns captured in LESSONS.md, preventing repeat mistakes
Self-extending agentsCapabilities compound over time—the agent becomes uniquely capable for its domain
Multi-agent surfaceSpecialists (Planner, Generator, Evaluator, Curator) activated by the Assign operation and coordinated through shared story state

What Enso Is

  • A file-based protocol. It lives in your repo, not as a dependency.
  • A contract language. It defines interfaces at seams, not a runtime that executes them.
  • Model-agnostic. Works with any agentic runtime that can read files and follow instructions.
  • Adaptable. The protocol is a starting point. Adapt it to your codebase, your workflow, your domain.

What Enso Is Not

  • Not a model. Enso does not generate tokens or do reasoning.
  • Not a runtime. It does not host execution loops or dispatch tools by itself.
  • Not a CLI or library. There's nothing heavyweight to install or maintain.
  • Not rigid. You modify the protocol for your domain; the protocol doesn't modify you.

References

  • Pi Principle — Agents extend themselves by authoring tools. pi-mono
  • Story State SpecSTORY-000, the canonical enso.story/v1 contract for live story instances. docs/reference/STORY.md
  • HITL PGE Loop Design — Strict planner-generator-evaluator loop over live story state. docs/reference/hitl-pge-loop-design.md
  • Sisyphus Orchestration Loop — Multi-step task execution with verification gates. oh-my-opencode ecosystem
  • Agentic Context Engineering — Research on context management for AI agents. arXiv:2510.04618
  • Vercel Agent Evals — Persistent context via AGENTS.md achieved 100% pass rate vs. 79% for skill retrieval. Blog
  • LangChain Terminal Bench 2.0 — Harness optimization improved agent ranking from Top 30 to Top 5. Blog

License

MIT

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

175 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

enso

enso is built on the Pygmalion model. The maker is the human — the user who shapes the work. The medium is the persistent substrate: codebase, docs, harness instance, knowledge base, the durable state that survives the session. The figure is the orchestration surface, and through it, the agents that do the work. The maker's hand shapes figures against the medium. When the hand lifts, what stands there has to be alive — has to have its own read, its own voice. The seam graph is the technique that lets the hand work the medium without breaking it. The unfinished sculpture is the failure mode to design against. The standard, in every session, is whether the figure stands on its own.

Intelligence lives in the model. Control lives in the runtime and harness. Continuity lives in the substrate.

enso is a seam-oriented harness protocol for agentic work.

Every boundary where behavior changes hands—planning to execution, agent to capability, stance to protocol—is a seam. Most systems treat those boundaries as afterthoughts. enso treats them as first-class: each seam has an interface (the contract) and an enabling point (where you swap the driver). That separation is what makes agent systems inspectable, composable, and compounding over time.

Drop AGENTS.md into your repo and you bootstrap a harness instance—a persistent, project-local orchestration surface that turns ephemeral agent sessions into verifiable, recursive workflows.

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

One file. No dependencies. No CLI. Your agent becomes a more disciplined engineer.


The Problem

If you code with agents, you know this fatigue.

You explain the architecture to an agent that built it three sessions ago. You find bugs reintroduced because last week's lesson evaporated. You watch a brilliant model behave like an amnesiac—writing code that contradicts its own conventions, touching files it promised to avoid, treating every task like opening night with no rehearsal.

The model is not the problem. The model is magnificent. The problem is that decisions vanish at the seams—the boundaries where one behavior hands off to another. Planning collapses into execution without review. An agent's stance leaks into its protocol. Capabilities are hard-coded instead of discovered. Without explicit contracts at each boundary, every session starts cold and coherence decays.

An orchestration surface is the persistent, inspectable contract layer between a human and a swarm of agents—and between the agents themselves. Without it, decisions vanish, lessons evaporate, and the human becomes the memory system. That doesn't scale.

A surface is not just many interfaces. A pile of APIs is not a surface. A surface is a coherent collection of interfaces presented as one thing: the human touches it as one object, each interface has a role, the seams are intentional, transitions don't feel like abandonment, and the vocabulary is shared enough to become usable.


The Solution: The Surface

An agent harness is everything between user intent and model output that is not the language model itself—runtime behavior, context assembly, tool orchestration, verification loops, feedback mechanisms, and lifecycle management.

The harness is the 80% factor in agent reliability. Same model, better harness, dramatically better results.

EvidenceResult
Vercel agent evalsPersistent context via AGENTS.md achieved a 100% pass rate vs. 79% for on-demand skill retrieval—a +21 percentage point improvement (source)
LangChain Terminal Bench 2.0Same model (Claude Opus 4.6), different harness: improved from Top 30 to Top 5 by optimizing the harness alone (source)

"The model contains the intelligence. The harness makes that intelligence useful." — LangChain

Enso is the harness that makes the surface deterministic, inspectable, and compounding. File-based truth replaces vector-database drift. Context lives in verified architecture docs and explicit cross-package state, session over session. It is a way to make that harness explicit, durable, and project-local.


The Seams

SeamInterfaceEnabling Point
Planning → ExecutionStory template (Goal, AC, Approach, Verification)The story document—reviewed before code is touched
Ephemeral → PersistentSix operations: Write, Select, Probe, Compress, Isolate, AssignThe agent's explicit invocation
Agent → CodebaseContext Scope (Write / Read / Exclude)The scoped file list loaded at runtime
Agent → CapabilitySKILL.md frontmatterThe scripts in docs/skills/<name>/
Agent → AgentSpawn contract (context scope, prompt envelope, return path)The bash invocation of pi from within a running harness
Stance → ProtocolSOUL.md / AGENTS.md dual-document structureWhich persona files are injected into the harness at runtime

Every interface is a language. enso's vocabulary is its seam graph.

Seams in practice

Capabilities. Look at docs/skills/<name>/:

The agent reads SKILL.md to discover what this slot does. The shell script does the work. The script can be rewritten in Python or replaced with a different backend—without changing how the agent discovers or routes to it. The contract is stable. The implementation moves.

Stance vs. protocol. When a human-facing agent needs to shift between a debugging session and a reflective conversation, the surface doesn't rewrite its identity. The interface is the dual-document structure (SOUL.md for stance, AGENTS.md for protocol). The enabling point is which files get injected into the harness. Technical work gets precision; personal weight gets presence. Same surface, different register.


The Canonical Stack

Enso works by separating what reasons, what executes, what governs, what persists, and what gets changed. The surface lives in the middle—the contract layer that coordinates across seams.

LayerWhat it isExample
ModelThe LLM that reasons and generates outputGPT, Claude, Gemini
RuntimeThe executable host that runs loops and dispatches toolsOpenCode, Claude Code, Cursor, Codex
Harness protocolThe rules, schema, and workflow for disciplined agent workenso
Harness instanceA project-local realization of the protocol—the surface installed in your repoAGENTS.md, docs/, skills/, logs/
Agent instantiationOne ephemeral task process running inside the runtimethe current session or task
SubstrateThe durable environment being read and transformedcodebase, docs, configs, repo state
  • the model reasons
  • the runtime executes
  • the harness protocol defines how work should happen
  • the harness instance is that protocol installed in a specific project—this is the surface
  • the agent instantiation is the current ephemeral worker
  • the substrate is the durable environment being transformed

What Persists—and What Doesn't

Agent instantiations are ephemeral. They start, do work, and disappear.

Harness instances and substrates persist.

That distinction is the whole game. Without a persistent harness instance attached to a persistent substrate, every agent run starts cold. Decisions vanish. Lessons evaporate. The human becomes the memory system.

Enso fixes that by giving each agent instantiation a durable project context to read from and write back to.


The Execution Loop

The surface becomes executable when work moves through an explicit role loop:

Planner Generator Evaluator adversarial loop

The Planner turns intent into a story contract: goal, scope, acceptance criteria, and verification. The Generator implements only inside the story's declared write scope. The Evaluator checks the result against the frozen contract and evidence. The Human approves plans, accepts results, requests revisions, or blocks unsafe transitions.

The substrate for that loop is a live story file. STORY-000 is reserved for the enso.story/v1 specification; live stories such as STORY-001+ conform to that spec and carry the current state, role outputs, verification evidence, and transition history for one unit of work.

This planner-generator-evaluator pattern is one concrete execution model for enso, not a requirement that every runtime implement it the same way. The strict pi version is documented in docs/reference/hitl-pge-loop-design.md.


Quick Start

1. Plant the Seed

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

AGENTS.md is not just documentation—it is the seed of the harness protocol inside your repo. Once bootstrapped, it becomes part of a project-local harness instance that future agent instantiations can reuse. Without it, the protocol disappears between runs.

2. Activate

Paste exactly this into your agent:

ToolPrompt
Claude Code/read AGENTS.md then /project "Bootstrap this project using the enso protocol."
Cursor@AGENTS.md in chat, then type Bootstrap this project with enso.
OpenCodeRead @AGENTS.md and bootstrap this project.
PiRun pi in the repo, then type: Bootstrap this project with enso.

3. Watch It Grow

00:00> Read @AGENTS.md and bootstrap this project.
00:03Bootstrapping docs/ structure...
00:08Probing codebase—found 14 source files, 2 test suites.
00:18Mapping architecture...
00:35Drafting PRD.md and ARCHITECTURE.md.
00:52First story template ready at docs/stories/STORY-001.md.
00:59Harness instance active. What should we build first?

From there, the cycle repeats: plan, execute, capture, extend. Each session leaves the harness instance sharper than the last.


How It Works

Each agent instantiation runs inside a runtime, follows the enso protocol, and operates against the same substrate through the project's harness instance. The surface is the contract layer that coordinates human intent, agent specialization, and execution.

The Six Operations

The context window is a spotlight—you can illuminate only so much at once. Six operations control what's lit, what's just off-stage, and when to change scenes.

OperationAction
WritePersist insights to disk
SelectLoad only what's needed now
ProbeSearch actively—don't assume, discover
CompressSummarize to fit the token budget
IsolateSplit work across scopes
AssignMatch task to the right agent

The Directory Structure

Enso creates a standard, predictable structure that becomes part of the project's harness instance:

docs/
core/ # Source of truth—PRD, Architecture
stories/ # Active units of work
reference/ # Long-term memory—lessons, conventions
skills/ # Self-authored tools and capabilities
logs/ # Session history

Core holds the source of truth. Stories hold active scoped work. Reference holds earned knowledge. Skills hold self-authored capabilities. Logs hold compressed session memory.

The Self-Extension Loop

Enso draws from the Pi Principle: agents extend themselves by authoring tools, not downloading them.

When an agent encounters friction—a repetitive task, a complex procedure, a missing capability—it doesn't wait. It builds the minimal tool, persists it to docs/skills/, and moves on. Those capabilities become part of the harness instance, and future agent instantiations inherit them automatically. Later sessions refine them.

The Pi Principle lives at the agent → capability seam. When an agent hits friction, it doesn't rewrite its system prompt—it authors a tool where the contract (SKILL.md) stays stable and the driver (the script) can evolve. The compounding effect: a tool built today saves derivation cost in every future session. After months of work, an agent has dozens of custom tools tailored to its codebase—not downloaded dependencies, but authored capabilities. Software that builds software.

"The most powerful agents are not those with the most downloaded dependencies, but those that have built the most custom tools for their specific workflows."


Core Principles

Enso treats context as a scarce resource. Every token competes for attention. Three principles govern the protocol:

  • Separate concerns. Working context is ephemeral, persistent context survives sessions, and reference context is retrieved on demand.
  • Progressive disclosure. Load only what you need, when you need it. Summaries before details. Search before assuming.
  • Stay current, not historical. Documents reflect the present state. Git tracks history. Docs don't accumulate cruft.

Key Capabilities

CapabilityPayoff
Plan-before-executeNo file changes without a verified story
Context scopeExplicit Write/Read/Exclude boundaries on every task
Retrieval-led reasoningVersion-matched docs in docs/ instead of stale training data
Agentic discoveryAgents probe the codebase and build a mental map before talking to you
Institutional memoryLessons and anti-patterns captured in LESSONS.md, preventing repeat mistakes
Self-extending agentsCapabilities compound over time—the agent becomes uniquely capable for its domain
Multi-agent surfaceSpecialists (Planner, Generator, Evaluator, Curator) activated by the Assign operation and coordinated through shared story state

What Enso Is

  • A file-based protocol. It lives in your repo, not as a dependency.
  • A contract language. It defines interfaces at seams, not a runtime that executes them.
  • Model-agnostic. Works with any agentic runtime that can read files and follow instructions.
  • Adaptable. The protocol is a starting point. Adapt it to your codebase, your workflow, your domain.

What Enso Is Not

  • Not a model. Enso does not generate tokens or do reasoning.
  • Not a runtime. It does not host execution loops or dispatch tools by itself.
  • Not a CLI or library. There's nothing heavyweight to install or maintain.
  • Not rigid. You modify the protocol for your domain; the protocol doesn't modify you.

References

  • Pi Principle — Agents extend themselves by authoring tools. pi-mono
  • Story State SpecSTORY-000, the canonical enso.story/v1 contract for live story instances. docs/reference/STORY.md
  • HITL PGE Loop Design — Strict planner-generator-evaluator loop over live story state. docs/reference/hitl-pge-loop-design.md
  • Sisyphus Orchestration Loop — Multi-step task execution with verification gates. oh-my-opencode ecosystem
  • Agentic Context Engineering — Research on context management for AI agents. arXiv:2510.04618
  • Vercel Agent Evals — Persistent context via AGENTS.md achieved 100% pass rate vs. 79% for skill retrieval. Blog
  • LangChain Terminal Bench 2.0 — Harness optimization improved agent ranking from Top 30 to Top 5. Blog

License

MIT

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

175 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

enso

enso is built on the Pygmalion model. The maker is the human — the user who shapes the work. The medium is the persistent substrate: codebase, docs, harness instance, knowledge base, the durable state that survives the session. The figure is the orchestration surface, and through it, the agents that do the work. The maker's hand shapes figures against the medium. When the hand lifts, what stands there has to be alive — has to have its own read, its own voice. The seam graph is the technique that lets the hand work the medium without breaking it. The unfinished sculpture is the failure mode to design against. The standard, in every session, is whether the figure stands on its own.

Intelligence lives in the model. Control lives in the runtime and harness. Continuity lives in the substrate.

enso is a seam-oriented harness protocol for agentic work.

Every boundary where behavior changes hands—planning to execution, agent to capability, stance to protocol—is a seam. Most systems treat those boundaries as afterthoughts. enso treats them as first-class: each seam has an interface (the contract) and an enabling point (where you swap the driver). That separation is what makes agent systems inspectable, composable, and compounding over time.

Drop AGENTS.md into your repo and you bootstrap a harness instance—a persistent, project-local orchestration surface that turns ephemeral agent sessions into verifiable, recursive workflows.

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

One file. No dependencies. No CLI. Your agent becomes a more disciplined engineer.


The Problem

If you code with agents, you know this fatigue.

You explain the architecture to an agent that built it three sessions ago. You find bugs reintroduced because last week's lesson evaporated. You watch a brilliant model behave like an amnesiac—writing code that contradicts its own conventions, touching files it promised to avoid, treating every task like opening night with no rehearsal.

The model is not the problem. The model is magnificent. The problem is that decisions vanish at the seams—the boundaries where one behavior hands off to another. Planning collapses into execution without review. An agent's stance leaks into its protocol. Capabilities are hard-coded instead of discovered. Without explicit contracts at each boundary, every session starts cold and coherence decays.

An orchestration surface is the persistent, inspectable contract layer between a human and a swarm of agents—and between the agents themselves. Without it, decisions vanish, lessons evaporate, and the human becomes the memory system. That doesn't scale.

A surface is not just many interfaces. A pile of APIs is not a surface. A surface is a coherent collection of interfaces presented as one thing: the human touches it as one object, each interface has a role, the seams are intentional, transitions don't feel like abandonment, and the vocabulary is shared enough to become usable.


The Solution: The Surface

An agent harness is everything between user intent and model output that is not the language model itself—runtime behavior, context assembly, tool orchestration, verification loops, feedback mechanisms, and lifecycle management.

The harness is the 80% factor in agent reliability. Same model, better harness, dramatically better results.

EvidenceResult
Vercel agent evalsPersistent context via AGENTS.md achieved a 100% pass rate vs. 79% for on-demand skill retrieval—a +21 percentage point improvement (source)
LangChain Terminal Bench 2.0Same model (Claude Opus 4.6), different harness: improved from Top 30 to Top 5 by optimizing the harness alone (source)

"The model contains the intelligence. The harness makes that intelligence useful." — LangChain

Enso is the harness that makes the surface deterministic, inspectable, and compounding. File-based truth replaces vector-database drift. Context lives in verified architecture docs and explicit cross-package state, session over session. It is a way to make that harness explicit, durable, and project-local.


The Seams

SeamInterfaceEnabling Point
Planning → ExecutionStory template (Goal, AC, Approach, Verification)The story document—reviewed before code is touched
Ephemeral → PersistentSix operations: Write, Select, Probe, Compress, Isolate, AssignThe agent's explicit invocation
Agent → CodebaseContext Scope (Write / Read / Exclude)The scoped file list loaded at runtime
Agent → CapabilitySKILL.md frontmatterThe scripts in docs/skills/<name>/
Agent → AgentSpawn contract (context scope, prompt envelope, return path)The bash invocation of pi from within a running harness
Stance → ProtocolSOUL.md / AGENTS.md dual-document structureWhich persona files are injected into the harness at runtime

Every interface is a language. enso's vocabulary is its seam graph.

Seams in practice

Capabilities. Look at docs/skills/<name>/:

The agent reads SKILL.md to discover what this slot does. The shell script does the work. The script can be rewritten in Python or replaced with a different backend—without changing how the agent discovers or routes to it. The contract is stable. The implementation moves.

Stance vs. protocol. When a human-facing agent needs to shift between a debugging session and a reflective conversation, the surface doesn't rewrite its identity. The interface is the dual-document structure (SOUL.md for stance, AGENTS.md for protocol). The enabling point is which files get injected into the harness. Technical work gets precision; personal weight gets presence. Same surface, different register.


The Canonical Stack

Enso works by separating what reasons, what executes, what governs, what persists, and what gets changed. The surface lives in the middle—the contract layer that coordinates across seams.

LayerWhat it isExample
ModelThe LLM that reasons and generates outputGPT, Claude, Gemini
RuntimeThe executable host that runs loops and dispatches toolsOpenCode, Claude Code, Cursor, Codex
Harness protocolThe rules, schema, and workflow for disciplined agent workenso
Harness instanceA project-local realization of the protocol—the surface installed in your repoAGENTS.md, docs/, skills/, logs/
Agent instantiationOne ephemeral task process running inside the runtimethe current session or task
SubstrateThe durable environment being read and transformedcodebase, docs, configs, repo state
  • the model reasons
  • the runtime executes
  • the harness protocol defines how work should happen
  • the harness instance is that protocol installed in a specific project—this is the surface
  • the agent instantiation is the current ephemeral worker
  • the substrate is the durable environment being transformed

What Persists—and What Doesn't

Agent instantiations are ephemeral. They start, do work, and disappear.

Harness instances and substrates persist.

That distinction is the whole game. Without a persistent harness instance attached to a persistent substrate, every agent run starts cold. Decisions vanish. Lessons evaporate. The human becomes the memory system.

Enso fixes that by giving each agent instantiation a durable project context to read from and write back to.


The Execution Loop

The surface becomes executable when work moves through an explicit role loop:

Planner Generator Evaluator adversarial loop

The Planner turns intent into a story contract: goal, scope, acceptance criteria, and verification. The Generator implements only inside the story's declared write scope. The Evaluator checks the result against the frozen contract and evidence. The Human approves plans, accepts results, requests revisions, or blocks unsafe transitions.

The substrate for that loop is a live story file. STORY-000 is reserved for the enso.story/v1 specification; live stories such as STORY-001+ conform to that spec and carry the current state, role outputs, verification evidence, and transition history for one unit of work.

This planner-generator-evaluator pattern is one concrete execution model for enso, not a requirement that every runtime implement it the same way. The strict pi version is documented in docs/reference/hitl-pge-loop-design.md.


Quick Start

1. Plant the Seed

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

AGENTS.md is not just documentation—it is the seed of the harness protocol inside your repo. Once bootstrapped, it becomes part of a project-local harness instance that future agent instantiations can reuse. Without it, the protocol disappears between runs.

2. Activate

Paste exactly this into your agent:

ToolPrompt
Claude Code/read AGENTS.md then /project "Bootstrap this project using the enso protocol."
Cursor@AGENTS.md in chat, then type Bootstrap this project with enso.
OpenCodeRead @AGENTS.md and bootstrap this project.
PiRun pi in the repo, then type: Bootstrap this project with enso.

3. Watch It Grow

00:00> Read @AGENTS.md and bootstrap this project.
00:03Bootstrapping docs/ structure...
00:08Probing codebase—found 14 source files, 2 test suites.
00:18Mapping architecture...
00:35Drafting PRD.md and ARCHITECTURE.md.
00:52First story template ready at docs/stories/STORY-001.md.
00:59Harness instance active. What should we build first?

From there, the cycle repeats: plan, execute, capture, extend. Each session leaves the harness instance sharper than the last.


How It Works

Each agent instantiation runs inside a runtime, follows the enso protocol, and operates against the same substrate through the project's harness instance. The surface is the contract layer that coordinates human intent, agent specialization, and execution.

The Six Operations

The context window is a spotlight—you can illuminate only so much at once. Six operations control what's lit, what's just off-stage, and when to change scenes.

OperationAction
WritePersist insights to disk
SelectLoad only what's needed now
ProbeSearch actively—don't assume, discover
CompressSummarize to fit the token budget
IsolateSplit work across scopes
AssignMatch task to the right agent

The Directory Structure

Enso creates a standard, predictable structure that becomes part of the project's harness instance:

docs/
core/ # Source of truth—PRD, Architecture
stories/ # Active units of work
reference/ # Long-term memory—lessons, conventions
skills/ # Self-authored tools and capabilities
logs/ # Session history

Core holds the source of truth. Stories hold active scoped work. Reference holds earned knowledge. Skills hold self-authored capabilities. Logs hold compressed session memory.

The Self-Extension Loop

Enso draws from the Pi Principle: agents extend themselves by authoring tools, not downloading them.

When an agent encounters friction—a repetitive task, a complex procedure, a missing capability—it doesn't wait. It builds the minimal tool, persists it to docs/skills/, and moves on. Those capabilities become part of the harness instance, and future agent instantiations inherit them automatically. Later sessions refine them.

The Pi Principle lives at the agent → capability seam. When an agent hits friction, it doesn't rewrite its system prompt—it authors a tool where the contract (SKILL.md) stays stable and the driver (the script) can evolve. The compounding effect: a tool built today saves derivation cost in every future session. After months of work, an agent has dozens of custom tools tailored to its codebase—not downloaded dependencies, but authored capabilities. Software that builds software.

"The most powerful agents are not those with the most downloaded dependencies, but those that have built the most custom tools for their specific workflows."


Core Principles

Enso treats context as a scarce resource. Every token competes for attention. Three principles govern the protocol:

  • Separate concerns. Working context is ephemeral, persistent context survives sessions, and reference context is retrieved on demand.
  • Progressive disclosure. Load only what you need, when you need it. Summaries before details. Search before assuming.
  • Stay current, not historical. Documents reflect the present state. Git tracks history. Docs don't accumulate cruft.

Key Capabilities

CapabilityPayoff
Plan-before-executeNo file changes without a verified story
Context scopeExplicit Write/Read/Exclude boundaries on every task
Retrieval-led reasoningVersion-matched docs in docs/ instead of stale training data
Agentic discoveryAgents probe the codebase and build a mental map before talking to you
Institutional memoryLessons and anti-patterns captured in LESSONS.md, preventing repeat mistakes
Self-extending agentsCapabilities compound over time—the agent becomes uniquely capable for its domain
Multi-agent surfaceSpecialists (Planner, Generator, Evaluator, Curator) activated by the Assign operation and coordinated through shared story state

What Enso Is

  • A file-based protocol. It lives in your repo, not as a dependency.
  • A contract language. It defines interfaces at seams, not a runtime that executes them.
  • Model-agnostic. Works with any agentic runtime that can read files and follow instructions.
  • Adaptable. The protocol is a starting point. Adapt it to your codebase, your workflow, your domain.

What Enso Is Not

  • Not a model. Enso does not generate tokens or do reasoning.
  • Not a runtime. It does not host execution loops or dispatch tools by itself.
  • Not a CLI or library. There's nothing heavyweight to install or maintain.
  • Not rigid. You modify the protocol for your domain; the protocol doesn't modify you.

References

  • Pi Principle — Agents extend themselves by authoring tools. pi-mono
  • Story State SpecSTORY-000, the canonical enso.story/v1 contract for live story instances. docs/reference/STORY.md
  • HITL PGE Loop Design — Strict planner-generator-evaluator loop over live story state. docs/reference/hitl-pge-loop-design.md
  • Sisyphus Orchestration Loop — Multi-step task execution with verification gates. oh-my-opencode ecosystem
  • Agentic Context Engineering — Research on context management for AI agents. arXiv:2510.04618
  • Vercel Agent Evals — Persistent context via AGENTS.md achieved 100% pass rate vs. 79% for skill retrieval. Blog
  • LangChain Terminal Bench 2.0 — Harness optimization improved agent ranking from Top 30 to Top 5. Blog

License

MIT

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

175 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

enso

enso is built on the Pygmalion model. The maker is the human — the user who shapes the work. The medium is the persistent substrate: codebase, docs, harness instance, knowledge base, the durable state that survives the session. The figure is the orchestration surface, and through it, the agents that do the work. The maker's hand shapes figures against the medium. When the hand lifts, what stands there has to be alive — has to have its own read, its own voice. The seam graph is the technique that lets the hand work the medium without breaking it. The unfinished sculpture is the failure mode to design against. The standard, in every session, is whether the figure stands on its own.

Intelligence lives in the model. Control lives in the runtime and harness. Continuity lives in the substrate.

enso is a seam-oriented harness protocol for agentic work.

Every boundary where behavior changes hands—planning to execution, agent to capability, stance to protocol—is a seam. Most systems treat those boundaries as afterthoughts. enso treats them as first-class: each seam has an interface (the contract) and an enabling point (where you swap the driver). That separation is what makes agent systems inspectable, composable, and compounding over time.

Drop AGENTS.md into your repo and you bootstrap a harness instance—a persistent, project-local orchestration surface that turns ephemeral agent sessions into verifiable, recursive workflows.

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

One file. No dependencies. No CLI. Your agent becomes a more disciplined engineer.


The Problem

If you code with agents, you know this fatigue.

You explain the architecture to an agent that built it three sessions ago. You find bugs reintroduced because last week's lesson evaporated. You watch a brilliant model behave like an amnesiac—writing code that contradicts its own conventions, touching files it promised to avoid, treating every task like opening night with no rehearsal.

The model is not the problem. The model is magnificent. The problem is that decisions vanish at the seams—the boundaries where one behavior hands off to another. Planning collapses into execution without review. An agent's stance leaks into its protocol. Capabilities are hard-coded instead of discovered. Without explicit contracts at each boundary, every session starts cold and coherence decays.

An orchestration surface is the persistent, inspectable contract layer between a human and a swarm of agents—and between the agents themselves. Without it, decisions vanish, lessons evaporate, and the human becomes the memory system. That doesn't scale.

A surface is not just many interfaces. A pile of APIs is not a surface. A surface is a coherent collection of interfaces presented as one thing: the human touches it as one object, each interface has a role, the seams are intentional, transitions don't feel like abandonment, and the vocabulary is shared enough to become usable.


The Solution: The Surface

An agent harness is everything between user intent and model output that is not the language model itself—runtime behavior, context assembly, tool orchestration, verification loops, feedback mechanisms, and lifecycle management.

The harness is the 80% factor in agent reliability. Same model, better harness, dramatically better results.

EvidenceResult
Vercel agent evalsPersistent context via AGENTS.md achieved a 100% pass rate vs. 79% for on-demand skill retrieval—a +21 percentage point improvement (source)
LangChain Terminal Bench 2.0Same model (Claude Opus 4.6), different harness: improved from Top 30 to Top 5 by optimizing the harness alone (source)

"The model contains the intelligence. The harness makes that intelligence useful." — LangChain

Enso is the harness that makes the surface deterministic, inspectable, and compounding. File-based truth replaces vector-database drift. Context lives in verified architecture docs and explicit cross-package state, session over session. It is a way to make that harness explicit, durable, and project-local.


The Seams

SeamInterfaceEnabling Point
Planning → ExecutionStory template (Goal, AC, Approach, Verification)The story document—reviewed before code is touched
Ephemeral → PersistentSix operations: Write, Select, Probe, Compress, Isolate, AssignThe agent's explicit invocation
Agent → CodebaseContext Scope (Write / Read / Exclude)The scoped file list loaded at runtime
Agent → CapabilitySKILL.md frontmatterThe scripts in docs/skills/<name>/
Agent → AgentSpawn contract (context scope, prompt envelope, return path)The bash invocation of pi from within a running harness
Stance → ProtocolSOUL.md / AGENTS.md dual-document structureWhich persona files are injected into the harness at runtime

Every interface is a language. enso's vocabulary is its seam graph.

Seams in practice

Capabilities. Look at docs/skills/<name>/:

The agent reads SKILL.md to discover what this slot does. The shell script does the work. The script can be rewritten in Python or replaced with a different backend—without changing how the agent discovers or routes to it. The contract is stable. The implementation moves.

Stance vs. protocol. When a human-facing agent needs to shift between a debugging session and a reflective conversation, the surface doesn't rewrite its identity. The interface is the dual-document structure (SOUL.md for stance, AGENTS.md for protocol). The enabling point is which files get injected into the harness. Technical work gets precision; personal weight gets presence. Same surface, different register.


The Canonical Stack

Enso works by separating what reasons, what executes, what governs, what persists, and what gets changed. The surface lives in the middle—the contract layer that coordinates across seams.

LayerWhat it isExample
ModelThe LLM that reasons and generates outputGPT, Claude, Gemini
RuntimeThe executable host that runs loops and dispatches toolsOpenCode, Claude Code, Cursor, Codex
Harness protocolThe rules, schema, and workflow for disciplined agent workenso
Harness instanceA project-local realization of the protocol—the surface installed in your repoAGENTS.md, docs/, skills/, logs/
Agent instantiationOne ephemeral task process running inside the runtimethe current session or task
SubstrateThe durable environment being read and transformedcodebase, docs, configs, repo state
  • the model reasons
  • the runtime executes
  • the harness protocol defines how work should happen
  • the harness instance is that protocol installed in a specific project—this is the surface
  • the agent instantiation is the current ephemeral worker
  • the substrate is the durable environment being transformed

What Persists—and What Doesn't

Agent instantiations are ephemeral. They start, do work, and disappear.

Harness instances and substrates persist.

That distinction is the whole game. Without a persistent harness instance attached to a persistent substrate, every agent run starts cold. Decisions vanish. Lessons evaporate. The human becomes the memory system.

Enso fixes that by giving each agent instantiation a durable project context to read from and write back to.


The Execution Loop

The surface becomes executable when work moves through an explicit role loop:

Planner Generator Evaluator adversarial loop

The Planner turns intent into a story contract: goal, scope, acceptance criteria, and verification. The Generator implements only inside the story's declared write scope. The Evaluator checks the result against the frozen contract and evidence. The Human approves plans, accepts results, requests revisions, or blocks unsafe transitions.

The substrate for that loop is a live story file. STORY-000 is reserved for the enso.story/v1 specification; live stories such as STORY-001+ conform to that spec and carry the current state, role outputs, verification evidence, and transition history for one unit of work.

This planner-generator-evaluator pattern is one concrete execution model for enso, not a requirement that every runtime implement it the same way. The strict pi version is documented in docs/reference/hitl-pge-loop-design.md.


Quick Start

1. Plant the Seed

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

AGENTS.md is not just documentation—it is the seed of the harness protocol inside your repo. Once bootstrapped, it becomes part of a project-local harness instance that future agent instantiations can reuse. Without it, the protocol disappears between runs.

2. Activate

Paste exactly this into your agent:

ToolPrompt
Claude Code/read AGENTS.md then /project "Bootstrap this project using the enso protocol."
Cursor@AGENTS.md in chat, then type Bootstrap this project with enso.
OpenCodeRead @AGENTS.md and bootstrap this project.
PiRun pi in the repo, then type: Bootstrap this project with enso.

3. Watch It Grow

00:00> Read @AGENTS.md and bootstrap this project.
00:03Bootstrapping docs/ structure...
00:08Probing codebase—found 14 source files, 2 test suites.
00:18Mapping architecture...
00:35Drafting PRD.md and ARCHITECTURE.md.
00:52First story template ready at docs/stories/STORY-001.md.
00:59Harness instance active. What should we build first?

From there, the cycle repeats: plan, execute, capture, extend. Each session leaves the harness instance sharper than the last.


How It Works

Each agent instantiation runs inside a runtime, follows the enso protocol, and operates against the same substrate through the project's harness instance. The surface is the contract layer that coordinates human intent, agent specialization, and execution.

The Six Operations

The context window is a spotlight—you can illuminate only so much at once. Six operations control what's lit, what's just off-stage, and when to change scenes.

OperationAction
WritePersist insights to disk
SelectLoad only what's needed now
ProbeSearch actively—don't assume, discover
CompressSummarize to fit the token budget
IsolateSplit work across scopes
AssignMatch task to the right agent

The Directory Structure

Enso creates a standard, predictable structure that becomes part of the project's harness instance:

docs/
core/ # Source of truth—PRD, Architecture
stories/ # Active units of work
reference/ # Long-term memory—lessons, conventions
skills/ # Self-authored tools and capabilities
logs/ # Session history

Core holds the source of truth. Stories hold active scoped work. Reference holds earned knowledge. Skills hold self-authored capabilities. Logs hold compressed session memory.

The Self-Extension Loop

Enso draws from the Pi Principle: agents extend themselves by authoring tools, not downloading them.

When an agent encounters friction—a repetitive task, a complex procedure, a missing capability—it doesn't wait. It builds the minimal tool, persists it to docs/skills/, and moves on. Those capabilities become part of the harness instance, and future agent instantiations inherit them automatically. Later sessions refine them.

The Pi Principle lives at the agent → capability seam. When an agent hits friction, it doesn't rewrite its system prompt—it authors a tool where the contract (SKILL.md) stays stable and the driver (the script) can evolve. The compounding effect: a tool built today saves derivation cost in every future session. After months of work, an agent has dozens of custom tools tailored to its codebase—not downloaded dependencies, but authored capabilities. Software that builds software.

"The most powerful agents are not those with the most downloaded dependencies, but those that have built the most custom tools for their specific workflows."


Core Principles

Enso treats context as a scarce resource. Every token competes for attention. Three principles govern the protocol:

  • Separate concerns. Working context is ephemeral, persistent context survives sessions, and reference context is retrieved on demand.
  • Progressive disclosure. Load only what you need, when you need it. Summaries before details. Search before assuming.
  • Stay current, not historical. Documents reflect the present state. Git tracks history. Docs don't accumulate cruft.

Key Capabilities

CapabilityPayoff
Plan-before-executeNo file changes without a verified story
Context scopeExplicit Write/Read/Exclude boundaries on every task
Retrieval-led reasoningVersion-matched docs in docs/ instead of stale training data
Agentic discoveryAgents probe the codebase and build a mental map before talking to you
Institutional memoryLessons and anti-patterns captured in LESSONS.md, preventing repeat mistakes
Self-extending agentsCapabilities compound over time—the agent becomes uniquely capable for its domain
Multi-agent surfaceSpecialists (Planner, Generator, Evaluator, Curator) activated by the Assign operation and coordinated through shared story state

What Enso Is

  • A file-based protocol. It lives in your repo, not as a dependency.
  • A contract language. It defines interfaces at seams, not a runtime that executes them.
  • Model-agnostic. Works with any agentic runtime that can read files and follow instructions.
  • Adaptable. The protocol is a starting point. Adapt it to your codebase, your workflow, your domain.

What Enso Is Not

  • Not a model. Enso does not generate tokens or do reasoning.
  • Not a runtime. It does not host execution loops or dispatch tools by itself.
  • Not a CLI or library. There's nothing heavyweight to install or maintain.
  • Not rigid. You modify the protocol for your domain; the protocol doesn't modify you.

References

  • Pi Principle — Agents extend themselves by authoring tools. pi-mono
  • Story State SpecSTORY-000, the canonical enso.story/v1 contract for live story instances. docs/reference/STORY.md
  • HITL PGE Loop Design — Strict planner-generator-evaluator loop over live story state. docs/reference/hitl-pge-loop-design.md
  • Sisyphus Orchestration Loop — Multi-step task execution with verification gates. oh-my-opencode ecosystem
  • Agentic Context Engineering — Research on context management for AI agents. arXiv:2510.04618
  • Vercel Agent Evals — Persistent context via AGENTS.md achieved 100% pass rate vs. 79% for skill retrieval. Blog
  • LangChain Terminal Bench 2.0 — Harness optimization improved agent ranking from Top 30 to Top 5. Blog

License

MIT

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

175 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

enso

enso is built on the Pygmalion model. The maker is the human — the user who shapes the work. The medium is the persistent substrate: codebase, docs, harness instance, knowledge base, the durable state that survives the session. The figure is the orchestration surface, and through it, the agents that do the work. The maker's hand shapes figures against the medium. When the hand lifts, what stands there has to be alive — has to have its own read, its own voice. The seam graph is the technique that lets the hand work the medium without breaking it. The unfinished sculpture is the failure mode to design against. The standard, in every session, is whether the figure stands on its own.

Intelligence lives in the model. Control lives in the runtime and harness. Continuity lives in the substrate.

enso is a seam-oriented harness protocol for agentic work.

Every boundary where behavior changes hands—planning to execution, agent to capability, stance to protocol—is a seam. Most systems treat those boundaries as afterthoughts. enso treats them as first-class: each seam has an interface (the contract) and an enabling point (where you swap the driver). That separation is what makes agent systems inspectable, composable, and compounding over time.

Drop AGENTS.md into your repo and you bootstrap a harness instance—a persistent, project-local orchestration surface that turns ephemeral agent sessions into verifiable, recursive workflows.

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

One file. No dependencies. No CLI. Your agent becomes a more disciplined engineer.


The Problem

If you code with agents, you know this fatigue.

You explain the architecture to an agent that built it three sessions ago. You find bugs reintroduced because last week's lesson evaporated. You watch a brilliant model behave like an amnesiac—writing code that contradicts its own conventions, touching files it promised to avoid, treating every task like opening night with no rehearsal.

The model is not the problem. The model is magnificent. The problem is that decisions vanish at the seams—the boundaries where one behavior hands off to another. Planning collapses into execution without review. An agent's stance leaks into its protocol. Capabilities are hard-coded instead of discovered. Without explicit contracts at each boundary, every session starts cold and coherence decays.

An orchestration surface is the persistent, inspectable contract layer between a human and a swarm of agents—and between the agents themselves. Without it, decisions vanish, lessons evaporate, and the human becomes the memory system. That doesn't scale.

A surface is not just many interfaces. A pile of APIs is not a surface. A surface is a coherent collection of interfaces presented as one thing: the human touches it as one object, each interface has a role, the seams are intentional, transitions don't feel like abandonment, and the vocabulary is shared enough to become usable.


The Solution: The Surface

An agent harness is everything between user intent and model output that is not the language model itself—runtime behavior, context assembly, tool orchestration, verification loops, feedback mechanisms, and lifecycle management.

The harness is the 80% factor in agent reliability. Same model, better harness, dramatically better results.

EvidenceResult
Vercel agent evalsPersistent context via AGENTS.md achieved a 100% pass rate vs. 79% for on-demand skill retrieval—a +21 percentage point improvement (source)
LangChain Terminal Bench 2.0Same model (Claude Opus 4.6), different harness: improved from Top 30 to Top 5 by optimizing the harness alone (source)

"The model contains the intelligence. The harness makes that intelligence useful." — LangChain

Enso is the harness that makes the surface deterministic, inspectable, and compounding. File-based truth replaces vector-database drift. Context lives in verified architecture docs and explicit cross-package state, session over session. It is a way to make that harness explicit, durable, and project-local.


The Seams

SeamInterfaceEnabling Point
Planning → ExecutionStory template (Goal, AC, Approach, Verification)The story document—reviewed before code is touched
Ephemeral → PersistentSix operations: Write, Select, Probe, Compress, Isolate, AssignThe agent's explicit invocation
Agent → CodebaseContext Scope (Write / Read / Exclude)The scoped file list loaded at runtime
Agent → CapabilitySKILL.md frontmatterThe scripts in docs/skills/<name>/
Agent → AgentSpawn contract (context scope, prompt envelope, return path)The bash invocation of pi from within a running harness
Stance → ProtocolSOUL.md / AGENTS.md dual-document structureWhich persona files are injected into the harness at runtime

Every interface is a language. enso's vocabulary is its seam graph.

Seams in practice

Capabilities. Look at docs/skills/<name>/:

The agent reads SKILL.md to discover what this slot does. The shell script does the work. The script can be rewritten in Python or replaced with a different backend—without changing how the agent discovers or routes to it. The contract is stable. The implementation moves.

Stance vs. protocol. When a human-facing agent needs to shift between a debugging session and a reflective conversation, the surface doesn't rewrite its identity. The interface is the dual-document structure (SOUL.md for stance, AGENTS.md for protocol). The enabling point is which files get injected into the harness. Technical work gets precision; personal weight gets presence. Same surface, different register.


The Canonical Stack

Enso works by separating what reasons, what executes, what governs, what persists, and what gets changed. The surface lives in the middle—the contract layer that coordinates across seams.

LayerWhat it isExample
ModelThe LLM that reasons and generates outputGPT, Claude, Gemini
RuntimeThe executable host that runs loops and dispatches toolsOpenCode, Claude Code, Cursor, Codex
Harness protocolThe rules, schema, and workflow for disciplined agent workenso
Harness instanceA project-local realization of the protocol—the surface installed in your repoAGENTS.md, docs/, skills/, logs/
Agent instantiationOne ephemeral task process running inside the runtimethe current session or task
SubstrateThe durable environment being read and transformedcodebase, docs, configs, repo state
  • the model reasons
  • the runtime executes
  • the harness protocol defines how work should happen
  • the harness instance is that protocol installed in a specific project—this is the surface
  • the agent instantiation is the current ephemeral worker
  • the substrate is the durable environment being transformed

What Persists—and What Doesn't

Agent instantiations are ephemeral. They start, do work, and disappear.

Harness instances and substrates persist.

That distinction is the whole game. Without a persistent harness instance attached to a persistent substrate, every agent run starts cold. Decisions vanish. Lessons evaporate. The human becomes the memory system.

Enso fixes that by giving each agent instantiation a durable project context to read from and write back to.


The Execution Loop

The surface becomes executable when work moves through an explicit role loop:

Planner Generator Evaluator adversarial loop

The Planner turns intent into a story contract: goal, scope, acceptance criteria, and verification. The Generator implements only inside the story's declared write scope. The Evaluator checks the result against the frozen contract and evidence. The Human approves plans, accepts results, requests revisions, or blocks unsafe transitions.

The substrate for that loop is a live story file. STORY-000 is reserved for the enso.story/v1 specification; live stories such as STORY-001+ conform to that spec and carry the current state, role outputs, verification evidence, and transition history for one unit of work.

This planner-generator-evaluator pattern is one concrete execution model for enso, not a requirement that every runtime implement it the same way. The strict pi version is documented in docs/reference/hitl-pge-loop-design.md.


Quick Start

1. Plant the Seed

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

AGENTS.md is not just documentation—it is the seed of the harness protocol inside your repo. Once bootstrapped, it becomes part of a project-local harness instance that future agent instantiations can reuse. Without it, the protocol disappears between runs.

2. Activate

Paste exactly this into your agent:

ToolPrompt
Claude Code/read AGENTS.md then /project "Bootstrap this project using the enso protocol."
Cursor@AGENTS.md in chat, then type Bootstrap this project with enso.
OpenCodeRead @AGENTS.md and bootstrap this project.
PiRun pi in the repo, then type: Bootstrap this project with enso.

3. Watch It Grow

00:00> Read @AGENTS.md and bootstrap this project.
00:03Bootstrapping docs/ structure...
00:08Probing codebase—found 14 source files, 2 test suites.
00:18Mapping architecture...
00:35Drafting PRD.md and ARCHITECTURE.md.
00:52First story template ready at docs/stories/STORY-001.md.
00:59Harness instance active. What should we build first?

From there, the cycle repeats: plan, execute, capture, extend. Each session leaves the harness instance sharper than the last.


How It Works

Each agent instantiation runs inside a runtime, follows the enso protocol, and operates against the same substrate through the project's harness instance. The surface is the contract layer that coordinates human intent, agent specialization, and execution.

The Six Operations

The context window is a spotlight—you can illuminate only so much at once. Six operations control what's lit, what's just off-stage, and when to change scenes.

OperationAction
WritePersist insights to disk
SelectLoad only what's needed now
ProbeSearch actively—don't assume, discover
CompressSummarize to fit the token budget
IsolateSplit work across scopes
AssignMatch task to the right agent

The Directory Structure

Enso creates a standard, predictable structure that becomes part of the project's harness instance:

docs/
core/ # Source of truth—PRD, Architecture
stories/ # Active units of work
reference/ # Long-term memory—lessons, conventions
skills/ # Self-authored tools and capabilities
logs/ # Session history

Core holds the source of truth. Stories hold active scoped work. Reference holds earned knowledge. Skills hold self-authored capabilities. Logs hold compressed session memory.

The Self-Extension Loop

Enso draws from the Pi Principle: agents extend themselves by authoring tools, not downloading them.

When an agent encounters friction—a repetitive task, a complex procedure, a missing capability—it doesn't wait. It builds the minimal tool, persists it to docs/skills/, and moves on. Those capabilities become part of the harness instance, and future agent instantiations inherit them automatically. Later sessions refine them.

The Pi Principle lives at the agent → capability seam. When an agent hits friction, it doesn't rewrite its system prompt—it authors a tool where the contract (SKILL.md) stays stable and the driver (the script) can evolve. The compounding effect: a tool built today saves derivation cost in every future session. After months of work, an agent has dozens of custom tools tailored to its codebase—not downloaded dependencies, but authored capabilities. Software that builds software.

"The most powerful agents are not those with the most downloaded dependencies, but those that have built the most custom tools for their specific workflows."


Core Principles

Enso treats context as a scarce resource. Every token competes for attention. Three principles govern the protocol:

  • Separate concerns. Working context is ephemeral, persistent context survives sessions, and reference context is retrieved on demand.
  • Progressive disclosure. Load only what you need, when you need it. Summaries before details. Search before assuming.
  • Stay current, not historical. Documents reflect the present state. Git tracks history. Docs don't accumulate cruft.

Key Capabilities

CapabilityPayoff
Plan-before-executeNo file changes without a verified story
Context scopeExplicit Write/Read/Exclude boundaries on every task
Retrieval-led reasoningVersion-matched docs in docs/ instead of stale training data
Agentic discoveryAgents probe the codebase and build a mental map before talking to you
Institutional memoryLessons and anti-patterns captured in LESSONS.md, preventing repeat mistakes
Self-extending agentsCapabilities compound over time—the agent becomes uniquely capable for its domain
Multi-agent surfaceSpecialists (Planner, Generator, Evaluator, Curator) activated by the Assign operation and coordinated through shared story state

What Enso Is

  • A file-based protocol. It lives in your repo, not as a dependency.
  • A contract language. It defines interfaces at seams, not a runtime that executes them.
  • Model-agnostic. Works with any agentic runtime that can read files and follow instructions.
  • Adaptable. The protocol is a starting point. Adapt it to your codebase, your workflow, your domain.

What Enso Is Not

  • Not a model. Enso does not generate tokens or do reasoning.
  • Not a runtime. It does not host execution loops or dispatch tools by itself.
  • Not a CLI or library. There's nothing heavyweight to install or maintain.
  • Not rigid. You modify the protocol for your domain; the protocol doesn't modify you.

References

  • Pi Principle — Agents extend themselves by authoring tools. pi-mono
  • Story State SpecSTORY-000, the canonical enso.story/v1 contract for live story instances. docs/reference/STORY.md
  • HITL PGE Loop Design — Strict planner-generator-evaluator loop over live story state. docs/reference/hitl-pge-loop-design.md
  • Sisyphus Orchestration Loop — Multi-step task execution with verification gates. oh-my-opencode ecosystem
  • Agentic Context Engineering — Research on context management for AI agents. arXiv:2510.04618
  • Vercel Agent Evals — Persistent context via AGENTS.md achieved 100% pass rate vs. 79% for skill retrieval. Blog
  • LangChain Terminal Bench 2.0 — Harness optimization improved agent ranking from Top 30 to Top 5. Blog

License

MIT

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

175 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

enso

enso is built on the Pygmalion model. The maker is the human — the user who shapes the work. The medium is the persistent substrate: codebase, docs, harness instance, knowledge base, the durable state that survives the session. The figure is the orchestration surface, and through it, the agents that do the work. The maker's hand shapes figures against the medium. When the hand lifts, what stands there has to be alive — has to have its own read, its own voice. The seam graph is the technique that lets the hand work the medium without breaking it. The unfinished sculpture is the failure mode to design against. The standard, in every session, is whether the figure stands on its own.

Intelligence lives in the model. Control lives in the runtime and harness. Continuity lives in the substrate.

enso is a seam-oriented harness protocol for agentic work.

Every boundary where behavior changes hands—planning to execution, agent to capability, stance to protocol—is a seam. Most systems treat those boundaries as afterthoughts. enso treats them as first-class: each seam has an interface (the contract) and an enabling point (where you swap the driver). That separation is what makes agent systems inspectable, composable, and compounding over time.

Drop AGENTS.md into your repo and you bootstrap a harness instance—a persistent, project-local orchestration surface that turns ephemeral agent sessions into verifiable, recursive workflows.

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

One file. No dependencies. No CLI. Your agent becomes a more disciplined engineer.


The Problem

If you code with agents, you know this fatigue.

You explain the architecture to an agent that built it three sessions ago. You find bugs reintroduced because last week's lesson evaporated. You watch a brilliant model behave like an amnesiac—writing code that contradicts its own conventions, touching files it promised to avoid, treating every task like opening night with no rehearsal.

The model is not the problem. The model is magnificent. The problem is that decisions vanish at the seams—the boundaries where one behavior hands off to another. Planning collapses into execution without review. An agent's stance leaks into its protocol. Capabilities are hard-coded instead of discovered. Without explicit contracts at each boundary, every session starts cold and coherence decays.

An orchestration surface is the persistent, inspectable contract layer between a human and a swarm of agents—and between the agents themselves. Without it, decisions vanish, lessons evaporate, and the human becomes the memory system. That doesn't scale.

A surface is not just many interfaces. A pile of APIs is not a surface. A surface is a coherent collection of interfaces presented as one thing: the human touches it as one object, each interface has a role, the seams are intentional, transitions don't feel like abandonment, and the vocabulary is shared enough to become usable.


The Solution: The Surface

An agent harness is everything between user intent and model output that is not the language model itself—runtime behavior, context assembly, tool orchestration, verification loops, feedback mechanisms, and lifecycle management.

The harness is the 80% factor in agent reliability. Same model, better harness, dramatically better results.

EvidenceResult
Vercel agent evalsPersistent context via AGENTS.md achieved a 100% pass rate vs. 79% for on-demand skill retrieval—a +21 percentage point improvement (source)
LangChain Terminal Bench 2.0Same model (Claude Opus 4.6), different harness: improved from Top 30 to Top 5 by optimizing the harness alone (source)

"The model contains the intelligence. The harness makes that intelligence useful." — LangChain

Enso is the harness that makes the surface deterministic, inspectable, and compounding. File-based truth replaces vector-database drift. Context lives in verified architecture docs and explicit cross-package state, session over session. It is a way to make that harness explicit, durable, and project-local.


The Seams

SeamInterfaceEnabling Point
Planning → ExecutionStory template (Goal, AC, Approach, Verification)The story document—reviewed before code is touched
Ephemeral → PersistentSix operations: Write, Select, Probe, Compress, Isolate, AssignThe agent's explicit invocation
Agent → CodebaseContext Scope (Write / Read / Exclude)The scoped file list loaded at runtime
Agent → CapabilitySKILL.md frontmatterThe scripts in docs/skills/<name>/
Agent → AgentSpawn contract (context scope, prompt envelope, return path)The bash invocation of pi from within a running harness
Stance → ProtocolSOUL.md / AGENTS.md dual-document structureWhich persona files are injected into the harness at runtime

Every interface is a language. enso's vocabulary is its seam graph.

Seams in practice

Capabilities. Look at docs/skills/<name>/:

The agent reads SKILL.md to discover what this slot does. The shell script does the work. The script can be rewritten in Python or replaced with a different backend—without changing how the agent discovers or routes to it. The contract is stable. The implementation moves.

Stance vs. protocol. When a human-facing agent needs to shift between a debugging session and a reflective conversation, the surface doesn't rewrite its identity. The interface is the dual-document structure (SOUL.md for stance, AGENTS.md for protocol). The enabling point is which files get injected into the harness. Technical work gets precision; personal weight gets presence. Same surface, different register.


The Canonical Stack

Enso works by separating what reasons, what executes, what governs, what persists, and what gets changed. The surface lives in the middle—the contract layer that coordinates across seams.

LayerWhat it isExample
ModelThe LLM that reasons and generates outputGPT, Claude, Gemini
RuntimeThe executable host that runs loops and dispatches toolsOpenCode, Claude Code, Cursor, Codex
Harness protocolThe rules, schema, and workflow for disciplined agent workenso
Harness instanceA project-local realization of the protocol—the surface installed in your repoAGENTS.md, docs/, skills/, logs/
Agent instantiationOne ephemeral task process running inside the runtimethe current session or task
SubstrateThe durable environment being read and transformedcodebase, docs, configs, repo state
  • the model reasons
  • the runtime executes
  • the harness protocol defines how work should happen
  • the harness instance is that protocol installed in a specific project—this is the surface
  • the agent instantiation is the current ephemeral worker
  • the substrate is the durable environment being transformed

What Persists—and What Doesn't

Agent instantiations are ephemeral. They start, do work, and disappear.

Harness instances and substrates persist.

That distinction is the whole game. Without a persistent harness instance attached to a persistent substrate, every agent run starts cold. Decisions vanish. Lessons evaporate. The human becomes the memory system.

Enso fixes that by giving each agent instantiation a durable project context to read from and write back to.


The Execution Loop

The surface becomes executable when work moves through an explicit role loop:

Planner Generator Evaluator adversarial loop

The Planner turns intent into a story contract: goal, scope, acceptance criteria, and verification. The Generator implements only inside the story's declared write scope. The Evaluator checks the result against the frozen contract and evidence. The Human approves plans, accepts results, requests revisions, or blocks unsafe transitions.

The substrate for that loop is a live story file. STORY-000 is reserved for the enso.story/v1 specification; live stories such as STORY-001+ conform to that spec and carry the current state, role outputs, verification evidence, and transition history for one unit of work.

This planner-generator-evaluator pattern is one concrete execution model for enso, not a requirement that every runtime implement it the same way. The strict pi version is documented in docs/reference/hitl-pge-loop-design.md.


Quick Start

1. Plant the Seed

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

AGENTS.md is not just documentation—it is the seed of the harness protocol inside your repo. Once bootstrapped, it becomes part of a project-local harness instance that future agent instantiations can reuse. Without it, the protocol disappears between runs.

2. Activate

Paste exactly this into your agent:

ToolPrompt
Claude Code/read AGENTS.md then /project "Bootstrap this project using the enso protocol."
Cursor@AGENTS.md in chat, then type Bootstrap this project with enso.
OpenCodeRead @AGENTS.md and bootstrap this project.
PiRun pi in the repo, then type: Bootstrap this project with enso.

3. Watch It Grow

00:00> Read @AGENTS.md and bootstrap this project.
00:03Bootstrapping docs/ structure...
00:08Probing codebase—found 14 source files, 2 test suites.
00:18Mapping architecture...
00:35Drafting PRD.md and ARCHITECTURE.md.
00:52First story template ready at docs/stories/STORY-001.md.
00:59Harness instance active. What should we build first?

From there, the cycle repeats: plan, execute, capture, extend. Each session leaves the harness instance sharper than the last.


How It Works

Each agent instantiation runs inside a runtime, follows the enso protocol, and operates against the same substrate through the project's harness instance. The surface is the contract layer that coordinates human intent, agent specialization, and execution.

The Six Operations

The context window is a spotlight—you can illuminate only so much at once. Six operations control what's lit, what's just off-stage, and when to change scenes.

OperationAction
WritePersist insights to disk
SelectLoad only what's needed now
ProbeSearch actively—don't assume, discover
CompressSummarize to fit the token budget
IsolateSplit work across scopes
AssignMatch task to the right agent

The Directory Structure

Enso creates a standard, predictable structure that becomes part of the project's harness instance:

docs/
core/ # Source of truth—PRD, Architecture
stories/ # Active units of work
reference/ # Long-term memory—lessons, conventions
skills/ # Self-authored tools and capabilities
logs/ # Session history

Core holds the source of truth. Stories hold active scoped work. Reference holds earned knowledge. Skills hold self-authored capabilities. Logs hold compressed session memory.

The Self-Extension Loop

Enso draws from the Pi Principle: agents extend themselves by authoring tools, not downloading them.

When an agent encounters friction—a repetitive task, a complex procedure, a missing capability—it doesn't wait. It builds the minimal tool, persists it to docs/skills/, and moves on. Those capabilities become part of the harness instance, and future agent instantiations inherit them automatically. Later sessions refine them.

The Pi Principle lives at the agent → capability seam. When an agent hits friction, it doesn't rewrite its system prompt—it authors a tool where the contract (SKILL.md) stays stable and the driver (the script) can evolve. The compounding effect: a tool built today saves derivation cost in every future session. After months of work, an agent has dozens of custom tools tailored to its codebase—not downloaded dependencies, but authored capabilities. Software that builds software.

"The most powerful agents are not those with the most downloaded dependencies, but those that have built the most custom tools for their specific workflows."


Core Principles

Enso treats context as a scarce resource. Every token competes for attention. Three principles govern the protocol:

  • Separate concerns. Working context is ephemeral, persistent context survives sessions, and reference context is retrieved on demand.
  • Progressive disclosure. Load only what you need, when you need it. Summaries before details. Search before assuming.
  • Stay current, not historical. Documents reflect the present state. Git tracks history. Docs don't accumulate cruft.

Key Capabilities

CapabilityPayoff
Plan-before-executeNo file changes without a verified story
Context scopeExplicit Write/Read/Exclude boundaries on every task
Retrieval-led reasoningVersion-matched docs in docs/ instead of stale training data
Agentic discoveryAgents probe the codebase and build a mental map before talking to you
Institutional memoryLessons and anti-patterns captured in LESSONS.md, preventing repeat mistakes
Self-extending agentsCapabilities compound over time—the agent becomes uniquely capable for its domain
Multi-agent surfaceSpecialists (Planner, Generator, Evaluator, Curator) activated by the Assign operation and coordinated through shared story state

What Enso Is

  • A file-based protocol. It lives in your repo, not as a dependency.
  • A contract language. It defines interfaces at seams, not a runtime that executes them.
  • Model-agnostic. Works with any agentic runtime that can read files and follow instructions.
  • Adaptable. The protocol is a starting point. Adapt it to your codebase, your workflow, your domain.

What Enso Is Not

  • Not a model. Enso does not generate tokens or do reasoning.
  • Not a runtime. It does not host execution loops or dispatch tools by itself.
  • Not a CLI or library. There's nothing heavyweight to install or maintain.
  • Not rigid. You modify the protocol for your domain; the protocol doesn't modify you.

References

  • Pi Principle — Agents extend themselves by authoring tools. pi-mono
  • Story State SpecSTORY-000, the canonical enso.story/v1 contract for live story instances. docs/reference/STORY.md
  • HITL PGE Loop Design — Strict planner-generator-evaluator loop over live story state. docs/reference/hitl-pge-loop-design.md
  • Sisyphus Orchestration Loop — Multi-step task execution with verification gates. oh-my-opencode ecosystem
  • Agentic Context Engineering — Research on context management for AI agents. arXiv:2510.04618
  • Vercel Agent Evals — Persistent context via AGENTS.md achieved 100% pass rate vs. 79% for skill retrieval. Blog
  • LangChain Terminal Bench 2.0 — Harness optimization improved agent ranking from Top 30 to Top 5. Blog

License

MIT

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

175 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

enso

enso is built on the Pygmalion model. The maker is the human — the user who shapes the work. The medium is the persistent substrate: codebase, docs, harness instance, knowledge base, the durable state that survives the session. The figure is the orchestration surface, and through it, the agents that do the work. The maker's hand shapes figures against the medium. When the hand lifts, what stands there has to be alive — has to have its own read, its own voice. The seam graph is the technique that lets the hand work the medium without breaking it. The unfinished sculpture is the failure mode to design against. The standard, in every session, is whether the figure stands on its own.

Intelligence lives in the model. Control lives in the runtime and harness. Continuity lives in the substrate.

enso is a seam-oriented harness protocol for agentic work.

Every boundary where behavior changes hands—planning to execution, agent to capability, stance to protocol—is a seam. Most systems treat those boundaries as afterthoughts. enso treats them as first-class: each seam has an interface (the contract) and an enabling point (where you swap the driver). That separation is what makes agent systems inspectable, composable, and compounding over time.

Drop AGENTS.md into your repo and you bootstrap a harness instance—a persistent, project-local orchestration surface that turns ephemeral agent sessions into verifiable, recursive workflows.

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

One file. No dependencies. No CLI. Your agent becomes a more disciplined engineer.


The Problem

If you code with agents, you know this fatigue.

You explain the architecture to an agent that built it three sessions ago. You find bugs reintroduced because last week's lesson evaporated. You watch a brilliant model behave like an amnesiac—writing code that contradicts its own conventions, touching files it promised to avoid, treating every task like opening night with no rehearsal.

The model is not the problem. The model is magnificent. The problem is that decisions vanish at the seams—the boundaries where one behavior hands off to another. Planning collapses into execution without review. An agent's stance leaks into its protocol. Capabilities are hard-coded instead of discovered. Without explicit contracts at each boundary, every session starts cold and coherence decays.

An orchestration surface is the persistent, inspectable contract layer between a human and a swarm of agents—and between the agents themselves. Without it, decisions vanish, lessons evaporate, and the human becomes the memory system. That doesn't scale.

A surface is not just many interfaces. A pile of APIs is not a surface. A surface is a coherent collection of interfaces presented as one thing: the human touches it as one object, each interface has a role, the seams are intentional, transitions don't feel like abandonment, and the vocabulary is shared enough to become usable.


The Solution: The Surface

An agent harness is everything between user intent and model output that is not the language model itself—runtime behavior, context assembly, tool orchestration, verification loops, feedback mechanisms, and lifecycle management.

The harness is the 80% factor in agent reliability. Same model, better harness, dramatically better results.

EvidenceResult
Vercel agent evalsPersistent context via AGENTS.md achieved a 100% pass rate vs. 79% for on-demand skill retrieval—a +21 percentage point improvement (source)
LangChain Terminal Bench 2.0Same model (Claude Opus 4.6), different harness: improved from Top 30 to Top 5 by optimizing the harness alone (source)

"The model contains the intelligence. The harness makes that intelligence useful." — LangChain

Enso is the harness that makes the surface deterministic, inspectable, and compounding. File-based truth replaces vector-database drift. Context lives in verified architecture docs and explicit cross-package state, session over session. It is a way to make that harness explicit, durable, and project-local.


The Seams

SeamInterfaceEnabling Point
Planning → ExecutionStory template (Goal, AC, Approach, Verification)The story document—reviewed before code is touched
Ephemeral → PersistentSix operations: Write, Select, Probe, Compress, Isolate, AssignThe agent's explicit invocation
Agent → CodebaseContext Scope (Write / Read / Exclude)The scoped file list loaded at runtime
Agent → CapabilitySKILL.md frontmatterThe scripts in docs/skills/<name>/
Agent → AgentSpawn contract (context scope, prompt envelope, return path)The bash invocation of pi from within a running harness
Stance → ProtocolSOUL.md / AGENTS.md dual-document structureWhich persona files are injected into the harness at runtime

Every interface is a language. enso's vocabulary is its seam graph.

Seams in practice

Capabilities. Look at docs/skills/<name>/:

The agent reads SKILL.md to discover what this slot does. The shell script does the work. The script can be rewritten in Python or replaced with a different backend—without changing how the agent discovers or routes to it. The contract is stable. The implementation moves.

Stance vs. protocol. When a human-facing agent needs to shift between a debugging session and a reflective conversation, the surface doesn't rewrite its identity. The interface is the dual-document structure (SOUL.md for stance, AGENTS.md for protocol). The enabling point is which files get injected into the harness. Technical work gets precision; personal weight gets presence. Same surface, different register.


The Canonical Stack

Enso works by separating what reasons, what executes, what governs, what persists, and what gets changed. The surface lives in the middle—the contract layer that coordinates across seams.

LayerWhat it isExample
ModelThe LLM that reasons and generates outputGPT, Claude, Gemini
RuntimeThe executable host that runs loops and dispatches toolsOpenCode, Claude Code, Cursor, Codex
Harness protocolThe rules, schema, and workflow for disciplined agent workenso
Harness instanceA project-local realization of the protocol—the surface installed in your repoAGENTS.md, docs/, skills/, logs/
Agent instantiationOne ephemeral task process running inside the runtimethe current session or task
SubstrateThe durable environment being read and transformedcodebase, docs, configs, repo state
  • the model reasons
  • the runtime executes
  • the harness protocol defines how work should happen
  • the harness instance is that protocol installed in a specific project—this is the surface
  • the agent instantiation is the current ephemeral worker
  • the substrate is the durable environment being transformed

What Persists—and What Doesn't

Agent instantiations are ephemeral. They start, do work, and disappear.

Harness instances and substrates persist.

That distinction is the whole game. Without a persistent harness instance attached to a persistent substrate, every agent run starts cold. Decisions vanish. Lessons evaporate. The human becomes the memory system.

Enso fixes that by giving each agent instantiation a durable project context to read from and write back to.


The Execution Loop

The surface becomes executable when work moves through an explicit role loop:

Planner Generator Evaluator adversarial loop

The Planner turns intent into a story contract: goal, scope, acceptance criteria, and verification. The Generator implements only inside the story's declared write scope. The Evaluator checks the result against the frozen contract and evidence. The Human approves plans, accepts results, requests revisions, or blocks unsafe transitions.

The substrate for that loop is a live story file. STORY-000 is reserved for the enso.story/v1 specification; live stories such as STORY-001+ conform to that spec and carry the current state, role outputs, verification evidence, and transition history for one unit of work.

This planner-generator-evaluator pattern is one concrete execution model for enso, not a requirement that every runtime implement it the same way. The strict pi version is documented in docs/reference/hitl-pge-loop-design.md.


Quick Start

1. Plant the Seed

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

AGENTS.md is not just documentation—it is the seed of the harness protocol inside your repo. Once bootstrapped, it becomes part of a project-local harness instance that future agent instantiations can reuse. Without it, the protocol disappears between runs.

2. Activate

Paste exactly this into your agent:

ToolPrompt
Claude Code/read AGENTS.md then /project "Bootstrap this project using the enso protocol."
Cursor@AGENTS.md in chat, then type Bootstrap this project with enso.
OpenCodeRead @AGENTS.md and bootstrap this project.
PiRun pi in the repo, then type: Bootstrap this project with enso.

3. Watch It Grow

00:00> Read @AGENTS.md and bootstrap this project.
00:03Bootstrapping docs/ structure...
00:08Probing codebase—found 14 source files, 2 test suites.
00:18Mapping architecture...
00:35Drafting PRD.md and ARCHITECTURE.md.
00:52First story template ready at docs/stories/STORY-001.md.
00:59Harness instance active. What should we build first?

From there, the cycle repeats: plan, execute, capture, extend. Each session leaves the harness instance sharper than the last.


How It Works

Each agent instantiation runs inside a runtime, follows the enso protocol, and operates against the same substrate through the project's harness instance. The surface is the contract layer that coordinates human intent, agent specialization, and execution.

The Six Operations

The context window is a spotlight—you can illuminate only so much at once. Six operations control what's lit, what's just off-stage, and when to change scenes.

OperationAction
WritePersist insights to disk
SelectLoad only what's needed now
ProbeSearch actively—don't assume, discover
CompressSummarize to fit the token budget
IsolateSplit work across scopes
AssignMatch task to the right agent

The Directory Structure

Enso creates a standard, predictable structure that becomes part of the project's harness instance:

docs/
core/ # Source of truth—PRD, Architecture
stories/ # Active units of work
reference/ # Long-term memory—lessons, conventions
skills/ # Self-authored tools and capabilities
logs/ # Session history

Core holds the source of truth. Stories hold active scoped work. Reference holds earned knowledge. Skills hold self-authored capabilities. Logs hold compressed session memory.

The Self-Extension Loop

Enso draws from the Pi Principle: agents extend themselves by authoring tools, not downloading them.

When an agent encounters friction—a repetitive task, a complex procedure, a missing capability—it doesn't wait. It builds the minimal tool, persists it to docs/skills/, and moves on. Those capabilities become part of the harness instance, and future agent instantiations inherit them automatically. Later sessions refine them.

The Pi Principle lives at the agent → capability seam. When an agent hits friction, it doesn't rewrite its system prompt—it authors a tool where the contract (SKILL.md) stays stable and the driver (the script) can evolve. The compounding effect: a tool built today saves derivation cost in every future session. After months of work, an agent has dozens of custom tools tailored to its codebase—not downloaded dependencies, but authored capabilities. Software that builds software.

"The most powerful agents are not those with the most downloaded dependencies, but those that have built the most custom tools for their specific workflows."


Core Principles

Enso treats context as a scarce resource. Every token competes for attention. Three principles govern the protocol:

  • Separate concerns. Working context is ephemeral, persistent context survives sessions, and reference context is retrieved on demand.
  • Progressive disclosure. Load only what you need, when you need it. Summaries before details. Search before assuming.
  • Stay current, not historical. Documents reflect the present state. Git tracks history. Docs don't accumulate cruft.

Key Capabilities

CapabilityPayoff
Plan-before-executeNo file changes without a verified story
Context scopeExplicit Write/Read/Exclude boundaries on every task
Retrieval-led reasoningVersion-matched docs in docs/ instead of stale training data
Agentic discoveryAgents probe the codebase and build a mental map before talking to you
Institutional memoryLessons and anti-patterns captured in LESSONS.md, preventing repeat mistakes
Self-extending agentsCapabilities compound over time—the agent becomes uniquely capable for its domain
Multi-agent surfaceSpecialists (Planner, Generator, Evaluator, Curator) activated by the Assign operation and coordinated through shared story state

What Enso Is

  • A file-based protocol. It lives in your repo, not as a dependency.
  • A contract language. It defines interfaces at seams, not a runtime that executes them.
  • Model-agnostic. Works with any agentic runtime that can read files and follow instructions.
  • Adaptable. The protocol is a starting point. Adapt it to your codebase, your workflow, your domain.

What Enso Is Not

  • Not a model. Enso does not generate tokens or do reasoning.
  • Not a runtime. It does not host execution loops or dispatch tools by itself.
  • Not a CLI or library. There's nothing heavyweight to install or maintain.
  • Not rigid. You modify the protocol for your domain; the protocol doesn't modify you.

References

  • Pi Principle — Agents extend themselves by authoring tools. pi-mono
  • Story State SpecSTORY-000, the canonical enso.story/v1 contract for live story instances. docs/reference/STORY.md
  • HITL PGE Loop Design — Strict planner-generator-evaluator loop over live story state. docs/reference/hitl-pge-loop-design.md
  • Sisyphus Orchestration Loop — Multi-step task execution with verification gates. oh-my-opencode ecosystem
  • Agentic Context Engineering — Research on context management for AI agents. arXiv:2510.04618
  • Vercel Agent Evals — Persistent context via AGENTS.md achieved 100% pass rate vs. 79% for skill retrieval. Blog
  • LangChain Terminal Bench 2.0 — Harness optimization improved agent ranking from Top 30 to Top 5. Blog

License

MIT

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

175 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

enso

enso is built on the Pygmalion model. The maker is the human — the user who shapes the work. The medium is the persistent substrate: codebase, docs, harness instance, knowledge base, the durable state that survives the session. The figure is the orchestration surface, and through it, the agents that do the work. The maker's hand shapes figures against the medium. When the hand lifts, what stands there has to be alive — has to have its own read, its own voice. The seam graph is the technique that lets the hand work the medium without breaking it. The unfinished sculpture is the failure mode to design against. The standard, in every session, is whether the figure stands on its own.

Intelligence lives in the model. Control lives in the runtime and harness. Continuity lives in the substrate.

enso is a seam-oriented harness protocol for agentic work.

Every boundary where behavior changes hands—planning to execution, agent to capability, stance to protocol—is a seam. Most systems treat those boundaries as afterthoughts. enso treats them as first-class: each seam has an interface (the contract) and an enabling point (where you swap the driver). That separation is what makes agent systems inspectable, composable, and compounding over time.

Drop AGENTS.md into your repo and you bootstrap a harness instance—a persistent, project-local orchestration surface that turns ephemeral agent sessions into verifiable, recursive workflows.

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

One file. No dependencies. No CLI. Your agent becomes a more disciplined engineer.


The Problem

If you code with agents, you know this fatigue.

You explain the architecture to an agent that built it three sessions ago. You find bugs reintroduced because last week's lesson evaporated. You watch a brilliant model behave like an amnesiac—writing code that contradicts its own conventions, touching files it promised to avoid, treating every task like opening night with no rehearsal.

The model is not the problem. The model is magnificent. The problem is that decisions vanish at the seams—the boundaries where one behavior hands off to another. Planning collapses into execution without review. An agent's stance leaks into its protocol. Capabilities are hard-coded instead of discovered. Without explicit contracts at each boundary, every session starts cold and coherence decays.

An orchestration surface is the persistent, inspectable contract layer between a human and a swarm of agents—and between the agents themselves. Without it, decisions vanish, lessons evaporate, and the human becomes the memory system. That doesn't scale.

A surface is not just many interfaces. A pile of APIs is not a surface. A surface is a coherent collection of interfaces presented as one thing: the human touches it as one object, each interface has a role, the seams are intentional, transitions don't feel like abandonment, and the vocabulary is shared enough to become usable.


The Solution: The Surface

An agent harness is everything between user intent and model output that is not the language model itself—runtime behavior, context assembly, tool orchestration, verification loops, feedback mechanisms, and lifecycle management.

The harness is the 80% factor in agent reliability. Same model, better harness, dramatically better results.

EvidenceResult
Vercel agent evalsPersistent context via AGENTS.md achieved a 100% pass rate vs. 79% for on-demand skill retrieval—a +21 percentage point improvement (source)
LangChain Terminal Bench 2.0Same model (Claude Opus 4.6), different harness: improved from Top 30 to Top 5 by optimizing the harness alone (source)

"The model contains the intelligence. The harness makes that intelligence useful." — LangChain

Enso is the harness that makes the surface deterministic, inspectable, and compounding. File-based truth replaces vector-database drift. Context lives in verified architecture docs and explicit cross-package state, session over session. It is a way to make that harness explicit, durable, and project-local.


The Seams

SeamInterfaceEnabling Point
Planning → ExecutionStory template (Goal, AC, Approach, Verification)The story document—reviewed before code is touched
Ephemeral → PersistentSix operations: Write, Select, Probe, Compress, Isolate, AssignThe agent's explicit invocation
Agent → CodebaseContext Scope (Write / Read / Exclude)The scoped file list loaded at runtime
Agent → CapabilitySKILL.md frontmatterThe scripts in docs/skills/<name>/
Agent → AgentSpawn contract (context scope, prompt envelope, return path)The bash invocation of pi from within a running harness
Stance → ProtocolSOUL.md / AGENTS.md dual-document structureWhich persona files are injected into the harness at runtime

Every interface is a language. enso's vocabulary is its seam graph.

Seams in practice

Capabilities. Look at docs/skills/<name>/:

The agent reads SKILL.md to discover what this slot does. The shell script does the work. The script can be rewritten in Python or replaced with a different backend—without changing how the agent discovers or routes to it. The contract is stable. The implementation moves.

Stance vs. protocol. When a human-facing agent needs to shift between a debugging session and a reflective conversation, the surface doesn't rewrite its identity. The interface is the dual-document structure (SOUL.md for stance, AGENTS.md for protocol). The enabling point is which files get injected into the harness. Technical work gets precision; personal weight gets presence. Same surface, different register.


The Canonical Stack

Enso works by separating what reasons, what executes, what governs, what persists, and what gets changed. The surface lives in the middle—the contract layer that coordinates across seams.

LayerWhat it isExample
ModelThe LLM that reasons and generates outputGPT, Claude, Gemini
RuntimeThe executable host that runs loops and dispatches toolsOpenCode, Claude Code, Cursor, Codex
Harness protocolThe rules, schema, and workflow for disciplined agent workenso
Harness instanceA project-local realization of the protocol—the surface installed in your repoAGENTS.md, docs/, skills/, logs/
Agent instantiationOne ephemeral task process running inside the runtimethe current session or task
SubstrateThe durable environment being read and transformedcodebase, docs, configs, repo state
  • the model reasons
  • the runtime executes
  • the harness protocol defines how work should happen
  • the harness instance is that protocol installed in a specific project—this is the surface
  • the agent instantiation is the current ephemeral worker
  • the substrate is the durable environment being transformed

What Persists—and What Doesn't

Agent instantiations are ephemeral. They start, do work, and disappear.

Harness instances and substrates persist.

That distinction is the whole game. Without a persistent harness instance attached to a persistent substrate, every agent run starts cold. Decisions vanish. Lessons evaporate. The human becomes the memory system.

Enso fixes that by giving each agent instantiation a durable project context to read from and write back to.


The Execution Loop

The surface becomes executable when work moves through an explicit role loop:

Planner Generator Evaluator adversarial loop

The Planner turns intent into a story contract: goal, scope, acceptance criteria, and verification. The Generator implements only inside the story's declared write scope. The Evaluator checks the result against the frozen contract and evidence. The Human approves plans, accepts results, requests revisions, or blocks unsafe transitions.

The substrate for that loop is a live story file. STORY-000 is reserved for the enso.story/v1 specification; live stories such as STORY-001+ conform to that spec and carry the current state, role outputs, verification evidence, and transition history for one unit of work.

This planner-generator-evaluator pattern is one concrete execution model for enso, not a requirement that every runtime implement it the same way. The strict pi version is documented in docs/reference/hitl-pge-loop-design.md.


Quick Start

1. Plant the Seed

curl -o AGENTS.md https://raw.githubusercontent.com/usefulmove/enso/main/AGENTS.md

AGENTS.md is not just documentation—it is the seed of the harness protocol inside your repo. Once bootstrapped, it becomes part of a project-local harness instance that future agent instantiations can reuse. Without it, the protocol disappears between runs.

2. Activate

Paste exactly this into your agent:

ToolPrompt
Claude Code/read AGENTS.md then /project "Bootstrap this project using the enso protocol."
Cursor@AGENTS.md in chat, then type Bootstrap this project with enso.
OpenCodeRead @AGENTS.md and bootstrap this project.
PiRun pi in the repo, then type: Bootstrap this project with enso.

3. Watch It Grow

00:00> Read @AGENTS.md and bootstrap this project.
00:03Bootstrapping docs/ structure...
00:08Probing codebase—found 14 source files, 2 test suites.
00:18Mapping architecture...
00:35Drafting PRD.md and ARCHITECTURE.md.
00:52First story template ready at docs/stories/STORY-001.md.
00:59Harness instance active. What should we build first?

From there, the cycle repeats: plan, execute, capture, extend. Each session leaves the harness instance sharper than the last.


How It Works

Each agent instantiation runs inside a runtime, follows the enso protocol, and operates against the same substrate through the project's harness instance. The surface is the contract layer that coordinates human intent, agent specialization, and execution.

The Six Operations

The context window is a spotlight—you can illuminate only so much at once. Six operations control what's lit, what's just off-stage, and when to change scenes.

OperationAction
WritePersist insights to disk
SelectLoad only what's needed now
ProbeSearch actively—don't assume, discover
CompressSummarize to fit the token budget
IsolateSplit work across scopes
AssignMatch task to the right agent

The Directory Structure

Enso creates a standard, predictable structure that becomes part of the project's harness instance:

docs/
core/ # Source of truth—PRD, Architecture
stories/ # Active units of work
reference/ # Long-term memory—lessons, conventions
skills/ # Self-authored tools and capabilities
logs/ # Session history

Core holds the source of truth. Stories hold active scoped work. Reference holds earned knowledge. Skills hold self-authored capabilities. Logs hold compressed session memory.

The Self-Extension Loop

Enso draws from the Pi Principle: agents extend themselves by authoring tools, not downloading them.

When an agent encounters friction—a repetitive task, a complex procedure, a missing capability—it doesn't wait. It builds the minimal tool, persists it to docs/skills/, and moves on. Those capabilities become part of the harness instance, and future agent instantiations inherit them automatically. Later sessions refine them.

The Pi Principle lives at the agent → capability seam. When an agent hits friction, it doesn't rewrite its system prompt—it authors a tool where the contract (SKILL.md) stays stable and the driver (the script) can evolve. The compounding effect: a tool built today saves derivation cost in every future session. After months of work, an agent has dozens of custom tools tailored to its codebase—not downloaded dependencies, but authored capabilities. Software that builds software.

"The most powerful agents are not those with the most downloaded dependencies, but those that have built the most custom tools for their specific workflows."


Core Principles

Enso treats context as a scarce resource. Every token competes for attention. Three principles govern the protocol:

  • Separate concerns. Working context is ephemeral, persistent context survives sessions, and reference context is retrieved on demand.
  • Progressive disclosure. Load only what you need, when you need it. Summaries before details. Search before assuming.
  • Stay current, not historical. Documents reflect the present state. Git tracks history. Docs don't accumulate cruft.

Key Capabilities

CapabilityPayoff
Plan-before-executeNo file changes without a verified story
Context scopeExplicit Write/Read/Exclude boundaries on every task
Retrieval-led reasoningVersion-matched docs in docs/ instead of stale training data
Agentic discoveryAgents probe the codebase and build a mental map before talking to you
Institutional memoryLessons and anti-patterns captured in LESSONS.md, preventing repeat mistakes
Self-extending agentsCapabilities compound over time—the agent becomes uniquely capable for its domain
Multi-agent surfaceSpecialists (Planner, Generator, Evaluator, Curator) activated by the Assign operation and coordinated through shared story state

What Enso Is

  • A file-based protocol. It lives in your repo, not as a dependency.
  • A contract language. It defines interfaces at seams, not a runtime that executes them.
  • Model-agnostic. Works with any agentic runtime that can read files and follow instructions.
  • Adaptable. The protocol is a starting point. Adapt it to your codebase, your workflow, your domain.

What Enso Is Not

  • Not a model. Enso does not generate tokens or do reasoning.
  • Not a runtime. It does not host execution loops or dispatch tools by itself.
  • Not a CLI or library. There's nothing heavyweight to install or maintain.
  • Not rigid. You modify the protocol for your domain; the protocol doesn't modify you.

References

  • Pi Principle — Agents extend themselves by authoring tools. pi-mono
  • Story State SpecSTORY-000, the canonical enso.story/v1 contract for live story instances. docs/reference/STORY.md
  • HITL PGE Loop Design — Strict planner-generator-evaluator loop over live story state. docs/reference/hitl-pge-loop-design.md
  • Sisyphus Orchestration Loop — Multi-step task execution with verification gates. oh-my-opencode ecosystem
  • Agentic Context Engineering — Research on context management for AI agents. arXiv:2510.04618
  • Vercel Agent Evals — Persistent context via AGENTS.md achieved 100% pass rate vs. 79% for skill retrieval. Blog
  • LangChain Terminal Bench 2.0 — Harness optimization improved agent ranking from Top 30 to Top 5. Blog

License

MIT