Dev & Engineering rustterminal-uimulti-providermcpgit-worktreessession-managementcoding-agent

zerostack

A lightweight Rust terminal coding agent for multi-provider, permission-controlled local development.

FollowAgents review · FARS-2.1
Not recommended
57/ 100 5-point scale 2.9 / 5
1 2 3 4 5 6
Per-dimension scores and reasoning
1Trust14 / 29 · 2.4/5

The permission system provides five modes (restrictive/readonly/guarded/standard/yolo) with per-tool patterns, session allowlists, and prompts for destructive commands, but the default standard mode auto-allows some bash commands and there is a --dangerously-skip-permissions flag that bypasses all checks, so points deducted. User confirmation exists (prompts, session allowlist, doom-loop detection) but not all operation confirmation flows are shown. Data flow transparency: docs state tool results are sent to the model provider, but not all data flow paths are detailed, so points deducted. Sensitive data handling: sandbox masks nine credential directories by default, but docs explicitly list gaps (e.g., ~/.netrc not masked, secret service reachable), so points deducted. Dependency security: Cargo.toml lists dependencies but no lockfile or audit evidence, so points deducted. External effects: sandbox and permission system limit bash tool, but docs explicitly state only the bash tool is sandboxed; other tools and MCP servers are not, so points deducted. Rollback: session save/resume and git worktree integration provide some rollback, but no file-level rollback mechanism, so points deducted. Source attribution: author and repo info clear, but publisher unverified, so points deducted.

2Reliability9 / 14 · 3.2/5

Self-consistency: README, SECURITY.md, and Cargo.toml descriptions align, feature list matches docs, but some features marked experimental, so points deducted. Dependency availability: dependency versions specified in Cargo.toml, but no lockfile or audit evidence, so points deducted. Failure messages: docs describe error handling (e.g., sandbox-required refuses bash commands), but no concrete error message examples, so points deducted.

3Adaptability12 / 18 · 3.3/5

Audience and scenarios: targets developers, provides multiple usage scenarios (interactive, one-shot, loop, parallel), docs detailed, but target user group not explicit, so points deducted. Capability boundaries: permission modes and prompt system clearly define capabilities, but some features (loop, worktree) marked experimental, so points deducted. Trigger precision: slash commands and permission modes provide precise control, but not all commands documented in detail, so points deducted. Environment fit: supports multiple platforms (Linux, macOS, Windows untested), provides multiple install methods, but Windows support untested, so points deducted.

4Convention10 / 18 · 2.8/5

Information architecture: README structure clear with TOC and links, but some docs in docs/ not provided in this review, so points deducted. Install notes: multiple install methods (script, Cargo, Homebrew, Nix) detailed, but no Windows install instructions, so points deducted. Naming stability: version number clear (1.7.2), but no naming convention doc, so points deducted. Examples and FAQ: quick start and example commands provided, but no FAQ, so points deducted. Known limitations: SECURITY.md details sandbox limitations, but other feature limitations not explicit, so points deducted. License: GPL-3.0-only, file present, but no license compliance notes, so points deducted. Versioning/changelog: version number exists, but no CHANGELOG file, so points deducted. Maintenance responsibility: author and repo info clear, but no maintenance plan or contribution guide, so points deducted.

5Effectiveness9 / 13 · 3.5/5

Output usability: TUI and one-shot mode provided, output format not detailed but basically usable, so points deducted. Marginal value: multi-provider support, permission system, sandbox etc. provide clear value, but no comparison with other tools, so points deducted. Cost-benefit: performance data (memory, CPU) provided, but no benchmark methodology, so points deducted.

6Verifiability3 / 8 · 1.9/5

Claim traceability: performance claims in README (e.g., memory footprint) lack measurement method or reproduction steps, so points deducted. Cross-source corroboration: blog post links provided, but not verified in this review, so points deducted. Fact/inference separation: docs distinguish facts and inferences (e.g., sandbox limitations), but some claims (e.g., performance) not clearly separated, so points deducted.

Evidence confidence: Low Reviewed Aug 09, 2026 Reviewed revision 9774549abcf8
The upstream repository has new commits since this review. The score still applies to the reviewed revision shown and may not cover the latest changes.
Before you use it
  • The sandbox only protects the bash tool; other tools and MCP servers are not sandboxed, and network is open by default, posing exfiltration risk.
  • The --dangerously-skip-permissions flag bypasses all permission checks; use with caution.
  • Windows support is untested and may have issues.
  • Dependencies lack lockfile or audit; supply chain security should be assessed independently.
Review evidence [1][2][3][4][5][6][7][8][9]
See the full review method →

What does this agent do, and when should you use it?

zerostack is an interactive Rust coding agent for the terminal, described as inspired by pi and opencode. It accepts work through a terminal UI and uses standard coding-agent file and command tools under configurable permission controls. It supports OpenRouter, OpenAI, Anthropic, Gemini, Ollama, and custom providers, while preserving sessions and compacting them as context windows fill. The default build includes loops, Git worktrees, MCP, subagents, ARCHITECTURE.md support, and status signals; ACP, persistent memory, hooks, advisor, and multimodal input are feature-gated. It is aimed at developers who want a local CLI agent with multiple model-provider paths and a documented low-memory design.

