The App Runtime
for the AI Era
Build AI agents and web apps — with a single binary.
$ curl -fsSL https://get.yaoapps.com | bash
assistants/coder/package.yao
{
"name": "Coder",
"type": "assistant",
"description": "Full-stack coding assistant",
"capabilities": "Write, review and refactor code",
"connector": "claude.opus",
"mcp": { "servers": [{ "server_id": "coder.tools" }] },
"automated": true,
"mentionable": true
}
models/order.mod.yao
{
"name": "Order",
"columns": [
{ "name": "customer", "type": "string", "length": 200 },
{ "name": "total", "type": "decimal" },
{ "name": "status", "type": "enum", "option": ["pending", "paid", "shipped"] }
],
"relations": {
"items": { "type": "hasMany", "model": "order_item", "key": "order_id" }
}
}
api/order.http.yao
{
"name": "Order API",
"version": "1.0.0",
"description": "Order management API",
"paths": [
{
"path": "search",
"method": "GET",
"process": "models.order.Paginate",
"in": [":params", ":query"]
}
]
}
pages/landing/landing.html
<root>
<header is="header"></header>
<main class="landing">
<h1 s:trans>Orders</h1>
<div s:for="{{orders}}" s:for-item="item">
<span>{{ item.customer }}</span> — <span>{{ item.total }}</span>
<button s:on-click="Detail" s:data-id="{{ item.id }}">View</button>
</div>
</main>
<footer is="footer"></footer>
</root>
scripts/order.ts
import { Process } from "@yao/runtime";
function LatestOrders() {
const orders = Process(
"models.order.Get",
{ wheres: [{ column: "status", value: "paid" }] }
);
return orders.map(o => ({
id: o.id,
customer: o.customer,
total: "$" + o.total
}));
}
Terminal
$ yao start
Agent → http://localhost:5099/v1/agent/assistants
API → http://localhost:5099/v1/api/order/search
SUI Page → http://localhost:5099/landing
Dashboard → http://localhost:5099/dashboard/auth/entry
$ yao run scripts.order.LatestOrders
[{ "id": 1, "customer": "Acme Corp", "total": "$1,200" }, ...]
$ yao agent test -i "Hello" -n assistants.coder
► [direct] assistants.coder
└─ PASSED (1.2s)
Copyright © 2026 Infinite Wisdom