A CLI Agent is a Yao Agent where the middle execution layer is Claude Code instead of an LLM. The Hook system, Memory, MCP, and all `ctx` APIs are identical. ``` Yao Agent: Create Hook → [ LLM Stream ] → Next Hook CLI Agent: Create Hook → [ Claude Code (Runner)] → Next Hook ``` One file unlocks it: `sandbox.yao` in your assistant directory. ## What You'll Learn | Page | What you add | What you get | |------|-------------|--------------| | [What is CLI Agent](./what-is-cli-agent) | — | Understand the one difference from Yao Agent | | [Sandbox](./sandbox) | `sandbox.yao` | Agent that runs Claude Code in a container | | [Computer](./computer) | `computer.vnc: true` | Desktop environment with VNC access | | [Skills](./skills) | `skills/` directory | Agent with reusable capability packs | | [Workspace API](./workspace) | — | Full `ctx.workspace` and `ctx.computer` reference | | [Hook with CLI](./hook-with-cli) | Create + Next Hook | Control context in, collect results out | | [Build: Coding Agent](./build-coding-agent) | Everything above | End-to-end working agent | ## What You'll Build A coding agent: user describes a requirement → Create Hook writes context files to the workspace → Claude Code generates the implementation → Next Hook reads the output and surfaces the result. ## Prerequisite Complete [Yao Agent](/tutorials/agent/yao-agent) first — at minimum the [Create Hook](../yao-agent/hook-create) and [Next Hook](../yao-agent/hook-next) pages. CLI Agent reuses everything from that chapter.