Running zerostack opens a crossterm terminal UI where a user submits a task; the agent sends it to the selected LLM provider and invokes coding-agent tools such as file reads, writes, edits, directory operations, and bash according to its permission mode. /prompt switches between built-in prompts including code, plan, review, debug, and ask, while /mode changes the permission policy. /session manages saved sessions, -c resumes the latest one, and automatic compaction helps keep sessions inside context limits. /loop iterates on a task using LOOP_PLAN.md and an optional validation command, while /worktree, /wt-merge, and /wt-exit manage a Git worktree workflow. With applicable features enabled, it can connect MCP servers, run as an ACP Agent server through zerostack --acp, and accept image or PDF attachments.

  1. A solo developer with an OpenRouter API key who wants to inspect, edit, and validate a local codebase from a terminal.
  2. An engineer who needs to switch a coding workflow between OpenAI, Anthropic, Gemini, Ollama, OpenRouter, or a configured custom provider.
  3. A developer handling a long implementation task who wants resumable sessions, context compaction, and an iterative /loop workflow with tests.
  4. A programmer who wants to ask a read-only repository question through /btw without interrupting the main agent run.
  5. A Git user who wants a chat-driven branch-per-task workflow using worktree creation, merging, cleanup, and return to the main repository.
  6. A user of an ACP-capable editor, such as the documented Zed example, who wants zerostack to act as a local coding-agent backend.

What are this agent's strengths and limitations?

Pros
  • A Rust CLI with a crossterm terminal UI and a documented low-resource target; the project reports a roughly 26MB binary and about 16MB average RAM use.
  • Supports OpenRouter, OpenAI, Anthropic, Gemini, Ollama, and configurable custom providers instead of tying the workflow to one model service.
  • Five permission modes, per-tool glob patterns, session allowlists, and repeated-call detection provide several levels of control over local operations.
  • Combines session resumption, automatic compaction, iterative loops, subagents, and Git worktree operations in one terminal-oriented workflow.
  • MCP is in the default build, and the optional ACP feature exposes zerostack as an Agent server for compatible editors.
Limitations
  • Windows support is explicitly untested, so cross-platform adoption requires independent validation.
  • An LLM provider and its API key must be configured; ACP mode cannot process prompts without a provider setup.
  • ACP, persistent memory, hooks, advisor, image input, and PDF input are not in the default build and require feature selection at installation time.
  • The loop system and Git worktree integration are marked experimental; merge conflicts during automatic worktree merging may still require human intervention.
  • --sandbox is best effort: if its backend is missing, bash commands run unsandboxed with a warning unless --sandbox-required is enabled.

How do you install or deploy this agent?

Recommended installation: curl -fsSL https://raw.githubusercontent.com/gi-dellav/zerostack/main/install.sh | bash. Cargo installation is also documented: cargo install zerostack; its default feature set includes loop, git-worktree, mcp, subagents, archmd, status-signals, and multithread. For ACP, memory, hooks, or advisor, run cargo install zerostack --features acp,memory,hooks,advisor, or use cargo install zerostack --all-features. Before the first default-provider session, set export OPENROUTER_API_KEY="[api_key]".

How do you use this agent?

From a project directory, run zerostack for an interactive session or zerostack -p "Explain this project" for a one-shot request. Select a provider and model explicitly with zerostack --provider openrouter --model deepseek/deepseek-v4-flash, and resume the most recent session with zerostack -c. Use /prompt autoconfig to navigate the documentation and configure the installation interactively, and /help for the complete command list. For isolated bash commands, install bubblewrap and pass --sandbox; add --sandbox-required when bash commands must be refused if the sandbox backend is unavailable.

How does this agent compare with similar options?

zerostack is presented as inspired by pi and opencode, with a Rust-first lightweight positioning. Its README reports approximately 16MB average RAM and 24MB peaks, compared there with roughly 300MB average and 700MB peaks for opencode or other JavaScript-based coding agents; these are project-reported measurements.

FAQ

Which credential is needed for the default setup?
The default provider is OpenRouter, and the quick start uses OPENROUTER_API_KEY. OpenAI, Anthropic, Gemini, Ollama, and configured custom providers are also supported.
Can it edit files or run commands without asking?
That depends on the permission mode. Default standard auto-allows path tools inside the current directory and some safe bash commands; restrictive asks for every operation, while readonly denies writes, edits, and bash. --dangerously-skip-permissions bypasses all checks.
Does sandbox mode make untrusted code safe to run?
No. The documented sandbox is a measure to contain damage from mistaken commands, not a security boundary for untrusted code. Only --sandbox-required refuses bash commands when the sandbox backend is unavailable.
Can an editor connect to it?
Yes, when built with the acp feature. Use zerostack --acp for stdio or add --acp-host and --acp-port for TCP; Zed is the documented editor example.

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents