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.

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.