ADR-0002 — Agent-driven, no GUI
Marrow ships no editing interface. The editor is a conversation, and the agent operating guide is a product surface.
Status: accepted
Marrow has no graphical editor and none is planned. A user describes a network
in chat; an AI agent authors the YAML, validates it, renders a snapshot, and
iterates. AGENTS.md and the bundled skills are treated as product surfaces,
not developer notes.
Why
Building a diagram editor is a multi-year project that ends in competition with draw.io on its own ground. Building a compiler with excellent diagnostics is a much smaller project, and the natural-language front end already exists — it's the agent the user is already talking to.
This reframes what the tool has to be good at. Not: canvas interaction, undo stacks, alignment guides, shape libraries. Instead: a small strict schema, diagnostics precise enough to act on without human interpretation, meaningful exit codes, and a render step an agent can look at.
Consequences
Diagnostics are the primary interface, and their quality is the product. Every error carries a stable code, a line and column, a snippet, a fix hint, and ranked did-you-mean suggestions — because the consumer is a machine that must correct itself without asking the user what went wrong.
Codes are permanent. MRW-E010 means "unknown icon" forever. Agents and
tests key off them, so they're never renumbered or reused.
snapshot is a first-class command, not a convenience. It is how the agent
sees its own work, and "look at the picture" is a required step in the
documented loop rather than a suggestion.
The docs have two audiences with different needs. AGENTS.md stays in the
working tree because agents read the tree, not a website. This site is the
canonical complete reference for humans.
Non-agent users are second-class by construction. Authoring by hand works — the schema is small and the errors are good — but nobody is optimizing for it.
Assumed: the "competing with draw.io is unwinnable" framing is inferred. The repository states the no-GUI position as a given; it does not record the build-versus-buy reasoning behind it.
Considered and rejected
A web editor with a canvas. Rejected: enormous scope, and it would reintroduce manual positioning, which ADR-0001 deliberately removes.
A form-based YAML builder. Rejected: solves the syntax problem, which diagnostics already solve, while doing nothing for the hard part — deciding what the network's structure actually is.