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 tackInstall Script
curl -fsSL https://raw.githubusercontent.com/syndg/tack/main/install.sh | shInstall a specific version:
curl -fsSL https://raw.githubusercontent.com/syndg/tack/main/install.sh | TACK_VERSION=v0.1.0-alpha.1 shGitHub 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.gzPrerequisites
Before using Tack, make sure these tools are available:
| Requirement | Minimum Version | Why |
|---|---|---|
| Git | 2.5+ | Worktree support, branch management |
| LLM credential | — | At least one provider credential or native runtime auth path |
Optional:
| Requirement | Why |
|---|---|
| Node.js / npm or Bun | Required if selecting Pi and asking Tack to install it |
| Daytona account | Required only for remote sandboxes |
| GitHub PAT | Required 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@latestInstall 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 versionUninstall
If you installed with Homebrew:
brew uninstall --cask tackFor manual installs, remove the binary yourself. To remove user-level runtime state:
rm -f /usr/local/bin/tack
rm -rf ~/.config/tackRemove <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 daemonRuntime state lives in two places:
| Location | Contents |
|---|---|
~/.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 setuptack 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 inittack 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 --jsontack 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.