The agent charter framework

The discipline your AI agents won't drift from.

AI coding agents drift, and every repo is different. Keystone is charter engineering at the repository level: you author one versioned charter — the standards that constrain your agents — and it projects to whatever harness runs the model. Same rules, every agent, per repo.

Open source · MIT Go CLI + MCP + dashboard v4.0.0
~/your-repo — keystone
$ brew install tacoda/tap/keystone
$ keystone init
wrote .charter/ + agent menu
$ keystone index
emitted .charter/INDEX.json
$ keystone project
.claude/ · .cursor/ · AGENTS.md projected
# one charter → every harness reads it
$ 3s · on-rails

Coding agents drift — they lose the thread, ignore conventions, and reinvent what the codebase already decided. And every repository is unique: its stack, its idioms, its hard rules. Teams have had no per-repo, harness-agnostic way to encode the discipline that agents actually follow — so the same corrections get re-typed into every session, every host, every clone.

Framework

Extensible by design

It's a framework, not a fixed tool. Define your own signals (framework events), author custom tools and adapters, add host targets, extend every primitive. The charter grows with your project.

Harness-agnostic

Shared project standards

One source of truth for every agent — not a pile of conflicting per-agent folders (.claude/, .cursor/, AGENTS.md, .continue/…). Author the charter once; Keystone projects it to every host, natively.

Governance

Rich policy system

Ship org and team rules as vendored policies — version-pinned, hash-verified, drift-reset. They cascade: project wins by default, nested policies refine, strict items lock absolutely. Governance that agents actually follow.

You author a charter — guides, sensors, signals, and policies — as structured, primitive-typed markdown living at .charter/, with one canonical CHARTER.md entrypoint. Keystone keeps it indexed and healthy, then projects it to every host's native paths.

Whatever harness runs the model reads it and stays on-rails. A harness is the engine that runs the model — Claude Code, Cursor, Codex, opencode, an orchestrator. Keystone is not a harness; it manages the charter the harness obeys. You author the charter; the harness you run consumes and applies it.

Author

Write the charter

Guides (glob-scoped rules), sensors (checks + gates), signals (events), policies (pinned org rules) — plain markdown at .charter/.

Project

Ship it to every host

keystone project renders to .claude/, .cursor/, AGENTS.md, and more from one canonical source.

Stay on-rails

Agents read & obey

Any agent reads .charter/INDEX.json and opens bodies on demand — reliable, quality output, per repo.

One versioned source of truth

01Reliable output, per repo. The charter encodes this codebase's discipline — agents produce quality work that fits.
02Versioned, reviewed, in git. The charter is files on disk. It evolves through pull requests like everything else.
03Tools aren't required at runtime. Once installed, the charter is markdown any agent can read — keystone just authors and maintains it.

Harness-agnostic & team-scalable

01Works across hosts. Claude Code, Cursor, Codex, opencode — write once, project everywhere.
02Org rules ship as policies. Vendored charter fragments, pinned by version and hash-verified, drift-reset on keystone verify.
03The cascade resolves conflicts. Project wins by default; nested policies refine; strict items lock absolutely.

The charter holds 13 primitive kinds. A few carry most of the weight — the reference covers them all.

Primitives

Guides & sensors

Glob-scoped rules that activate on the files you touch; checks and agent reviews that gate the work. Corpus carries the why, loaded on demand.

Signals

Extensible events

Host phases are a closed set; any other on: value is a signal. Sensors, tools, and agents self-subscribe. keystone signal fire.

Charter health

Coverage & conformance

keystone charter coverage finds files no guide governs; conformance scores the repo against its charter.

Cascade

Policies, pinned

Org and team rules ship as vendored policies — version-pinned, hash-verified, drift-reset. Project layer always wins by default.

Surfaces

MCP + dashboard

An MCP server dispatches the charter to host agents; a localhost dashboard at :4773 gives metrics, insights, prune, and eval runs.

Projection

Every host, natively

One canonical .charter/ renders to .claude/, .cursor/, AGENTS.md — thin pointers back to CHARTER.md.

Install & scaffold

One Homebrew tap, one init. Minimum-friction: a single question (your agent target), or zero with --agent.

$ brew install tacoda/tap/keystone    # or grab a release binary
$ keystone init                       # writes .charter/ + agent menu
$ keystone index                      # emits .charter/INDEX.json
$ keystone mcp install --agent claude-code   # one-line agent wiring
$ keystone web serve                  # optional: open the dashboard
Start here
New to Keystone? The guide walks you from install to your first task. The reference documents every primitive kind, CLI verb, and surface.