Keystone 2.0 — A Worthy 2.0 Keystone 2.0, an agent harness framework, introduces a new vocabulary with eleven primitive kinds in two layers and a dashboard for observability. The update includes a built-in MCP server, evals with baseline diffs, and slash-command skills, making the harness visible and maintainable. https://www.tacoda.dev/keystone/ https://www.tacoda.dev/keystone/ A major version should mean something. If you ship 2.0 and a user opens the repo to find the same shape with a new number on it, you have wasted their attention. The shelf is already full of frameworks that did that. So when I started planning the next Keystone release, the question I kept asking was simple: what would make a developer say, out loud, “this is a different tool now”? Two answers held up. The first was shape . Keystone 1.x had the right ideas guides, corpus, sensors, actions, playbooks, adapters but the taxonomy stopped just short of being a real framework vocabulary. A user could not look at the abstractions and immediately know where the next thing they needed lived. The second was observability . The harness was healthy, but you had to take my word for it. There was no operator view. No dashboard. No way to see, at a glance, what the agent saw. 2.0 fixes both. Keystone is the agent harness framework. That has been the pitch since 1.0. The Rails analogy is the right one. A working set of components, conventions, and slots, so the team building on top isn’t inventing the world from scratch each Monday morning. 2.0 makes the vocabulary explicit. Eleven primitive kinds in two layers : Framework — guide, corpus, sensor, action, playbook, eval, source — and Agent — rule, skill, subagent, command, persona. Every file in .keyston/harness/ carries canonical frontmatter declaring its kind, id, and per-kind required fields. The walker emits a single .keystone/INDEX.json that every tool reads first. You stop searching the directory tree for where a thing lives. You ask the index. This is the part that makes 2.0 feel like a different tool. The old harness/ layout worked. The new .keystone/harness/ layout teaches . keystone web serve opens localhost:4773. The dashboard is fourteen pages of insight into the harness you just installed: home, metrics, insights, primitives, policies, investigator, sources, verify, prune, inbox, flywheels, evals, search, graph. Same binary. HTMX plus SSE; fsnotify on .keystone/ swaps fragments when files change. Open it in a browser, edit a guide in your editor, and watch the dashboard update without a refresh. A harness you can see is a harness you will actually maintain. Before 2.0, “is the harness healthy?” was a question you answered by reading files. Now it’s a tab you keep open. A few more pieces ship in 2.0 that earn their own mention. A built-in MCP server. keystone mcp install --agent cladue-code writes .mcp.json in one shot. Twenty-one tools, four prompts, resources for index, primitives, sources, and skills. The same binary that authors the harness now dispatches it to the agent over the model-context-protocol. One source of truth, one runtime contract. Evals with baseline diffs. A new framework primitive lives at .keystone/harness/evals/