Agentic-first task manager. The agent IS the interface.
TaskPilot is a task management service designed for AI agents to drive over plain HTTP. No UI, no SDK. The API is the product.
make build
./taskpilotThe server starts on :8080 with zero config. Data is persisted to a JSON file automatically.
- Get a token:
POST /auth/request→POST /auth/verify→ bearer token - Create a task:
POST /api/taskswithtitle=Fix the bug&priority=high - List tasks:
GET /api/tasksorGET /api/tasks?status=todo - Update a task:
PATCH /api/tasks/task_a1b2cwithstatus=done - Delete a task:
DELETE /api/tasks/task_a1b2c
- Plain text by default — one labeled, grepable line per record. JSON on demand via
Accept: application/jsonor?format=json. - Instructive errors — every 4xx includes a hint telling the agent what to do next.
- Self-documenting —
GET /helpreturns a one-page operating manual. - Simple auth — OTP via email → long-lived bearer token.
- Single static binary — Go, zero external dependencies, deploys as one file.
- Zero config defaults — runs out of the box. Config: defaults < env < flags.
- Multi-tenant — workspaces isolate tasks per tenant.
- Short stable handles — every task gets a workspace-scoped handle like
task_k7m2q. - Flexible input — status and priority accept common aliases (e.g.
completed→done,urgent→high).
| Flag | Env | Default | Description |
|---|---|---|---|
-addr |
TASKPILOT_ADDR |
:8080 |
Listen address |
-db |
TASKPILOT_DB |
taskpilot.json |
Data file path |
-secret |
TASKPILOT_SECRET |
random | Token signing secret |
make build # CGO_ENABLED=0, single static binary
make test # go test ./... -race
make vet # go vet ./...POST /auth/request email=<email>&workspace=<handle> → OTP code
POST /auth/verify email=<email>&code=<code> → Bearer token
POST /api/tasks title=<summary>&priority=<low|medium|high>&description=<optional> → handle=task_xxx
GET /api/tasks [?status=todo|in_progress|done] → list tasks
GET /api/tasks/<handle> → task details
PATCH /api/tasks/<handle> status=...&priority=...&title=...&description=... → updated task
DELETE /api/tasks/<handle> → deleted
GET /api/workspace → workspace info
todo, in_progress, done
Aliases accepted on create/update: open, new, pending → todo; doing, started, active → in_progress; completed, closed, finished → done
low, medium, high
Aliases accepted: p3 → low; p2, normal → medium; p1, urgent, critical → high
- Plain text (default):
handle=task_a1b2c title=Fix bug status=todo priority=high - JSON: add
Accept: application/jsonor?format=json
MIT