freshcrate
Home > Frameworks > squad-station

squad-station

Message routing and orchestration for AI agent squads

Description

Message routing and orchestration for AI agent squads

Release History

VersionChangesUrgencyDate
0.9.1Imported from npm (0.9.1)Low4/21/2026
v0.9.1 Detect and auto-repair stale squad-station hook binary paths in `.claude/settings.json`. Resolves a class of failures where hooks point to moved or deleted binaries (e.g. after upgrading from `~/.cargo/bin` to `~/.squad/bin` in v0.8.17). ### Added - New `src/hook_parser.rs` module: `extract_binary_path`, `is_stale`, `heal_stale_squad_paths` - `squad-station doctor` Hooks check now has a phase-2 scan that validates each hook's binary exists and is executable; reports `[FAIL]` with location (`StMedium4/10/2026
v0.9.0 Health-check tooling for squad-station projects: validate SDD playbooks during init, and diagnose setup issues with the new doctor subcommand. ### Added - `squad-station doctor` subcommand — runs 6 health checks (config, SDD playbooks, tmux, database, hooks, version) with `--json` support - `sdd-playbook` config field in squad.yml — declare required SDD playbooks (bmad, superpowers, gsd, openspec) - SDD playbook validation during `squad-station init` — blocks init if declared playbooks are notMedium4/10/2026
v0.8.22 Fix PATH auto-setup to use `.zshenv` instead of `.zshrc` so Claude Code agents in tmux sessions can find the `squad-station` binary. Non-interactive shells (used by Claude Code's Bash tool) only source `.zshenv`, not `.zshrc`. ### Fixed - **PATH setup uses `.zshenv`** — On macOS, install now writes `export PATH` to `~/.zshenv` instead of `~/.zshrc`, ensuring AI agents in tmux sessions can find `squad-station` binary in non-interactive shells - **Settings.json uses relative binary name** — HooMedium4/6/2026
v0.8.21 Improved install reliability: auto-adds PATH to shell profile, ignores npx cache wrappers in duplicate detection, and makes init more resilient. ### Fixed - **Auto PATH setup** — Install now auto-appends `~/.squad/bin` to shell profile (`~/.zshrc`/`~/.bashrc`) instead of just printing instructions - **npx cache bypass** — `verifyInPath` and `checkDuplicateBinary` now ignore npx cache / `node_modules/.bin` wrappers when checking PATH - **Resilient init** — `squad-station init` handles edge casMedium4/6/2026
v0.8.20Release v0.8.20 Medium4/6/2026
v0.8.19Release v0.8.19 Medium4/6/2026
v0.8.18 Moved duplicate binary detection from `squad-station init` health check to the npm install flow, where it belongs. ### Changed - **Duplicate detection in install flow** — `npx squad-station install` now warns when `which squad-station` resolves to a different binary than the one just installed, with instructions to remove the conflicting copy - **Removed from init health check** — `squad-station init` no longer checks for duplicate binaries (moved to install) --- Medium4/6/2026
v0.8.17 Improved binary installation, added uninstall command, and duplicate binary detection. ### Added - **Uninstall command** — `npx squad-station uninstall` finds and removes all squad-station binaries across known locations (including legacy paths) with interactive confirmation - **Duplicate binary detection** — Health check now warns when multiple squad-station binaries exist at different paths, showing which is active and which to remove ### Changed - **Install to ~/.squad/bin** — Default biMedium4/6/2026
v0.8.16 Fix hook commands resolving symlinks to dev build path instead of using the installed path. ### Fixed - **Stop resolving symlinks in `resolve_binary_path()`** — Remove `canonicalize()` so hooks use the installed path (e.g. `~/.cargo/bin/squad-station`) instead of resolving to `target/release/squad-station` --- Medium4/6/2026
v0.8.15 Two bug fixes: reliable Telegram notification content and non-destructive hook installation. ### Fixed - **Telegram notification content** — Use `last_assistant_message` from stdin with blocking read and collect all text blocks, replacing broken thread+timeout approach that was missing agent response content - **Idempotent hook installation** — `squad-station init` now merges into existing hook configs instead of overwriting them, preserving user-added entries via new `upsert_hook_entry`/`repMedium4/5/2026
v0.8.14 Fix hook commands failing when `squad-station` binary is not on PATH in the hook execution environment. ### Fixed - **Use absolute binary path in hook commands** — Hook install now resolves the full path to `squad-station` (e.g. `/Users/you/.cargo/bin/squad-station`) instead of relying on PATH, preventing "command not found" errors in provider hook environments --- Medium4/4/2026
v0.8.13 Fix `run.js` VERSION still pointing to `0.8.11`, causing `npx squad-station` to download the wrong binary. ### Fixed - **Sync `run.js` VERSION to `0.8.13`** — Ensures `npx squad-station install` downloads the correct release binary --- Medium4/4/2026
v0.8.12## What's New **Detailed Telegram notifications with transcript reading** ### Changes - Read hook input JSON from stdin (Claude Code passes transcript_path) - Parse JSONL transcript files to extract last assistant message - Fallback chain: transcript > hook message > generic finished - HTML escape for Telegram safety - TTY guard + 2s timeout to prevent stdin blocking - Remove redundant --event flag - update command re-installs telegram hooks ### Fixes - Fix stdin blocking when no pipe connectMedium4/4/2026
v0.8.0Release v0.8.0 Medium4/4/2026
v0.8.11 Remove accidentally committed Telegram Bot Token and prevent future secret leaks. ### Fixed - **Remove leaked Telegram Bot Token** — Deleted `scripts/hook-notify-agent/` directory which contained a `.env` file with a Telegram Bot Token (GitHub secret scanning alert) - **Add `.env` to `.gitignore`** — Prevents future accidental commits of environment files containing secrets --- Medium4/4/2026
v0.8.10 Harden notify-telegram hook to never fail the provider, and clean up codebase duplication ahead of public release. ### Fixed - **notify-telegram always exits 0** — Silently ignores `send_telegram` errors so provider hooks never fail due to Telegram API issues ### Changed - **Extract shared `log_to_squad()` helper** — Replaces 3 duplicate logging functions (`log_signal`, `log_notify`, `log_watch`) with a single shared implementation in `helpers.rs` - **Remove duplicate `pad_colored()`** — `lMedium4/4/2026
v0.8.9 Remove dead code and unused dependencies to slim down the binary and simplify the CLI surface. ### Removed - **CLI subcommands:** `ui` (TUI dashboard), `view` (tmux tiled view), `register` (runtime agent registration), `reset` (overlapped with `clean`) - **Dependencies:** `ratatui` and `crossterm` crates no longer needed --- Medium4/3/2026
v0.8.8 Replaces the shell-based notify-telegram.sh with a native Rust notify-telegram subcommand for faster, more reliable Telegram notifications. Also fixes init to clean up stale Codex hooks from previous installations. ### Added - **Native `notify-telegram` Rust subcommand** — Replaces the external `notify-telegram.sh` shell script with a built-in subcommand, eliminating the shell dependency and improving reliability and performance. ### Fixed - **Stale Codex hook cleanup on re-init** — `squad-Medium4/3/2026
v0.8.7 Prevents spurious Telegram notifications when the hook fires outside tmux agent sessions (e.g., from the orchestrator or a non-agent terminal). ### Fixed - **Telegram hook now exits early for non-agent sessions** — When `TELE_NOTIFY_AGENTS` is set to a specific agent list (not `all`), sessions without a tmux session name (i.e., not running inside an agent pane) now exit immediately instead of falling through to the notification logic. --- Medium4/2/2026
v0.8.6 Removes the PostToolUse hook from Codex provider hook installation. Codex agents run in `--yolo` mode (full auto-approve) and never stop to ask for user input. The `Bash` matcher — the only one available for Codex PostToolUse — fired on every tool call, sending duplicate `[SQUAD INPUT NEEDED]` signals that confused the orchestrator. ### Fixed - **Removed PostToolUse hook for Codex provider** — `install_codex_hooks()` no longer installs a PostToolUse hook with the `Bash` matcher. This was a deMedium4/1/2026
v0.8.5 Fixes the root cause of broken signal delivery when agents run inside a git worktree. `find_project_root()` now detects worktrees and resolves to the main working tree, ensuring all commands share the same database regardless of which cwd they run from. ### Fixed - **Worktree-aware project root resolution** — `find_project_root()` uses `git rev-parse --git-dir` vs `--git-common-dir` to detect worktrees and prefer the main repo's `squad.yml` and `.squad/station.db`. Previously, running from a Medium3/31/2026
v0.8.4 Fixes silent Telegram notification failure when Claude Code runs hooks from a git worktree. The generated hook command used a relative path (`"."`) for `SQUAD_PROJECT_ROOT`, which resolves to the wrong directory when the hook runner's cwd differs from the project root. ### Fixed - **Telegram hook uses absolute paths** — `install_telegram_hooks()` now canonicalizes `project_root` so the generated `SQUAD_PROJECT_ROOT` and script path in `settings.json` are always absolute, regardless of how theMedium3/31/2026
v0.8.3 Fixes two issues disrupting user workflows: the bootstrap block that was auto-injecting into CLAUDE.md on every `squad-station init`, and Telegram notification hooks firing on every tool call instead of only on task completion. ### Fixed - **Removed bootstrap block injection** — `squad-station init` no longer writes a `<!-- squad-station:bootstrap-start -->` block into the user's CLAUDE.md / GEMINI.md / AGENTS.md. The orchestrator context is available via the slash command file, making the boMedium3/30/2026
v0.8.2 Fixes a UX bug where `npx squad-station@latest install` skipped example configs, SDD playbooks, and rules when they already existed, requiring `--force`. These are package-provided reference templates that should always be refreshed on install. ### Fixed - **examples/ always overwritten** — Example config templates are now refreshed on every install without `--force` - **sdd/ always overwritten** — Playbook documentation is now refreshed on every install (also fixed in `bin/run.js` which stilMedium3/30/2026
v0.8.1 Fixes version mismatches introduced in v0.8.0, adds Telegram notification templates to all example configs, and cleans up code style (fmt + clippy). ### Fixed - **Version sync** — `run.js` and root `package.json` now correctly report v0.8.1 (were stuck on v0.7.23 in v0.8.0) - **Code style** — Applied `cargo fmt` formatting and fixed clippy `unnecessary_map_or` warning ### Added - **Telegram config in examples** — All example `squad.yml` files now include the `telegram:` section template - *Medium3/30/2026
v0.7.23 Reinforced the "no polling" message in `squad-orchestrator.md` so the orchestrator stops using `tmux capture-pane` loops to check agent progress. ### Changed - **Orchestrator context: "NO POLLING" section** — Replaced soft "you DO NOT need to" with explicit `CRITICAL: DO NOT poll agents`. Shorter, more direct, harder to ignore. --- Medium3/29/2026
v0.7.22 Simplified the init session conflict detection — now uses a straightforward name match against live tmux sessions instead of querying each session's working directory. ### Changed - **Conflict check uses name-only matching** — Replaced CWD-based comparison (`session_cwd` + `canonicalize`) with a simple `list_live_session_names().contains()` check. Much less code, same result. - Removed unused `tmux::session_cwd()` helper. --- Medium3/29/2026
v0.7.21 `squad-station init` now checks if planned tmux session names are already in use by another project, preventing accidental collisions when `squad.yml` is copied without changing the `project:` field. ### Added - **Session conflict detection** — Before creating any sessions, `init` queries each planned session's CWD via `tmux display-message`. If a session exists but its working directory differs from the current project root, init aborts with a clear error showing which sessions conflict and Medium3/29/2026
v0.7.20 Refined all bundled SDD (Solution Design Document) playbooks with streamlined content. ### Changed - **bmad-playbook.md** — Streamlined BMAD method playbook - **gsd-playbook.md** — Streamlined GSD playbook - **openspec-playbook.md** — Streamlined OpenSpec playbook - **superpowers-playbook.md** — Streamlined Superpowers playbook --- Medium3/29/2026
v0.7.19 `squad-station update` now installs hooks for all providers (not just the orchestrator's), and Codex agents get the required `config.toml` feature flag so their Stop hook actually fires. ### Fixed - **Update housekeeping only installed hooks for orchestrator provider** — `run_housekeeping` called `auto_install_hooks` with only the orchestrator's provider (e.g. `claude-code`), skipping worker providers like `codex` or `gemini-cli`. Now it collects all unique providers across orchestrator + worMedium3/29/2026
v0.7.18 `squad-station update` now regenerates `squad-orchestrator.md` after every run, so the orchestrator always sees the current agent list including newly added or removed agents. ### Fixed - **`squad-orchestrator.md` not updated after `update`** — Adding a new agent via `update` launched the session and updated the monitor, but the orchestrator's context file still listed the old agents. Now `context::run(false)` is called after every `update` (both the changes path and no-changes path), ensurinMedium3/29/2026
v0.7.17 `squad-station update` now rebuilds the monitor session whenever the agent set changes, so new agents appear as panes immediately after update. ### Fixed - **Monitor not updated after adding new agent** — When `update` detected new/removed/provider-changed agents, the monitor session was left stale. Now `ensure_monitor(force: true)` kills and recreates the monitor after any agent changes so its panes always reflect the current squad. - **No-change path unaffected** — When there are no agent cMedium3/29/2026
v0.7.16 Antigravity is not a CLI agent and has been completely removed from squad-station. All providers now use tmux sessions — the DB-only mode is gone. ### Removed - **`antigravity` provider** — Removed from `VALID_PROVIDERS`, `is_db_only()` method, all conditional branches in `init`, `signal`, `notify`, `helpers`, and `update` - **`is_db_only()` method** on `AgentConfig` — No longer needed; every provider is tmux-based - **DB-only orchestrator path** in `init` — Orchestrator always launches in a Medium3/29/2026
v0.7.15 `squad-station update` now automatically recreates the monitor session if it is missing or dead, completing the full recovery from the v0.7.12 bug. ### Fixed - **Monitor session not recovered after update** — Even after v0.7.13 stopped killing the monitor, a monitor that was already dead (killed by the v0.7.12 bug) would remain dead after every `update` call. `update` now calls `ensure_monitor()` which checks if `<project>-monitor` is alive and recreates it via `tmux create_view_session` if nMedium3/29/2026
v0.7.14 Adds a regression test that enforces `run_housekeeping` must never kill any tmux sessions, preventing a repeat of the v0.7.12 monitor-killing bug. ### Added - **Regression test `test_housekeeping_never_kills_any_sessions`** — `run_housekeeping` now returns `Vec<String>` (killed sessions) instead of `()`. The test asserts this Vec is always empty. If anyone re-adds `kill_session` to housekeeping, the test fails immediately with a descriptive message. - **`debug_assert!` in production path** — Medium3/29/2026
v0.7.13 Fixes a bug where `squad-station update` would kill the monitor tmux session without relaunching it, causing the monitor to go missing after every update call. ### Fixed - **`squad-station update` kills monitor session** — `run_housekeeping` was killing `<project>-monitor` tmux session as part of cleanup but never relaunching it. Removed the kill-monitor logic since `update` has no responsibility over the monitor session — it should be left running untouched. --- Medium3/29/2026
v0.7.12 Adds `squad-station update` — a soft update that syncs a running squad with changes in `squad.yml` without tearing down existing sessions. ### Added - **`squad-station update`** — Soft squad update command: - Diffs `squad.yml` agents against DB agents and categorises each as: `[NEW]`, `[REMOVED]`, `[WARN] provider changed`, or `[OK] unchanged` - Launches new agents that appear in `squad.yml` but not in DB - Kills and relaunches agents whose provider has changed - Skips agents currentlMedium3/29/2026
v0.7.11 Adds `squad-station uninstall` to cleanly remove squad-station from a project without leaving behind stale hooks, files, or running sessions. ### Added - **`squad-station uninstall`** — Full project teardown command: - Kills all squad tmux sessions and stops watchdog daemon - Removes squad-station hook entries from provider settings (`.claude/settings.json`, `.codex/hooks.json`, `.gemini/settings.json`) — preserves non-squad hooks - Removes the bootstrap block (`<!-- squad-station:bootsMedium3/28/2026
v0.7.10 SDD playbooks are now always overwritten on every `npx squad-station install`, ensuring users always get the latest version without needing `--force`. ### Fixed - **SDD playbooks not updating on reinstall** — Previously, `install` skipped `.squad/sdd/*.md` files if they already existed, silently leaving users on outdated playbooks. Now they are always overwritten since SDD files are managed entirely by squad-station and not user-editable. --- Medium3/28/2026
v0.7.9 Fixes the Codex agent launch command from `--full-auto` to `--yolo`. ### Fixed - **Codex launch flag** — `squad-station init` now launches Codex agents with `codex --yolo` (was incorrectly using `codex --full-auto` which is not a valid flag) --- Medium3/28/2026
v0.7.8 Adds OpenAI Codex CLI as a first-class provider alongside `claude-code` and `gemini-cli`. Codex agents can now be orchestrated end-to-end: auto-installed hooks, model validation, launch command generation, and context injection. ### Added - **Codex provider support** — `provider: codex` is now a valid first-class provider in `squad.yml` - **7 Codex model slugs** — validated in config: `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.3-codex`, `gpt-5.2-codex`, `gpt-5.2`, `gpt-5.1-codex-max`, `gpt-5.1-codex-mMedium3/28/2026
v0.7.7## OpenAI Codex Integration + README Rewrite v0.7.7 adds **OpenAI Codex** as a first-class provider, making Squad Station the first orchestration tool to natively support Claude Code, Gemini CLI, and Codex in a single unified workflow. ### Added — Codex Provider - **New provider: `codex`** — Full integration with OpenAI Codex CLI hooks system - **Hook auto-install** — `squad-station init` automatically creates `.codex/hooks.json` with Stop + PostToolUse hooks - **Model validation** — 7 supporMedium3/28/2026
v0.7.6 Added tiered tool model for the orchestrator template — orchestrator acts as a PM who reads dashboards, not a developer who reads code. ### Fixed - **Orchestrator self-research gap** — The generated `squad-orchestrator.md` forbade writing code but did not prevent the orchestrator from using Read, Bash, grep, or other tools to self-research. Result: orchestrator would read files and run git commands directly instead of delegating to agents. ### Added - **Tiered tool restrictions section** — Medium3/25/2026
v0.7.5 Removes RECONCILE logic that was prematurely completing tasks and causing signal loss. Strips the watchdog down to a pure health monitor. ### Fixed - **RECONCILE causing signal loss** — RECONCILE was marking tasks as completed BEFORE agents actually finished. When the real stop hook fired, it found no pending task and skipped orchestrator notification. Removed all task-completion logic from both `reconcile` (when called by watchdog) and the watchdog itself. ### Changed - **Watchdog is now hMedium3/25/2026
v0.7.4 Fixes bootstrap block writing to the wrong file path and strengthens orchestrator compliance language. ### Fixed - **Bootstrap block file path** — `inject_bootstrap_block()` was writing to `.claude/CLAUDE.md` and `.gemini/GEMINI.md` inside subdirectories, but Claude Code reads `CLAUDE.md` from the project root and Gemini reads `GEMINI.md` from the project root. Fixed `provider_doc_paths()` to return the correct root-level paths. ### Changed - **Bootstrap block wording** — Replaced passive "Medium3/24/2026
v0.7.3 Ensures the orchestrator automatically knows its role after `/clear` and context compact — no manual re-prompting needed. ### Added - **Orchestrator bootstrap block** — `squad-station init` now injects a lightweight bootstrap section into the provider's project doc file (`.claude/CLAUDE.md` for Claude Code, `.gemini/GEMINI.md` for Gemini CLI). This file is always loaded into context, surviving `/clear` and context compact. Includes a tmux session-name guard so worker agents ignore it. IdempotMedium3/24/2026
v0.7.2 Fixes npm installer issues that prevented clean upgrades and macOS Gatekeeper blocks on downloaded binaries. ### Fixed - **Binary upgrade removes stale symlinks** — `npx squad-station install` now unlinks the old binary before downloading when a version mismatch is detected. Fixes upgrade failures when `~/.cargo/bin/squad-station` is a symlink from `cargo install`. - **macOS Gatekeeper bypass** — Strips `com.apple.quarantine` and `com.apple.provenance` xattr after downloading the binary, prevMedium3/24/2026
v0.7.0Auto-install SDD git workflow rules during squad initialization, plus three watchdog reliability fixes. ### Added - **SDD git workflow rules auto-install** — During `squad-station init`, for each SDD entry in squad.yml, copies the matching rule template from `.squad/rules/git-workflow-<name>.md` into provider-specific rules directories (`.claude/rules/`, `.gemini/rules/`). Ships with 4 built-in rule templates: get-shit-done, bmad-method, openspec, superpowers. - **SDD templates versioned** — `Medium3/24/2026
v0.6.10Three fixes for watchdog false alarms and orphaned agent states. ### Fixed - **Orphan busy state reset** — Reconcile and watchdog now detect agents marked "busy" in DB with zero processing messages (signal completed the task but failed to reset status). Resets to idle immediately without heuristics. - **Pane capture window 5→20 lines** — `pane_looks_idle()` captured only 5 lines, missing Claude Code's prompt behind 4-5 status bar lines. Switched from `-l 5` to `-S -20` for broader tmux versionMedium3/24/2026
v0.6.9 Simplifies watchdog by removing idle nudge notifications. Watchdog now focuses solely on stuck-agent detection with tiered escalation. ### Changed - **Watchdog simplified** — Removed idle nudge (Pass 2) that sent "System idle for Xm" notifications to the orchestrator. Watchdog now only monitors for stuck agents: log-only at 10m, auto-heal at 30m, orchestrator alert at 60m. - **`--stall-threshold` hidden** — CLI arg kept for backwards compatibility but hidden from help output (no longer functiMedium3/23/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

squad-station-2Message routing and orchestration for AI agent squads2.0.3
arkaosThe Operating System for AI Agent Teams2.22.1
synaposSynapos Framework — AI agent orchestration for multi-IDE development2.8.0
@dallay/agentsyncA fast CLI tool to sync AI agent configurations and MCP servers across Claude, Copilot, Cursor, and more using symbolic links.1.42.3
airisosPaperclip CLI — orchestrate AI agent teams to run a business2026.324.0-canary.0