Concepts
Streams
Parallel work units with file scopes and dependencies.
What is a Stream?
A stream is a unit of parallel work within a plan. Each stream has:
- Title — what the stream does
- Description — detailed task specification for the agent
- File scope — glob patterns defining which files the stream can modify
- Dependencies — other streams that must complete before this one starts
Parallel Execution
Streams without dependencies run in parallel. Tack schedules streams based on:
- Dependencies — stream B won't start until stream A completes
- Concurrency limit — configurable max concurrent agents
agents:
max_concurrent: 4File Scope
Each stream gets a file scope — a set of glob patterns that define its territory:
Stream 1: ["src/api/routes/**", "src/api/middleware/**"]
Stream 2: ["src/components/**", "src/hooks/**"]File scope affects:
- Quality gates — gate failures are only attributed to the stream if errors are in its files
- Agent guidance — agents know their boundaries
Dependencies
Streams can depend on other streams:
Stream 1: "Add database migration" (no dependencies)
Stream 2: "Add API endpoint" (depends on Stream 1)
Stream 3: "Add frontend form" (depends on Stream 2)Tack respects dependencies at both execution time (scheduling) and merge time (merge ordering).
Stream Lifecycle
pending → executing → completed → merge_ready → merging → merged
↘ ↗
failed ──────────── (retry) ── pending ─┘