OpenRadar

Project · Go · Added June 6, 2026

yao

Yao is an open-source Go runtime that lets you build AI agents and full-stack web apps from a single binary — with TypeScript hooks, MCP support, and built-in vector search.

7,541 stars 684 forks View on GitHub

Yao

Overview

Yao is an open-source runtime for building AI agents and web applications, shipped as a single Go binary. It has over 7,500 GitHub stars and 684 forks, with consistent growth through 2025 and 2026. The project positions itself as a complete application platform — think if you could combine an agent framework, a web server, a database layer, and a frontend rendering engine into one executable with zero external dependencies.

The project originated from a Chinese development team and has been steadily building an international community. The name “Yao” (爻) comes from the I Ching — the fundamental binary symbol whose combinations describe patterns in everything. That’s a fitting metaphor for a tool that tries to unify the fragmented pieces of modern application development into coherent, composable units.

The core problem Yao tackles is developer tool sprawl. Building an AI-powered web application in 2026 typically means wiring together an agent framework (LangChain, CrewAI), a backend server (Express, FastAPI), a database ORM, an embedding service, a vector store, a frontend framework, and a deployment pipeline. Yao collapses most of that into a single binary. You define your data models in JSON/YAML, write business logic in TypeScript (via a built-in V8 engine — no Node.js required), and the runtime handles routing, database operations, API generation, UI rendering, and agent orchestration.

Why it matters

The AI agent space is exploding, but most agent frameworks are libraries — you still need to build the application around them. Yao flips that model: it’s an application runtime that has agents built in. This matters because the hard part of shipping AI-powered products isn’t the AI — it’s everything around it. Authentication, data persistence, API design, frontend rendering, memory management, tool integration. Yao handles all of that in one place.

For fullstack developers who work with Go, this is particularly interesting. The Go ecosystem has excellent infrastructure tools but has lacked a batteries-included application framework comparable to Django or Rails. Yao fills that gap while adding AI-native capabilities that those older frameworks don’t have. The single-binary deployment story is also a genuine advantage — no Node modules, no Python virtual environments, no container images. Just one executable on ARM64 or x64.

Key Features

Three Execution Modes. Yao supports three distinct request processing modes: LLM (for conversational AI with OpenAI, Anthropic, etc.), CLI Agent (for sandboxed code execution using tools like Claude Code or OpenCode in isolated containers), and Pure Hook (for deterministic logic with no AI involvement). All three share the same TypeScript hook interface, so you can mix them freely — route some requests through an LLM, handle others with pure code, all inside a single application.

TypeScript Hooks with Built-in V8. Every request flows through Create and Next hooks written in TypeScript. The V8 engine is embedded in the Go binary, so there’s no Node.js dependency. Create hooks run before the executor to inject context and enforce constraints. Next hooks run after to validate output and trigger downstream actions. This hook-based architecture gives you fine-grained control over agent behavior without touching the underlying framework.

Native MCP Support. Yao has first-class Model Context Protocol support with process, SSE, and STDIO transport options. This means AI tools like Claude, ChatGPT, and Cursor can interact with your Yao application’s data and functions directly through the standardized MCP interface. You don’t need to write custom integration code — declare your tools and the protocol handles the rest.

Memory API with Four Scopes. Agent memory is handled through a built-in API with four scope levels: request-level (ephemeral), session (per conversation), user (persistent per user), and team (shared across users). This is more structured than most agent frameworks offer out of the box, and it covers the common memory patterns without requiring an external vector store for basic use cases.

Full-Stack Runtime in One Binary. Beyond agents, Yao is a complete web application server. Data models are defined in JSON/YAML and generate REST APIs automatically. SUI Pages provide component-based server-side rendered web UI. A built-in Chat UI (CUI) gives you a conversation interface for agents without building one from scratch. TypeScript handles all business logic. The result is a complete fullstack application from a single executable.

Built-in Search Stack. Yao ships with vector search (via OpenAI or FastEmbed embeddings), a knowledge graph for entity-relationship retrieval, and GraphRAG for hybrid vector plus graph search. Most agent applications need retrieval-augmented generation, and having the search infrastructure built into the runtime eliminates another external dependency.

CLI Agent Sandbox. For tasks that need actual code execution — file manipulation, running scripts, terminal operations — Yao can spin up CLI agents like Claude Code or OpenCode inside isolated containers with VNC desktop support. The Skills ecosystem lets you drop reusable capability packs (SKILL.md files) into any CLI agent, making it straightforward to extend what agents can do.

Use Cases

Pros and Cons

Pros:

Cons:

Getting Started

# Install Yao (macOS/Linux)
curl -fsSL https://yaoagents.com/install.sh | bash

# Create a new project
yao init my-app
cd my-app

# Start the development server
yao start

# The admin panel is available at http://localhost:5099
# The chat UI is at http://localhost:5099/api/__yao/app/cui

# Create a data model
yao migrate

# Run with an AI agent (requires OpenAI or compatible API key)
export OPENAI_API_KEY=sk-your-key
yao start

Define a data model in JSON:

{
  "name": "tasks",
  "columns": [
    { "name": "title", "type": "string" },
    { "name": "status", "type": "string", "default": "pending" },
    { "name": "assignee", "type": "string" }
  ]
}

Yao automatically generates REST endpoints (GET /api/tasks, POST /api/tasks, etc.) and an admin interface for the model. Add a TypeScript hook to let an AI agent manage the data:

// hooks/task/create.ts
export default async function Create(payload: any) {
  // Inject AI context before the executor runs
  payload.context = { source: "ai-agent" };
  return payload;
}

Alternatives

Django + LangChain — If you’re already in the Python ecosystem, Django with LangChain or CrewAI gives you a mature web framework with AI capabilities bolted on. The tradeoff is more moving parts — you’ll need separate services for vector search, agent orchestration, and potentially a frontend framework. Choose this if your team knows Python well and you value the massive Django ecosystem over Yao’s unified approach.

NestJS + LangGraph — For TypeScript teams, NestJS provides a structured backend framework and LangGraph handles agent orchestration. This combination is more flexible and has a larger community, but requires assembling the pieces yourself. Better choice if you need fine-grained control over each layer and don’t mind the integration overhead.

FastGPT / Dify — These are higher-level, low-code platforms for building AI applications with visual workflow editors. They’re easier to get started with but much less flexible — you’re working within their abstractions rather than writing code. Choose them if your team is non-technical or if you need a visual builder more than a programmable runtime.

Verdict

Yao is the most ambitious attempt I’ve seen to unify the fullstack web application and AI agent runtime into a single tool. The single-binary Go architecture is a genuine differentiator, and the three-mode execution model (LLM, CLI Agent, Pure Hook) is well-designed for real-world applications where you need both AI and deterministic logic. The project has real momentum with 7,500+ stars and active development. That said, Yao is still a bet — the documentation needs work for English-speaking developers, the license requires review, and the ecosystem is small compared to established frameworks. If you’re a Go developer building AI-powered tools and you’re comfortable being an early adopter, Yao is worth a serious look. For production-critical applications with large teams, the safer play is still assembling proven components (NestJS/Django + a dedicated agent framework) until Yao’s community matures.

Related

Shared tags