Tack
Getting Started

Installation

Install Tack and set up your first project.

Install Options

Tack is distributed as a binary-first CLI. You do not need Go unless you want to build from source.

Homebrew

brew tap syndg/tack
brew install --cask tack

Install Script

curl -fsSL https://raw.githubusercontent.com/syndg/tack/main/install.sh | sh

Install a specific version:

curl -fsSL https://raw.githubusercontent.com/syndg/tack/main/install.sh | TACK_VERSION=v0.1.0-alpha.1 sh

GitHub Release Binary

Download the archive for your OS and architecture from GitHub Releases, extract it, then move tack onto your $PATH.

Published archives use this shape:

tack_Darwin_arm64.tar.gz
tack_Darwin_x86_64.tar.gz
tack_Linux_arm64.tar.gz
tack_Linux_x86_64.tar.gz

Prerequisites

Before using Tack, make sure these tools are available:

RequirementMinimum VersionWhy
Git2.5+Worktree support, branch management
LLM credentialAt least one provider credential or native runtime auth path

Optional:

RequirementWhy
Node.js / npm or BunRequired if selecting Pi and asking Tack to install it
Daytona accountRequired only for remote sandboxes
GitHub PATRequired only when the selected blueprint creates PRs on GitHub

If you build from source or install with go install, you also need Go 1.25.4+.

Go Install

go install github.com/syndg/tack/cmd/tack@latest

Install from Source

git clone https://github.com/syndg/tack.git
cd tack
go build -o tack ./cmd/tack/

Move the binary to your $PATH:

mv tack /usr/local/bin/

Verify

tack version

Uninstall

If you installed with Homebrew:

brew uninstall --cask tack

For manual installs, remove the binary yourself. To remove user-level runtime state:

rm -f /usr/local/bin/tack
rm -rf ~/.config/tack

Remove <repo>/.tack/ from any project where you no longer want Tack config or local runtime state.

What Gets Installed

Tack is a single binary. tack setup can configure the daemon as a user service when you select that option. You can also run the daemon in the foreground:

tack daemon install
tack daemon start
# or
tack daemon

Runtime state lives in two places:

LocationContents
~/.config/tack/User-level config, credentials, activity logs, data directory
<repo>/.tack/Per-project config, blueprints, rules, SQLite database

The .tack/ directory is created by tack init. Sensitive files like tack.db and project-id are gitignored. Config, blueprints, and rules are intentionally committable so your team shares them.

Global Setup And Project Init

Run global setup once per machine/user:

tack setup

tack setup records explicit global selections for daemon service mode, runtime, provider/auth binding, planner model, agent model, small-task model, sandbox provider, blueprint, and quality gates. It is resumable. Non-interactive runs must provide required inputs with flags, for example --runtime, --provider, --auth-mode, --planner-model, --agent-model, --small-task-model, --sandbox-provider, --blueprint, and repeated --quality-gate values.

Run project init inside each repository:

cd your-project
tack init

tack init requires completed global setup. It writes project-specific overrides only when selected, creates .tack/project-id, registers the project with the daemon, updates .gitignore for local Tack artifacts, and validates the effective configuration before keeping files. Setup and init summaries print each effective value with its source, such as (source: global) or (source: project).

Check readiness any time:

tack doctor
tack doctor --json

tack doctor validates global setup, project config, daemon config, runtime/auth state, and Pi visibility where applicable. Findings include source, evidence, severity, and fix text.

PR Workflow Requirements

PR requirements come from the selected blueprint. If the blueprint includes PR creation, Tack validates GitHub support and push permission before execution. PR creation is GitHub-only in this release scope; non-GitHub PR creation is reported as unsupported rather than using gh as a fallback.

Next Steps

On this page