01 The problem
Running coding agents by hand doesn't scale: one terminal, one task, and you have to stay at the computer. I wanted agents to work through a queue on several servers, safely, while I'm away, and only hand me results that pass checks.
02 What it does
- Postgres-backed queue with atomic pickup (FOR UPDATE SKIP LOCKED), so two workers never take the same task.
- Each run gets its own git worktree, runs the agent, then a verify command; a failed verify gets one repair pass, otherwise the task ends as partial, not done.
- High-risk tasks go through a plan gate: a read-only planning run, approval in the app, and only then the real run.
- Android client for creating tasks, approving plans and cancelling runs, with push notifications and OTA updates.
03 Architecture
- 01 ClientNative Android app (Kotlin) + `ns` CLI
- 02 Control planeFastify REST API, auth, notification outbox, FCM
- 03 QueuePostgreSQL task state machine with leases and heartbeats
- 04 WorkersDependency-free Node worker per server: worktree → claude -p → verify → PR
04 Stack
TypeScriptNode.jsFastifyPostgreSQLClaude CodeKotlinAndroidFCMDockersystemd
05 How I worked with AI
This project is about making agents trustworthy enough to run unattended: they never merge on their own, failures are labelled honestly, follow-up ideas are only proposed and never started automatically, and every run is isolated in its own branch.
06 What is verified
- Server, worker, migrations and Android client are present in the repository.
- 16 test files; Dockerfile and Compose for the control plane.
07 Honest notes
- Personal infrastructure, experimental. No CI pipeline yet.
08 Screenshots
Screenshots are being prepared with anonymised data. Real client data will not be shown.