In September I spoke at the second edition of F13 Code Summit, a developer conference in Lima organized by UTEC Posgrado and Zutun. The talk was called Orquestando agentes de programación sin perder la cabeza (ni el contexto): orchestrating coding agents without losing your head, or the context. It was about Substrate, the open-source tool I built for that and use every day.

Diego presenting the Substrate home page to a full room at F13 Code Summit

The problem

Coding agents forget how you work. Three places people usually keep the process, and why each one falls short:

  • The agent’s own task list lives for one session. When the context resets, everything the agent knew about the state of the work is gone.
  • A CLAUDE.md file lasts, but it has no structure and it’s only advice. As the context fills up, agents drift away from it, and nothing tells them when they break it.
  • GitHub Issues are durable and structured, but they live outside the repo. The agent has to remember to go and check, and issues don’t model your gates.

What Substrate does

Substrate is a local-first work manager that lives in your repo. Your agents use it over MCP. You define the process once, as data: boards, fields and policies in .substrate/boards/*.json, committed next to the code. Every session, and every second agent, reads the same state and hits the same gates when it writes.

  • Gates that fire at write time. A transition_guard blocks a task from moving to the next stage when a required field is missing, and tells the agent which field.
  • Suggestions that ride along. An agent_responsibility policy attaches non-blocking reminders to matching writes.
  • Approvals only a person can give. A field marked human_only can’t be set by the agent’s tools. Only a person can sign it, from the CLI, with substrate approve. A gate that requires one is an approval an unattended agent can’t give itself.

Diego walking the room through a board definition with human-only fields

What a gate doesn’t do

A gate checks a field the agent fills in itself. If the agent writes tests_passing: true, nobody actually ran your tests. The gate records the claim and blocks until it’s made, but it doesn’t verify it. A hard stop at the right moment still beats advice the agent drifted away from an hour ago, and the human_only fields are where the real barrier is.

Diego pointing at the slides during the talk

Try it

Substrate is on GitHub, with docs at substrate.42.pe. Version 0.7.0 is a pre-release, so for now you install it from source.

Get new pieces by email

Occasional notes on AI-first web architecture and Agent based web development. No fluff, unsubscribe anytime.