Tack
Getting Started

First Objective

Submit your first objective and watch Tack work.

Start the Daemon

tack daemon

The daemon is machine-wide and reads the user config layer. Open a new terminal for project-scoped CLI commands.

Submit an Objective

Start with something small and scoped:

tack plan "Add a health check endpoint at GET /health that returns 200 OK"

This is a good first objective because it is small enough to complete quickly, specific about what to build, and easy to verify.

Tack creates an objective for the current registered project and starts the run. Discovery explores the codebase, the planner decomposes the objective into streams with file scopes and dependencies, and presents the plan for your review.

Review the Plan

tack plans
tack show <plan-id>

The plan shows each stream's title, description, file scope, and dependency chain. Review it before approving.

What to look for:

  • File scopes — do they cover the right files? Are they too broad or too narrow?
  • Dependencies — are the ordering constraints correct?
  • Stream count — does the decomposition make sense? Too many streams for a small change is a sign the planner over-decomposed.

If the plan does not look right, reject it and submit a clearer objective:

tack reject <plan-id>
tack plan "A more specific description pointing to the right files and modules"

See Writing Good Objectives for patterns.

Approve

tack approve <plan-id>

Execution begins. Tack schedules streams based on dependencies and the concurrency limit.

Watch Progress

tack watch

You will see a live stream of agent activity:

18:16:12 [stream-1] builder: read src/schemas.ts
18:16:15 [stream-1] builder: edit src/routes/expenses.ts
18:16:19 [stream-2] builder: $ bunx tsc --noEmit
18:16:23 [stream-1] builder: done: Added PATCH endpoint
18:16:25 [stream-1] lint passed ✓
18:16:38 [stream-1] quality_gate_failure -> rerun_previous_agent (1/4)
18:16:52 [stream-1] recovery blocked: retry budget exhausted; awaiting human guidance
18:20:04 [stream-1] recovery resumed: guidance applied
18:47:35 [stream-1] merged ✓

Filter the Stream

tack watch --summary                         # Status changes only
tack watch --stream <stream-id>               # One stream
tack watch --agent <agent-id>                 # One agent
tack watch --verbose                          # More tool and message detail

Check Results

When all streams complete, Tack merges everything and creates a PR.

tack status                                  # Daemon status
tack merge                                   # Merge queue state
tack merge diff <stream-id>                  # What a stream changed

If some streams failed, the objective becomes partial — the merged streams are preserved and you can handle the rest separately. If a stream is blocked waiting for human input, you can send guidance:

tack mail <agent-name>                       # See what the agent needs
tack mail send <agent-name> "Hint" "Try..." --objective <id>

See Recovery & Retries for the full recovery workflow.

Choose a Blueprint Explicitly

If you want a non-default workflow, pick a blueprint by id:

tack plan "Fix the typo in the README" --blueprint standard

Blueprint IDs are resolved from the loaded blueprint registry, including shipped defaults plus any user or project overrides. See Blueprints for how blueprints work.

Common Issues

ProblemSolution
Daemon not reachableStart the daemon: tack daemon
Plan looks wrongReject and resubmit with a clearer objective
Agent stuck in a loopCheck tack logs <agent-id>, then send guidance with tack mail send <agent-name> ... --objective <id>
Objective blockedUse tack watch or tack agents to identify the blocked agent, then open tack mail <agent-name> and send guidance
Quality gates failingCheck tack watch --verbose for the gate output
Merge conflictRetry: tack merge retry <entry-id>

See the Troubleshooting guide for detailed solutions.

On this page