A single binary that cages your AI agents
Yao is a Go runtime that bundles LLM agents, web apps, and sandboxed CLI tools into one executable — no Node, no Python, no Docker on the host.

What it does
Yao is a full-stack runtime shipped as a single binary. It runs three kinds of executors — LLM calls, sandboxed CLI agents (Claude Code, Codex, etc.), and plain TypeScript hooks — through the same request pipeline. You also get data models, REST APIs, server-rendered UI components, and a built-in chat interface, all without installing Node.js or Python on the host.
The interesting bit
The “cage, not an animal” framing is apt. Yao doesn’t try to be the AI; it wraps whatever model or CLI runner you bring, enforcing boundaries through Create and Next hooks that intercept every request. The built-in V8 engine runs TypeScript directly, and the CLI agent mode spins up isolated containers with VNC desktop access — useful for “computer use” tasks that need a real browser or IDE.
Key highlights
- Single binary for ARM64/x64; self-contained, no host dependencies
- Three executor modes (LLM, CLI agent, pure hook) mixable in one pipeline
- Native MCP support for tool connections via process, SSE, or STDIO
- Memory API with four scopes: request, session, user, team
- Built-in search stack: vector embeddings, knowledge graph, GraphRAG
- Skills ecosystem: drop
SKILL.mdpacks into CLI agents for reusable capabilities
Caveats
- The README is heavy on feature lists and light on concrete usage examples or performance numbers
- “No containers needed on the host” is true for the binary itself, but the CLI agent mode explicitly uses containerized sandboxes — the distinction matters
Verdict
Worth a look if you’re building agentic workflows and tired of stitching together half a dozen services. Skip it if you need a mature plugin ecosystem or extensive third-party benchmarks; the project is ambitious but still proving itself.