Tack
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).

Project Targeting

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.

Projects

MethodPathDescription
POST/projects/registerRegister or refresh a project
GET/projectsList registered projects
GET/projects/resolve?path=...Resolve a project from a filesystem path
GET/projects/:idGet one project
POST/projects/:id/relinkMove an existing project registration
DELETE/projects/:idRemove a project

POST /projects/register

{
  "project_id": "0f8fad5b-d9cb-469f-a165-70867728950e",
  "name": "tack",
  "root_path": "/path/to/repo",
  "config_path": "/path/to/repo/.tack/config.yaml"
}

Objectives

MethodPathDescription
POST/objectivesCreate a new objective
GET/objectivesList all objectives
GET/objectives/:idGet objective by ID
GET/objectives/:id/dossierGet the discovery dossier for an objective
PUT/objectives/:id/dossierUpdate the dossier for an objective
GET/objectives/:id/planGet plan for objective
POST/objectives/:id/executeTrigger execution
GET/objectives/:id/runGet the latest run snapshot for the objective

POST /objectives

{
  "description": "Add pagination to list endpoints",
  "blueprint": "standard"
}

The blueprint field is optional. If omitted, Tack resolves the default blueprint for the targeted project.

Plans

MethodPathDescription
POST/plansCreate plan from planner output
GET/plansList all plans
GET/plans/:idGet plan with streams
POST/plans/:id/approveApprove plan
POST/plans/:id/rejectReject plan
GET/plans/:id/streamsList streams for plan

Streams

MethodPathDescription
GET/streams/:idGet stream by ID
GET/streams/:id/diffGet merge diff summary for a merged stream

Runs

Run snapshots are the run-centric control boundary for execution state and interventions.

MethodPathDescription
GET/runs/:id/snapshotGet the current run snapshot
POST/runs/:id/commandSend an intervention command to a run

POST /runs/:id/command

{
  "kind": "retry",
  "stream_id": "stream_123",
  "guidance": "Reuse the shared helper instead of duplicating logic"
}

Supported command kinds are approve, retry, abort, and kill.

Executions

MethodPathDescription
GET/executionsList blueprint executions
GET/executions/:idGet execution by ID
POST/executions/:id/approveApprove a human gate
POST/executions/:id/retryRetry a failed stream

POST /executions/:id/retry

{
  "guidance": "Try using the existing helper function instead"
}

Agents

MethodPathDescription
GET/agentsList agent sessions
GET/agents/:idGet agent session
POST/agents/:id/killKill running agent

Mail

MethodPathDescription
POST/mailSend a message
GET/mailList messages (filterable)
GET/mail/:agentName/unreadGet unread messages
POST/mail/:id/readMark message read
POST/mail/:agentName/read-allMark all read

Merge Queue

MethodPathDescription
GET/merge-queueList merge entries
GET/merge-queue/:idGet merge entry
POST/merge-queue/:id/retryRetry failed merge

Blueprints

MethodPathDescription
GET/blueprintsList available blueprints for the targeted project
GET/blueprints/:idGet a blueprint by id

Blueprint identity is the id, not the filename.

System

MethodPathDescription
GET/healthHealth check
GET/statusDaemon status with uptime
GET/eventsSSE event stream

On this page