The runtime for AI-native applications.
Build agents, workflows and the full app around them on one open-source runtime you host yourself.
No tool sprawl.
Your app and its agents share one runtime.
The routes, queues, workflows, and storage your app uses are the same functions agents call as tools.
Boundaries, built in.
Deny by default
Every call is checked. No matching policy, no access.
Code stays in its box
Lua and WASM import only what their entry declares. Agent containers run locked down.
Network per process
Every dial and request is checked. Route each process direct, through a proxy, or over a tailnet.
Nodes prove who they are
Signed handshakes on every connection; gossip is encrypted.
Agents that ship, safely.
Claude Code or Codex change the running system through a scoped surface.
Every change is versioned. Roll back in one call.
Every agent is an actor.
Each agent owns its state and talks only by message.
Agents never lock or race each other. A crash stays contained and a supervisor restarts it.
The same actor runs on one node or across the cluster.
local funcs = require("funcs") local function main() local asks = process.listen("ask", { message = true }) local history = {} -- private state, no locks while true do local msg = asks:receive() table.insert(history, msg:payload():data()) local answer = funcs.call("app:think", history) process.send(msg:from(), "reply", answer) end end
Scale your way.
Same code, one node or many.
- ClusterAdd a node, it joins. Processes are addressed by name.
- QueuesIn-memory, RabbitMQ, or SQS behind one consumer API.
- TemporalDispatch workflows to your Temporal cluster.
- MeshReach across networks over Tailscale or SOCKS5.
The whole stack, built in.
Browse the Hub for shared modules and apps to compose from.
Your control plane.



Run it on your infrastructure.
One open-source binary under MPL-2.0. Your agents and data stay on hardware you control.