etapp
Roadmap-as-code

Your roadmap
lives in git.

Plain-markdown pucks in each repo — read and written by you and your AI agents — aggregated into one zero-backend board. No SaaS, no lock-in, no second source of truth.

git-native agent-readable zero-backend deploy-your-own
roadmap/dark-mode.md
---
title: Add dark mode
status: now
tags: [ui]
updated: 2026-08-16
owner: tor2dbear
depends: [design-tokens]
---

## Goal
One markdown file per roadmap item.
Edit it by hand or with the roadmap CLI —
both you and an agent can.
Etapp 01 — why

Not another tracker. A roadmap layer in your code.

Linear and GitHub Projects are team-PM tools. Etapp is different by construction — the difference is structural, not a feature list.

git

Truth lives in git

Each item is a markdown file in its own repo. Your roadmap diffs in pull requests and travels with the code — nothing to sync.

ai

Agent-native

A coding agent reads roadmap.json to know what's ready and writes back with the CLI or the board — no API keys, no integration.

Zero backend

A static board aggregates every repo. No database, no service to run, nothing to lock you in. Deploy your own in minutes.

Etapp 02 — vs the tools

Where Etapp is different by design.

It deliberately cedes real-time co-editing, notifications and sprints — that's Linear's turf. The moat is being git-native and agent-native.

Linear / ProjectsEtapp
Truth livestheir cloud / GitHubin each repo, in git
Formatproprietary / issuesplain markdown
BackendSaaSnone — static
Multi-repoclunkycore
Agent read / writeAPI + keysdirect — md + JSON + CLI
Lock-inyesnone
Etapp 03 — how it works

Harvest the markdown. Render one board.

A scheduled job reads every source repo's pucks and generates the board — humans and agents read the same files.

source repos

roadmap/*.md

One puck per item, in each project. The source of truth.

harvest

roadmap.json · ROADMAP.md

Aggregated, machine-readable, with drift signals + blocked-by.

render

the board

A static page — search, filter, sort, deep links. No backend.

Etapp 04 — for agents

Built for the agent era.

The roadmap an AI operates natively — reads to know what to do, writes to mark it done. No integration to maintain.

  • Find what's ready — unblocked now / next pucks, in one query.
  • Update via the CLIroadmap done <slug>, straight to git.
  • Route to a specialist — set agent: backend and it joins that discipline's queue; you act as PO.
  • One contractAGENTS.md spells out read + write.
what's ready to pick up
$ node -e "…filter roadmap.json…"

pia-terminal/python-sandbox-csp-fix
meta-matic/seller-order-notifications
cadence/bring-your-own-markup
# unblocked now/next — nothing guessed
Etapp 05 — deploy your own

Point it at your repos. Ship in minutes.

Config-driven — no code changes, no backend, no build step.

1

Use the template

Fork tor2dbear/etapp — the whole engine and board come with it.

2

List your repos

Edit sources.json — repo, name, colour, adapter. Each project keeps its own roadmap/.

3

Brand it

Set title, description and source link in board.config.json.

4

Publish it

Enable Actions (forks start with them off), then Settings → Pages → Source: GitHub Actions. Nothing but GitHub needed. The board is a plain static bundle, so any static host serves it just as well.

5

Stays fresh

The included action harvests and republishes — hourly, on every push to the board repo, and whenever you ask, from the Actions tab or the board's own sync now. Change the schedule in pages.yml.

start the journey

Your roadmap already lives in git. Give it a board.

Try the interactive demo, or grab the code and stand up your own.