Last updated 2026-05-07
stax
A local-first toolchain for shipping software fast. Three components, one developer experience: a stacked-diff CLI, a GitHub-Actions-compatible runner that executes workflows on your machine, and a web dashboard for review, triage, repo-backed secrets, and deployment visibility.
What is stax?
stax replaces the GitHub-only feedback loop with a local one. Your workflows run on your laptop the same way they would in CI, your diffs are reviewable before they ever touch the network, and your dashboard streams every job in real time. Secrets can live in git as SOPS-encrypted files, and production deployment records can be mirrored to a GitHub issue. Nothing is locked behind a SaaS — every component runs on your machine.
The repository ships:
- CLI — a single
staxbinary (Go, with a legacy TypeScript implementation) that wraps git in a stacked-diff workflow. Cobra-powered, no git surface area exposed unless you ask. - Runner — a Node.js server (Express + TypeScript)
that parses
.github/workflows/, evaluates GitHub Actions expressions, resolves marketplace actions, and runs the whole pipeline on your machine. Exposes a REST API on:4800and an SSE event stream. It can mirror repo-backed SOPS secrets into the local runner store and maintain a structured deployment ledger. - Web dashboard — a Next.js app that lists workflows, streams logs, browses runs and artifacts, and renders code reviews in a Monaco-backed diff viewer. The dashboard also exposes secrets status, recipients, verify/sync actions, GitHub sync, and deployment log configuration.
- Built-in actions — like
actions/video-capture, a Playwright-based action that records walkthrough videos for your web/iOS/Android apps.
Why a local runner?
- Iteration speed. No more pushing a commit to test
a workflow change. Edit the YAML, hit
stax run, watch the SSE stream. - Cost. Long matrix builds, big test suites, video capture — all free on hardware you already own.
- Air-gapped. Run private CI without sharing your code with a hosted provider.
- Sandbox. Each run gets an isolated worktree (or APFS copy-on-write clone on macOS) so concurrent runs never stomp each other's working tree.
- Compatibility. Workflows written for GitHub Actions
Just Work — including matrix strategies with
fail-fastandmax-parallel, reusable workflows (local + remote), and composite/Node/Docker actions from the marketplace. - Secrets. Keep
infra/secrets/prod.enc.yamlin git, encrypt it to each developer or CI recipient, and let Stax decrypt/export/sync it for local and production workflows. - Auditability. Production runs with tracked
environment:values are written to.stax/deployments.jsonland can be mirrored to a GitHub issue as deployment-log comments.
The lifecycle
1. Clone and start a feature
stax clone myorg/my-appcd my-app
stax feature "user auth"2. Save logical changes as stacked diffs
# edit code...stax diff "Add login form"
# edit more code...stax diff "Add JWT validation"
stax diffs # see the stack# D1 Add login form (3 files)# D2 Add JWT validation (2 files)3. Run CI locally
# In one terminalstax runner start
# In anotherstax run cistax runsstax runs logs <run-id>
# Or watch live in the browserstax dashboard4. Add repo-backed secrets when deployments need them
brew install sopsstax secrets keygenstax secrets init --env productionstax secrets edit --env productionstax secrets verifystax secrets sync runner5. Submit and land
stax submit # opens a PR with the stacked diffs# ... reviews / iterations ...stax land # squash-merges to mainHow the components fit together
┌──────────────────┐ HTTP / SSE ┌────────────────────┐│ stax CLI │ ─────────────────▶ │ stax runner ││ (Go binary) │ ◀───────────────── │ (Node REST :4800) │└────────┬─────────┘ └─────────┬──────────┘ │ │ spawns │ gh CLI / gh API ▼ ▼ ┌────────────────────────┐ ┌───────────┐ │ Workflow engine │ │ GitHub │ │ parser → scheduler → │ │ remote │ │ matrix → step-runner │ └───────────┘ └─────────┬──────────────┘ │ event bus ▼ ┌────────────────────────┐ │ stax web dashboard │ │ (Next.js app on :3000) │ └────────────────────────┘Where to next
- Installation — install the CLI and start the runner.
- Quick start — your first stacked-diff feature, end-to-end.
- Runner overview — REST API, SSE, sandbox model.
- Secrets & backends — git-backed SOPS + age, runner sync, and vaults.
- GitHub sync & deployment ledger — issues, webhooks, and production logs.
- CLI command reference — every flag, every subcommand.
- Architecture — how the pieces connect.