san
Health Pass
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 39 GitHub stars
Code Fail
- process.env — Environment variable access in .github/workflows/pr-freshness.yml
- fs module — File system access in .github/workflows/pr-freshness.yml
- rm -rf — Recursive force deletion command in install.sh
- network request — Outbound network request in internal/inspector/ui/assets/app.js
Permissions Pass
- Permissions — No dangerous permissions requested
An open-source AI coding assistant that runs in your terminal, supporting multiple LLM providers, MCP integration, and sub-agent orchestration.
Security Assessment
Overall risk: Medium. The agent features built-in tools like Bash, meaning it is explicitly designed to execute shell commands and edit files based on AI outputs. It also connects to external APIs (Anthropic, OpenAI, etc.) using environment variables for keys. No hardcoded secrets or overly broad system permissions were found, which is good. However, the automated installation script flags a critical warning: it contains a recursive force deletion command (`rm -rf`). Piping `curl` directly to `bash` is always risky, and destructive commands in such scripts can cause severe system damage if poorly handled or maliciously altered. Using the Go install method is significantly safer.
Quality Assessment
The project is quite new but actively maintained, with recent repository pushes. It uses the permissive and standard Apache-2.0 license. As an emerging tool, community trust is currently low, reflected by only 12 GitHub stars. The Go Report Card integration suggests a baseline standard of code quality and testing.
Verdict
Use with caution — consider bypassing the risky install script by building from source, and carefully monitor the tool's automated shell execution during active coding sessions.
Open-source AI agent. Lives in your terminal.
San is a terminal-native unified runtime for specialized agents — coding and beyond — built on five pluggable pillars: LLMs, search backends, personas, skills & extensions (skills, plugins, MCP servers, subagents), and a self-evolving agent that levels up as you work. Written in Go.
Features
Open architecture
- LLM providers — Anthropic, OpenAI, Google, DeepSeek, Moonshot, Alibaba, MiniMax, Z.ai (GLM); swap via
/model. - Search backends — Exa, Tavily, Brave, Serper; swap via
/search. - Personas — Markdown identities scoped to user or project; swap via
/identity(details). - Skills & extensions — Claude Code skills, plugins, and MCP servers run unmodified; sandboxed subagents; lifecycle hooks (shell, LLM, agent, HTTP); auto-loaded project memory.
- Self-evolving — every few turns a background reviewer distills your recent work into durable memory and reusable skills, so the agent levels up as you work. (Level 1 available; deeper levels on the way.)
Engineering
- Runs anywhere — A single ~12 MB binary with zero runtime dependencies (no Node.js, no Python). Native Go: ~0.01s cold start, ~32 MB baseline, and the same file runs unchanged on a laptop, an edge device, or in a
scratchcontainer (footprint · benchmark). - Event-driven coordination — Parallel subagent execution via a pub/sub hub (architecture).
- Session persistence — Auto-save, resume, fork, and automatic context compaction.
- Prompt prediction — Speculative completion of likely next prompts to reduce latency.
- Session inspector — Local web UI for transcript replay, system prompt forensics, and live-tail of active sessions (
san inspector).
Installation
curl -fsSL https://raw.githubusercontent.com/genai-io/san/main/install.sh | bash
Re-run to upgrade. To uninstall:
curl -fsSL https://raw.githubusercontent.com/genai-io/san/main/install.sh | bash -s uninstall
Other methods
Go Install
go install github.com/genai-io/san/cmd/san@latest
Build from Source
git clone https://github.com/genai-io/san.git
cd san
go build -o san ./cmd/san
mkdir -p ~/.local/bin && mv san ~/.local/bin/
Usage
san # interactive
san "explain this function" # one-shot
cat main.go | san "review" # piped input
san --continue # resume latest session
san --resume # pick a past session
san inspector # open session transcript viewer
| What | How |
|---|---|
| Pick / switch model | /model — saved to ~/.san/providers.json |
| Cycle thinking budget | Ctrl+T or /think (levels vary by provider) |
| All slash commands | /help (/identity, /search, /skills, /agents, /mcp, /compact, …) |
| Toggle permission mode | Shift+Tab (ask · auto-accept · plan) |
| Expand tool · cancel · exit | Ctrl+O · Ctrl+C · Ctrl+D |
For API keys, set the matching env var (see Credentials below) or paste when prompted on first launch. Full walkthrough: docs/guides/getting-started.md.
Configuration
Config lives in ~/.san/ (user) and <project>/.san/ (project, overrides user). A SAN.md or CLAUDE.md at the project root is auto-loaded into the system prompt.
| Service | Variable |
|---|---|
| Anthropic (Claude) | ANTHROPIC_API_KEY or Vertex AI |
| OpenAI (GPT, o-series, Codex) | OPENAI_API_KEY |
| Google (Gemini) | GOOGLE_API_KEY |
| Moonshot (Kimi) | MOONSHOT_API_KEY |
| DeepSeek (DeepSeek V4) | DEEPSEEK_API_KEY |
| Alibaba (Qwen) | DASHSCOPE_API_KEY |
| MiniMax | MINIMAX_API_KEY |
| Z.ai (GLM) | BIGMODEL_API_KEY |
| Ollama (local) | OLLAMA_BASE_URL (default http://localhost:11434/v1) |
| Exa search | none (default) |
| Tavily search | TAVILY_API_KEY |
| Brave search | BRAVE_API_KEY |
| Serper search | SERPER_API_KEY |
User-level (~/.san/):
providers.json # Provider connections and current model
settings.json # Permissions, hooks, env, identity
skills.json # Skill states
identities/ # Custom personas (see /identity)
skills/ # Custom skill definitions
agents/ # Custom agent definitions
commands/ # Custom slash commands
plugins/ # Installed plugins
projects/ # Session transcripts + indexes
Project-level (.san/):
settings.json # Permissions, hooks, disabled tools
mcp.json # MCP server definitions
identities/*.md # Project-scoped personas (override user-level)
agents/*.md # Subagent definitions
skills/*/SKILL.md # Skills
commands/*.md # Slash commands
Benchmark: San vs Claude Code
Compared with Claude Code v2.1.112 on Apple Silicon, same model (claude-sonnet-4-6):
| Metric | San | Claude Code | Advantage |
|---|---|---|---|
| Download size | 12 MB | 63 MB (+ Node.js 112 MB) | 5x smaller |
| Disk footprint | 38 MB | 175 MB | 4.6x smaller |
| Startup time | ~0.01s | ~0.20s | 20x faster |
| Startup memory | ~32 MB | ~189 MB | 5.8x less |
| Simple task | ~2.4s / 39 MB | ~10.4s / 286 MB | 4.3x faster, 7.3x less memory |
| Tool-use task | ~3.3s / 39 MB | ~26.0s / 285 MB | 7.9x faster, 7.2x less memory |
Both tools have comparable features (hooks, skills, plugins, session, MCP, etc.). The performance gap comes from Go's native compilation, minimal architecture design, and lean prompt engineering — vs Node.js V8/JIT/GC runtime overhead.
See full details: docs/operations/benchmark.md
Documentation
- Documentation Index — map of architecture, features, operations, and references
- Architecture — architecture entrypoint and reading order
- Package Map — package ownership and dependency boundaries
- System Prompt — Slot model, identity, skill/agent injection
- Subagents · Skills · Plugins · MCP
- Hooks · Permissions · Tasks
- Inspector — local web UI for transcript replay and debugging
- Per-package design under
docs/packages/— start at Package Index
Related Projects
- Claude Code — Anthropic's AI coding assistant
- Aider — AI pair programming in terminal
- Continue — Open-source AI code assistant
Contributing
Contributions welcome! See CONTRIBUTING.md for guidelines.
License
Apache License 2.0 - see LICENSE for details.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found