Reference
HTTP API
REST API reference for the Tack daemon.
The daemon exposes a REST API on the configured listen address (default 127.0.0.1:9800).
Most workflow endpoints are project-scoped.
Target a project by sending either:
X-Tack-Project-ID: <project-id>
?project_id=<project-id>
If exactly one project is registered, Tack can infer the target. Otherwise the request must specify one.
| Method | Path | Description |
|---|
POST | /projects/register | Register or refresh a project |
GET | /projects | List registered projects |
GET | /projects/resolve?path=... | Resolve a project from a filesystem path |
GET | /projects/:id | Get one project |
POST | /projects/:id/relink | Move an existing project registration |
DELETE | /projects/:id | Remove a project |
{
"project_id": "0f8fad5b-d9cb-469f-a165-70867728950e",
"name": "tack",
"root_path": "/path/to/repo",
"config_path": "/path/to/repo/.tack/config.yaml"
}
| Method | Path | Description |
|---|
POST | /objectives | Create a new objective |
GET | /objectives | List all objectives |
GET | /objectives/:id | Get objective by ID |
GET | /objectives/:id/dossier | Get the discovery dossier for an objective |
PUT | /objectives/:id/dossier | Update the dossier for an objective |
GET | /objectives/:id/plan | Get plan for objective |
POST | /objectives/:id/execute | Trigger execution |
GET | /objectives/:id/run | Get the latest run snapshot for the objective |
{
"description": "Add pagination to list endpoints",
"blueprint": "standard"
}
The blueprint field is optional. If omitted, Tack resolves the default blueprint for the targeted project.
| Method | Path | Description |
|---|
POST | /plans | Create plan from planner output |
GET | /plans | List all plans |
GET | /plans/:id | Get plan with streams |
POST | /plans/:id/approve | Approve plan |
POST | /plans/:id/reject | Reject plan |
GET | /plans/:id/streams | List streams for plan |
| Method | Path | Description |
|---|
GET | /streams/:id | Get stream by ID |
GET | /streams/:id/diff | Get merge diff summary for a merged stream |
Run snapshots are the run-centric control boundary for execution state and interventions.
| Method | Path | Description |
|---|
GET | /runs/:id/snapshot | Get the current run snapshot |
POST | /runs/:id/command | Send an intervention command to a run |
{
"kind": "retry",
"stream_id": "stream_123",
"guidance": "Reuse the shared helper instead of duplicating logic"
}
Supported command kinds are approve, retry, abort, and kill.
| Method | Path | Description |
|---|
GET | /executions | List blueprint executions |
GET | /executions/:id | Get execution by ID |
POST | /executions/:id/approve | Approve a human gate |
POST | /executions/:id/retry | Retry a failed stream |
{
"guidance": "Try using the existing helper function instead"
}
| Method | Path | Description |
|---|
GET | /agents | List agent sessions |
GET | /agents/:id | Get agent session |
POST | /agents/:id/kill | Kill running agent |
| Method | Path | Description |
|---|
POST | /mail | Send a message |
GET | /mail | List messages (filterable) |
GET | /mail/:agentName/unread | Get unread messages |
POST | /mail/:id/read | Mark message read |
POST | /mail/:agentName/read-all | Mark all read |
| Method | Path | Description |
|---|
GET | /merge-queue | List merge entries |
GET | /merge-queue/:id | Get merge entry |
POST | /merge-queue/:id/retry | Retry failed merge |
| Method | Path | Description |
|---|
GET | /blueprints | List available blueprints for the targeted project |
GET | /blueprints/:id | Get a blueprint by id |
Blueprint identity is the id, not the filename.
| Method | Path | Description |
|---|
GET | /health | Health check |
GET | /status | Daemon status with uptime |
GET | /events | SSE event stream |