One engine, many frontends, one protocol

Maestro

A headless Rust agent engine that delegates self-contained tasks to specialized subagents and gates every tool call by policy. Orchestrate it with deterministic flows, drive it from any frontend.

One engine, many frontends

A headless Rust engine serves a terminal, web, and desktop client over one backend-agnostic WebSocket protocol (MAP).

Deterministic orchestration

A hierarchical state machine of nodes, edges, and guards. You specify what happens at each scenario; nothing is left to model discretion.

Agents as functions

Subagents declare typed input and output schemas. A typed edge injects a handoff tool so one agent's result becomes the next agent's input.

Per-tool permissions

Every tool call is gated by an allow / ask / deny policy, with persistable always-decisions so approvals never become fatigue.

Hooks that cascade

Global hooks form a base layer for every agent; per-agent hooks layer on top, additive by default or overriding per tool.

Bring your own backend

OpenAI-compatible by default, so DeepSeek, Anthropic, or a self-hosted local LLM are all just configurable backends.