Local, offline requirements tracing for small engineering projects.
Tracer keeps the verification chain intact: intent, requirement, verification, evidence.
Edit a requirement and the verification that relied on the old version is immediately marked stale.
docker run --rm \
-p 127.0.0.1:3000:3000 \
-v tracer-data:/data \
ghcr.io/finorr/tracer:latestOpen http://localhost:3000.
The first image pull requires internet access. After that, the app runs locally and stores its data in the Docker volume mounted at /data.
Tracer stores everything in SQLite at /data/tracer.db inside the container.
Back up the database:
docker run --rm \
-v tracer-data:/data \
-v "$PWD":/backup \
busybox cp /data/tracer.db /backup/tracer.dbReset local data:
docker volume rm tracer-dataEverything is an item: intent, requirement, verification, or risk. Evidence is recorded on verification runs.
Relationships can:
refine: break intent into requirementsverify: link a verification to what it must provemitigate: connect a risk to its control
The app derives requirement status automatically:
- requirements without verification are unverified
- verifications without a run are stale
- editing a requirement makes its verification stale until re-run
- the trace matrix shows gaps across the project
![]() |
![]() |
![]() |
| Requirement chain | Trace matrix | User stories |
Local development requires Node.js 24 or newer.
npm install
npm run devBy default, development data is stored in .data/tracer.db. Override it with:
TRACER_DB_PATH=/path/to/tracer.db npm run devUseful checks:
npm run typecheck
npm run build
docker build -t tracer:local .- Next.js 14
- React 18
- SQLite via Node's built-in
node:sqlite - TypeScript


