Build agents from plain files. Compile to standalone binaries.
Discover, invoke, and compose them from your terminal.
brew install ayo-ooo/tap/ayo
What is ayo
ayo is an agent compiler and orchestrator. Define an AI agent in a few plain files, compile it into a standalone binary, then register it so any tool on your system — including your coding agent — can discover and invoke it.
No Docker. No API server. No runtime dependencies. Just binaries that talk to each other through stdin and stdout, the way Unix intended.
Every agent gets a beautiful terminal UI, multi-provider LLM support, and a sandboxed shell — out of the box.
The thesis
An agent isn't a web app. It's a compiled binary. You build it, ship it, run it anywhere. No containers, no orchestration layer, no uptime monitoring. Just a file that does a job.
Every ayo agent reads stdin and writes stdout. Pipe them together.
ayo run extract | ayo run summarize | ayo run translate
— each agent does one thing well.
Coding agents like Claude Code can use ayo to build, register, and invoke purpose-built sub-agents — transparently, as code, not as a black box.
How it works
Four steps. Plain files become orchestrated agents.
Scaffold a new agent. Edit config.toml and system.md to define its behavior.
Compile into a standalone Go binary. Static linking, zero deps, cross-platform.
Add it to the ayo registry. Now any tool on the system can discover it.
Invoke by name. Pipe between agents. Your coding agent can call it too.
Orchestrate
Every ayo agent is self-describing. The registry makes them discoverable. Standard I/O makes them composable.
Coding agent integration
Claude Code, Cursor, or any coding agent can use ayo to create purpose-built sub-agents, register them, and invoke them later — all transparently, as code.
Agent types
Add an input schema and it's a tool. Leave it out and it's conversational. Same files, different behavior.
Has an input.jsonschema. Gets TUI forms, CLI flags, JSON input, and piped stdin. Processes input and returns a result.
? Language Go ? Path src/auth/ ? Strict mode Yes ✔ Reviewing code...
No input schema. Gets a rich chat TUI, session persistence, and streaming responses. For open-ended tasks.
--session--chat■ researcher session: abc123 you: What are the security implications of the new auth flow? agent: Let me examine the implementation. Checking token validation...
The agent format
A few files define everything — personality, capabilities, I/O shape. No SDKs, no boilerplate, no framework lock-in.
# Agent metadata [agent] name = "code-reviewer" version = "1.0.0" description = "Reviews code for bugs" # Model configuration [model] default = "claude-sonnet-4-6" [defaults] temperature = 0.3 max_tokens = 4096
# Code Reviewer You are a senior code reviewer. ## Behavior - Review for bugs, security issues, and style violations - Be constructive and specific - Suggest concrete improvements - Use the shell to read files ## Output Format Group by severity: critical > warning > suggestion
{
"type": "object",
"properties": {
"language": {
"type": "string",
"enum": ["go", "python", "typescript", "rust"],
"description": "Language to review" // → select dropdown in TUI
},
"path": {
"type": "string",
"description": "Path to review" // → text input + CLI flag
},
"strict": {
"type": "boolean",
"description": "Enable strict mode" // → confirm toggle
}
}
}
Features
Register agents. Discover by name. List, describe, and invoke from anywhere on the system.
Every agent embeds its own metadata. Tools can introspect schemas, skills, and capabilities via --ayo-describe.
Anthropic, OpenAI, OpenRouter, Groq, Gemini, and more. First-run model picker built in.
Pure-Go POSIX shell with command blocking. The one tool every agent gets.
JSON Schema becomes interactive Huh forms automatically. Select, text, numeric, confirm.
Resume conversations with --session. Interactive --chat mode. Context that persists.
Embed capability docs as skills. Run lifecycle hooks on agent events. Extend without code.
Static Go binaries. Homebrew, curl install, or just copy the file. Runs anywhere.
Build for macOS, Linux, and Windows with a single flag. --platform all does the rest.
Quick start
Creates config.toml and system.md. Edit them to shape your agent.
Compiles to a standalone binary and adds it to the registry in one step.
Invoke by name from anywhere. Pipe it. Let your coding agent call it. It's just a binary.