Five modules, one principle: the harness is dumb, and the knowledge, telemetry, and reusable artifacts are in local files.
- working/ — live task state. Volatile. Archived after 2 days.
- episodic/ — what happened in prior runs. JSONL, scored by salience.
- semantic/ — distilled patterns that outlive episodes.
- personal/ — user-specific preferences. Never merged into semantic.
_index.mdand_manifest.jsonlalways in context (tiny).- A full
SKILL.mdloads only when its triggers match the current task. - Every skill has a self-rewrite hook at the bottom.
permissions.md— allow / approval-required / never-allowed.tool_schemas/— typed interfaces for every external tool.delegation.md— rules for sub-agent handoff.
.agent/tools/data_layer_export.pynormalizes shared episodic memory, optional harness events, and optional cron runs..agent/data-layer/is private runtime state and exports.- Exports include JSONL, CSV, KPI summaries,
dashboard.html, anddaily-report.md. - The dashboard helps users see harness mix, cron schedules, active agents, token/cost estimates, categories, and workflow outcomes across Claude Code, Hermes, OpenClaw, Codex, Cursor, OpenCode, and other adapters.
.agent/tools/data_flywheel_export.pyreads sanitized approved runs..agent/flywheel/is private runtime state and exports.- Exports include redacted trace records, context cards, eval cases, training-ready JSONL, and flywheel metrics.
- The flywheel prepares retrieval, evals, prompt shrinking, and optional future open-weight adapter work. It does not train models.
- Skills log to episodic memory after every action.
- Memory-manager detects recurring patterns and promotes them to semantic.
- Skillforge watches for patterns not yet covered by existing skills.
- Failures fire
on_failure.py, which flags skills for rewrite after 3+ hits in 14 days. - Constraint violations inside a skill escalate from local
KNOWLEDGE.mdto globalLESSONS.md. - Data-layer exports turn local activity into screenshot-ready monitoring without adding remote telemetry.
- Human-approved runs can be exported into flywheel artifacts when the user wants a private corpus for recurring workflows.
You can swap the harness for any of the adapters (Claude Code,
Cursor, Windsurf, OpenCode, OpenClaw, Copilot CLI, Gemini, Hermes, Pi, Codex,
standalone Python, Antigravity) and lose nothing. The brain is portable; only
the glue changes. The dashboard and flywheel work for the same reason: every
harness can write to the same local .agent/ event stream.
See diagram.svg for a visual.