open source · Apache-2.0
Tools we built while learning to work with agents
open tomato is a set of open-source projects that came out of research into agentic development. They are pre-1.0 and change often. The dev diary records how they get built, mistakes included.
rafa
A CLI that turns a spec into a plan and runs it through Claude Code: one session and one commit per task, then a pull request.
Needs Bun to run, and Claude Code for anything that starts a session.
A minute with rafa
From a spec to a merged pull request
$
Workflow 1 of 4 · step 1/2
Install and set up
One global install, then rafa init gives the repo its .rafa/ folder and a GitHub board.
Projects
What we’ve built, and what’s next
Agentic development
Runs a plan through Claude Code, one session and one commit per task, then opens a pull request.
Team sync
A server for rafa: a team’s devices sync their effort records through it instead of each keeping its own.
Reporting and monitoring
One place to read reports and watch runs across rafa projects and machines.
Agent messaging
Designed as a small library and CLI that delivers messages from programs and agents to chats, files or Claude sessions.
Design to components
Turns a Claude Design export into a React component library, checked against the design screen by screen.
Sandboxes
Throwaway sandbox machines for development and pipelines: clone a project in and run its checks in isolation.
Agentic research
Our implementation of the Agentic Research template: a research agent, built in the open.
Extensions
A repository of the skills and add-ons we use with rafa and Claude Code, shared for reuse.
Terminal UI
A terminal user interface for the projects above. Details to come.
Dev diary
What we ran into, written down
The checker was looking elsewhere: 85 of 85 files reported missing, and every one was there
A verification tool reported 85 of 85 files missing. All 85 existed.
"All pass": a green run that threw away fourteen answers it had paid for
Four correct fixes, one symptom that didn't move
Agent's own words: [I] went looking for another culprit