Your repo is already your project management tool. We just added the interface.

Backlog, roadmap and docs as plain YAML and markdown inside your repository — the only source of truth. No database, no SaaS, no account. Your AI agent reads and writes it in the right format; you review the diff.

There’s no step 2. We checked.

claude — your terminal
you › take the next task
agent › #14 Deploy to Cloudflare Pages → in_progress
$ npx wrangler deploy
agent › Live at roadmapped.work. You’re on it.
agent › #14 done · record written
you › next
agent › #10 Embed the real dashboard in the homepage → in_progress
$ node scripts/task.mjs start 10
agent › The window on the right? That’s it. Not a replica — the app.
agent › #10 stays in_progress until you stop looking.
localhost:5173 — Roadmapped

Two windows. On the left, the loop your agent runs: take, work, record. On the right — not a screenshot, not a replica — the actual dashboard, the same React app npm install gives you, with this page’s own backlog baked in. Click around: the graph is the real graph, the panel is the real panel, and every edit is politely declined. Ticket #10 is “Embed the real dashboard in the homepage”. It’s marked in progress. Look at it deciding whether it’s done.

$ ls docs/tasks/

What’s in the folder

01-backlog-lives-in-git.yaml

Backlog that lives in git

Sections and tasks under docs/tasks/. Full CRUD from the dashboard or the CLI. Every task is a YAML file you can diff, review, and blame — because it is one.

02-roadmap-no-dates.yaml

Roadmap with no dates to lie about

Your sections become milestones. done / available / locked states are computed from the dependency graph on every read, never stored. Nothing to drift out of sync, because there’s no second copy.

03-agent-first.yaml

Agent-first, by design

A CLI (scripts/task.mjs) and a Claude skill so your agent creates specs, tasks and dependencies in the correct schema — and records what it ships with more discipline than most of us manage.

04-validated-writes.yaml

Validated writes, honest history

Every write — from the dashboard or the CLI — goes through the same validator. On error, the change rolls back. Ids are never reused. Your git history is the audit log.

$ file 42-dark-mode.yaml  ASCII text

How it works (it’s files)

Everything is flat, hand-editable files: task YAML you can read without us, docs rendered straight from your docs/ folder. The dashboard and the CLI read and write the same data through the same validator — never a second, parallel schema hiding somewhere.

Yes, it’s a folder of YAML files. No, it’s not a database. That’s kind of the point.

$ git log --oneline docs/tasks/_archive/

Built by using itself

Roadmapped’s own backlog is managed by Roadmapped, mostly by a Claude agent that records every task it ships. The _archive folder is the changelog. The commit history is the proof. If you want to know whether the workflow holds up, don’t take our word for it — read the archive.

$ npm install

Quickstart

npm install
npm run dev                  # dashboard on http://localhost:5173
node scripts/task.mjs --help # the CLI your agent (or you) drives

Point your AI agent at the Claude skill and it takes it from there.

$ curl api.roadmapped.work
curl: (6) Could not resolve host

Where your data lives

On your machine, in your repo. Not out of principle — we simply don’t have a server to send it to. Deleting your account is rm -rf. GDPR compliant by design; the design being that we never had your data.

$ head -1 LICENSE
MIT License

Free, and actually free

MIT licensed. No pricing page, no seats, no “contact sales.” We don’t have a customer success team to schedule an onboarding call — we don’t have customers. It’s free.