Ship small, reviewable PR stacks quickly without giving up safety.
stax installs both binaries: stax and the short alias st. This README uses st.
- Live docs: cesarferreira.github.io/stax
- Docs index in this repo: docs/index.md
- Replace one giant PR with a clean stack of small, focused PRs
- Keep shipping while lower-stack PRs are still in review
- Navigate the full stack and diffs from an interactive TUI
- Restack/merge with transactional safety and fast recovery (
st undo,st redo) - Run stack-aware merge/cascade workflows with CI/readiness checks
- Generate PR bodies and standup summaries with your preferred AI agent
- Work across multiple worktrees, including parallel AI-agent workflows
# Homebrew (macOS/Linux)
brew install cesarferreira/tap/stax
# Or cargo-binstall
cargo binstall staxDownload the latest binary from GitHub Releases:
# macOS (Apple Silicon)
curl -fsSL https://github.com/cesarferreira/stax/releases/latest/download/stax-aarch64-apple-darwin.tar.gz | tar xz
# macOS (Intel)
curl -fsSL https://github.com/cesarferreira/stax/releases/latest/download/stax-x86_64-apple-darwin.tar.gz | tar xz
# Linux (x86_64)
curl -fsSL https://github.com/cesarferreira/stax/releases/latest/download/stax-x86_64-unknown-linux-gnu.tar.gz | tar xz
# Move binary to ~/.local/bin and symlink `st` alias
mkdir -p ~/.local/bin
mv stax ~/.local/bin/
ln -s ~/.local/bin/stax ~/.local/bin/st
# If ~/.local/bin is not on your PATH, add it:
# echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc # or ~/.bashrcVerify install:
st --versionSet up GitHub auth first (required for PR creation, CI checks, and review metadata).
# Option A (recommended): import GitHub CLI auth
gh auth login
st auth --from-gh
# Option B: enter token interactively
st auth
# Option C: env var
export STAX_GITHUB_TOKEN="ghp_xxxx"By default, stax does not use ambient GITHUB_TOKEN unless you opt in with auth.allow_github_token_env = true.
# 1. Create stacked branches
st create auth-api
st create auth-ui
# 2. Inspect stack
st ls
# ◉ auth-ui 1↑
# ○ auth-api 1↑
# ○ main
# 3. Submit PRs for whole stack
st ss
# 4. Sync trunk and restack after merges
st rs --restackResult: two stacked branches, submitted as two linked PRs, then kept up to date with one sync/restack command.
Picked the wrong trunk branch? Run st init to reconfigure it interactively, or st init --trunk <branch> to set it directly.
Next steps:
| Command | What it does |
|---|---|
st |
Launch interactive TUI |
st ls |
Show stack with PR/rebase status |
st ll |
Show stack with PR URLs and details |
st create <name> |
Create a branch stacked on current |
st ss |
Submit full stack and create/update PRs |
st merge |
Merge PRs from stack bottom to current |
st merge --when-ready |
Wait/poll until mergeable, then merge |
st rs |
Sync trunk and clean merged branches |
st rs --restack |
Sync trunk and restack full stack |
st cascade |
Restack, push, and create/update PRs |
st undo / st redo |
Recover or re-apply risky operations |
st standup |
Summarize recent engineering activity |
st generate --pr-body |
Generate PR body with AI |
st run <cmd> (alias: st test <cmd>) |
Run a command on each branch in stack |
For complete command and flag reference: docs/commands/core.md and docs/commands/reference.md.
Merge from stack bottom up to your current branch with safety checks for CI/readiness.
# Merge from bottom -> current branch
st merge
# Wait for readiness explicitly before merging
st merge --when-ready
# Merge full stack regardless of current position
st merge --allRead more: docs/workflows/merge-and-cascade.md
stax snapshots branch state before destructive operations (restack, submit, reorder) so recovery is immediate when something goes wrong.
st restack
st undo
st redoRead more: docs/safety/undo-redo.md
Launch with no arguments to browse stacks, inspect diffs, and run common operations without leaving the terminal.
stRead more: docs/interface/tui.md
Work on multiple stacks in parallel without losing context. st worktree (alias st wt) creates and manages Git worktrees for your existing branches, with shell integration for transparent cd.
# One-time shell integration setup
st shell-setup --install # appends eval "$(stax shell-setup)" to ~/.zshrc
# Create a worktree for an existing branch
st worktree create feature/payments-api
# List all worktrees (* = current)
st worktree list
# Jump to a worktree (transparent cd via shell function)
st worktree go payments-api
# or the quick alias:
sw payments-api
# Remove when done
st worktree remove payments-apiShortcuts: st w (list), st wtc [branch] (create), st wtgo <name> (go), st wtrm <name> (remove).
Read more: docs/workflows/multi-worktree.md
Run multiple AI agents in isolated Git worktrees while preserving stack metadata and restack flows. st agent is title-based and includes editor integration and a registry.
# Create isolated worktrees for parallel tasks
st agent create "Add dark mode" --open-codex
st agent create "Fix auth refresh" --open
# Keep all agent branches rebased when trunk moves
st agent sync
# View and clean up
st agent list
st agent remove add-dark-mode --delete-branchRead more: docs/workflows/agent-worktrees.md
Use your configured AI agent to draft PR bodies and generate daily standup summaries.
# Generate/update PR body from branch diff + context
st generate --pr-body
# Spoken-style standup summary
st standup --summaryRead more: docs/integrations/pr-templates-and-ai.md and docs/workflows/reporting.md
If you want to...
- Install and configure quickly: docs/getting-started/install.md
- Learn stacked branch concepts: docs/concepts/stacked-branches.md
- Use day-to-day commands: docs/commands/core.md
- Explore full command/flag reference: docs/commands/reference.md
- Navigate branches efficiently: docs/commands/navigation.md
- Merge, cascade, and keep stacks healthy: docs/workflows/merge-and-cascade.md
- Work across multiple worktrees: docs/workflows/multi-worktree.md
- Use developer worktrees (
st worktree): docs/workflows/multi-worktree.md#stax-worktree - Use agent worktrees end-to-end: docs/workflows/agent-worktrees.md
- Configure auth/branch naming/remote behavior: docs/configuration/index.md
- Validate and repair metadata health: docs/commands/stack-health.md
AI/editor integration guides:
- Claude Code: docs/integrations/claude-code.md
- Codex: docs/integrations/codex.md
- Gemini CLI: docs/integrations/gemini-cli.md
- OpenCode: docs/integrations/opencode.md
- PR templates + AI generation: docs/integrations/pr-templates-and-ai.md
Shared skill/instruction file used across agents: skills.md
st lsis benchmarked against alternative stacked-branch CLIs and is typically much faster in this repo's benchmark setup.- stax is freephite/graphite compatible for common stacked-branch workflows.
Details:
- Benchmarks: docs/reference/benchmarks.md
- Compatibility: docs/compatibility/freephite-graphite.md
st config
st config --reset-ai
st config --reset-ai --no-promptConfig file location:
~/.config/stax/config.toml
Common settings include branch naming format, submit stack-links placement, auth source preferences, and enterprise GitHub API host overrides.
Example:
[submit]
stack_links = "body" # "comment" | "body" | "both" | "off"If you want stax to reset and immediately re-prompt for the AI agent/model, run:
st config --reset-aiUse st config --reset-ai --no-prompt to only clear the saved pairing without opening the picker.
Read full config reference: docs/configuration/index.md
- License: MIT
- Before opening a PR, run the repo test command policy from AGENTS.md:
make test
# or
just testFor project docs and architecture, start at docs/index.md.

