SAN✦
    open-source agent runtime
    Minimal overhead. Maximum agent.
    0.01scold start
    12 MBone native binary
    2.3ktokens of harness
    ZIP!
    san — ~/shop/api
    ❭
    AnthropicClaude Opus 4.81M · think
    OpenAIGPT-5.5400K · think
    GoogleGemini 3 Pro2M
    CopilotGPT-5.5 via GitHub272K
    DeepSeekDeepSeek V4 Flash1M
    DeepSeekDeepSeek V4 Pro1M · think
    Ollamaqwen3-coder (local)256K
    ✦ model → DeepSeek V4 Pro · was GPT-5.5 · saved
    GPT-5.5 (high)0 / 400K
    san — ~/shop/api
    ❭
    ◐AgentExplore — map where tokens are storeddeepseek-flash
    ⎿ Bash rg · Read ×3
    ◐AgentReviewer — audit token handlingclaude-opus
    ⎿ Read ×2
    ● Tokens live in two places; the reviewer flagged an unhashed copy in session.go:88 — fix drafted.
    2 subagents · each on its own modelrunning
    DONE!
    san — ~/shop/api
    ❭
    Saved workflows
    review3 reviewers in parallel, one report
    draftwrite, critique, revise until it passes
    bugfixreproduce, fix, verify, loop until green
    triageone worker per open issue
    .san/workflows/*.md · run one with /workflow <name>
    diffcollect
    correctnessclaude-opus
    securitygpt-5.5
    simplifydeepseek
    mergeone report
    briefoutline
    writedraft · round 1
    criticclaude-opus
    publishone doc
    revise · not there yet
    ◆ review done · 3 reviewers in parallel · 1 summary back
    ◆ draft done · 3 rounds · the critic signed off
    .san/workflows/
    APPROVED!
    api
    ❭
    ●Readorders.go
    ●Editorders.go+4 −2
    ●Edithandler.go+6 −3
    ●Bashgo test ./...ok
    ●To @web: amounts are integer cents
    └Sent · reading now
    ●To @migrate: check the amount column
    └Sent · waits for its user
    ◆From @web: checkout now uses cents
    ●Read../web/format.ts
    ●To @web: avoid toFixed, use cents
    ◆ shop/apiidle
    web
    checkout page · idle
    ◆From @api: amounts are integer cents
    ●Readorder.ts
    ●Readcart.tsx
    ●Editorder.ts+3 −1
    ●Editformat.ts+12
    ●Bashnpm testok
    ●To @api: checkout now uses cents
    ◆From @api: avoid toFixed, use cents
    ●Editformat.ts+5 −4
    ●Bashnpm testok
    ◆ shop/webidle
    migrate — /group members
    shop · 3 members
    *@migrateworkingholdschema
    @apiworkingorders
    @webidlecheckout
    ◆ 1 message from @api held for you · read it when you're back
    ◆ shop/migrate · hold~/.san/groups
    san — ~/shop/api
    ❭
    ●Readserver/router.go
    ●Editrouter.go+9
    ●Writehealth_test.go+24
    ●Bashgo test ./...ok
    ●Added GET /healthz with a table-driven test.
    ◐ reviewing this session…
    memorythis project prefers table-driven tests
    skillhttp-scaffolding — endpoint + test pattern
    self-learning · on/evolve to review
    SAN✦
    one binary · 12 MB · zero deps
    macOSApple silicon · Intel
    Cloud VMssh in, run san
    ContainerFROM scratch
    CI runnerActions · GitLab
    JetsonARM64 edge AI box
    Raspberry Pia $50 board
    Industrial PCoffline, local models
    Windowsx64 · ARM
    Linuxx86-64 · ARM64
    WSLLinux inside Windows
    ◇
    Personas
    Switchable minds you write
    ✎
    Skills
    Know-how, loaded when needed
    ⑂
    Subagents
    Parallel, any model each
    ⋔
    Workflows
    Subagents arranged as a graph
    ◆
    Session groups
    Terminals that talk
    ⟳
    Autopilot
    Give it a goal; it steers
    ⌁
    MCP · plugins · hooks
    Plug in, react to any event
    ⊙
    Inspector
    Replay any run as the model saw it
    ⛨
    Permissions
    You set what runs unasked
    {}
    genai-io/sdk-go
    San's agent loop as a Go library
    One binary. Any model. Agents that work together.
    ★github.com/genai-io/san
    open sourcemacOSLinuxWindows
    click pause · R restart