Volante — a transparent, user-owned model router and orchestration control plane (alpha). Plans a task DAG, filters hard capabilities, then routes each sub-task across your configured models (Anthropic, OpenAI-compatible, Ollama, Claude Code, Codex) with a full, auditable decision trace. No LangChain/CrewAI/LiteLLM.
git clone https://github.com/ribato22/volante && cp volante/*.md ~/.claude/agents/Subagents overview
# Volante
[](https://github.com/ribato22/volante/actions/workflows/ci.yml)
[](https://github.com/ribato22/volante/blob/main/LICENSE)
[](pyproject.toml)
[](https://pypi.org/project/volante/)
[](https://registry.modelcontextprotocol.io)
[](https://github.com/astral-sh/ruff)
**A transparent, user-owned model router and orchestration control plane (alpha).** A *supervisor*
model decomposes a goal into a task DAG, *routes* each sub-task across the user's explicitly
configured models, runs them one-shot or in an agentic tool loop, and *synthesizes* a final answer.
Hard capabilities are enforced first; explainable metadata and quality evidence rank the eligible
models. Volante runs locally and keeps inventory, policy, credentials, and decision traces under the
user's control.
Selection quality is an evidence-based prediction, not a claim of a universal winner. Volante does
not yet ship published representative cross-provider benchmarks or automatic score calibration.
Built without an orchestration framework (no LangChain / CrewAI / LiteLLM).
> A *volante* steers the game: the deep-lying midfielder who reads the whole pitch and sends the
> ball where it does the most good — then takes it back. One mind, many players.
---
## Highlights
- **Supervisor + explainable routing.** An LLM plans a validated, acyclic task DAG; the router
evaluates every configured model, rejects hard capability mismatches, scores the eligible set,
and records the complete decision trace. Optional evaluation-derived quality profiles replace
coarse metadata with evidence. `quality`, `local`, `cheap`, and `cash_protect_quota` are distinct
routing objectives.
- **User-owned, cross-provider control plane.** `AnthropicProvider` and a generic
`OpenAICompatProvider` speak to Anthropic, Google AI Studio (Gemini), Groq, OpenRouter, DeepSeek,
Moonshot (Kimi), local Ollama, and any other OpenAI-compatible endpoint. The inventory and
credentials stay in the user's environment.
- **Scoped provider failover.** Model/deployment, provider authentication/endpoint, exhausted-retry,
and timeout failures are recorded and can move work to the next ranked eligible candidate,
including planner/synthesizer fallbacks. Malformed or semantically invalid requests still fail
fast instead of spraying the request across providers.
- **Hybrid one-shot / agentic.** Tasks run as a single call *or* as a model↔tool loop (`run_python`
in a Docker-isolated sandbox when a daemon is available, withheld when none is — plus host-mediated
`fetch_url` / `read_file`).
- **Shared context.** An append-only *blackboard* carries provenance; each task gets a scoped,
budget-capped projection of only the dependency artifacts it needs.
- **Streaming everywhere.** Live token streaming through the supervisor, workers, and synthesizer,
with per-task labels for parallel workers and cooperative early-stop.
- **Optional Web UI.** A small FastAPI + SSE app streams a run live in the browser (plan → per-task
worker output → synthesis → result); runs with real providers or a no-key demo.
- **Cost & honesty.** A `CostMeter` tallies per-model usage and cost, and propagates an *estimated*
flag when a provider returns no usage.
- **Forgery-resistant evaluation.** A 3-arm eval (baseline vs. orchestration vs. single-agent) with
a scorer that runs untrusted solution code under **process + filesystem separation** so a model
cannot fake a passing score.
- **Tested.** 800+ tests, zero-network by default (`FakeProvider` + local subprocesses), `ruff`-clean.
## Architecture
```mermaid
flowchart TD
goal(["goal"]) --> S["Supervisor<br/>plan → validated task DAG<br/>(acyclic · typed · one_shot | agentic)"]
S --> R["Router<br/>best predicted fit per task<br/>(hard constraints → explainable score)"]
R --> P
subgraph wave["wave execution · asyncio fan-out · fail-fast"]
direction TB
P["Projector<br/>scoped, budget-capped request<br/>(system + task + deps)"]
P --> W["Worker<br/>one-shot"]
P --> AW["AgenticWorker<br/>model ↔ tool loop<br/>(run_python · fetch_url · read_file)"]
end
W --> BB[("Blackboard<br/>append-only · provenance · latest-wins")]
AW --> BB
BB --> SY["Synthesizer<br/>combine artifacts → final answer"]
SY --> result(["result<br/>+ CostMeter totals · usage · duration"])
classDef io stroke:#8b5cf6,stroke-width:2px;
classDef store stroke:#f59e0b,stroke-width:2px;
class goal,result io;
class BB store;
```
<details>
<summary>Text version (renders anywhere, e.g. PyPI or a terminal)</summary>
```text
┌──────────────┐
goal ──────────► │ Supervisor │ plan → validated task DAG (acyclic, typed, one_shot|agentic)
└──────┬───────┘
▼
┌──────────────┐ per task: hard-capability filter, then rank the
│ Router │ predicted fit from configured evidence
└──────┬───────┘
▼
┌───────────── wave execution (asyncio, fan-out cap, fail-fast) ─────────────┐
│ ┌───────────┐ scoped, budget-capped request (system + task + deps) │
│ │ Projector │──────────────────────────────────────────────────────────► │
│ └───────────┘ │
│ ▼ ▼ │
│ ┌─────────┐ one-shot ┌───────────────┐ model↔tool loop │
│ │ Worker │ │ AgenticWorker │ (run_python sandbox, │
│ └────┬────┘ └───────┬───────┘ fetch_url, read_file) │
│ └──────────────┬──────────────────┘ │
└───────────────────────┼───────────────────────────────────────────────────┘
▼
┌──────────────────────┐ append-only, provenance, latest-wins
│ Blackboard │◄──────────────────────────────────────
└──────────┬───────────┘
▼
┌──────────────┐
│ Synthesizer │ combine artifacts → final answer
└──────┬───────┘
▼
result (+ CostMeter totals, usage, duration)
```
</details>
| Component | File | Responsibility |
|---|---|---|
| Supervisor | `src/volante/supervisor.py` | Decompose goal → validated task DAG |
| Router | `src/volante/router.py` | Whole inventory → eligible candidates → explainable ranking |
| Projector | `src/volante/projector.py` | Scoped, budget-capped request from blackboard artifacts |
| Worker | `src/volante/worker.py` | One-shot model call |
| AgenticWorker | `src/volante/agent.py` | Model↔tool loop with per-turn records |
| Blackboard | `src/volante/blackboard.py` | Append-only shared state with provenance |
| Synthesizer | `src/volante/synthesizer.py` | Artifacts → final answer |
| Runtime | `src/volante/runtime.py` | Orchestrate: plan → waves → synthesize (streaming, fail-fast) |
| Providers | `src/volante/providers/` | Anthropic + OpenAI-compatible adapters (complete/stream/tools) |
| Tools | `src/volante/tools/` | Sandbox / DockerSandbox, run_python, fetch_url, read_file |
| Eval | `eval/` | 7 goals (5 katas + 2 multi-part), 3-arm comparison, forgery-resistant scorer |
## Quickstart
Requires **Python 3.11+** and [`uv`](https://docs.astral.sh/uv/).
```bash
git clone https://github.com/ribato22/volante
cd volante
uv sync --dev # install deps + dev tools
uv run pytest # 800+ tests, no network
uv run ruff check . # lint
# See it orchestrate end-to-end with ZERO API keys (FakeProvider demo):
uv run python examples/fake_provider.py
```
Then configure at least one real provider (see [Providers](#providers)) and run a demo:
```bash
cp .env.example .env # fill in one provider, then `set -a; . .env; set +a`
uv run python demo.py # show detected providers
uv run python demo.py orchestrate # full supervisor → workers → synth, streamed live
uv run python demo.py agentic # one cross-provider agentic coding task (run_python loop)
uv run python demo.py eval # 3-arm eval suite
```
### Example output
`demo.py orchestrate` streams every phase live, then prints the result (illustrative):
```text
Orchestrate demo — planner/synth model=openai/gpt-4o-mini
(planning + workers + synthesis stream live)
[haiku] Threads run as one— / tasks bloom in parallel time, / the join gathers all.
STATUS: success
FINAL:
Threads run as one—
tasks bloom in parallel time,
the join gathers all.
cost: $0.001834
```
`demo.py eval` prints the 3-arm table (`format_report`); read the `VERDICT` with the warnings
(illustrative numbers):
```text
GOAL WINNER BASE ORCH AGEN
-------------------------------------------------
slugify — 0.xx 0.xx 0.xx
roman — 0.xx 0.xx 0.xx
calc — 0.xx 0.xx 0.xx
csv_stats — 0.xx 0.xx 0.xx
json_flatten — 0.xx 0.xx 0.xx
-------------------------------------------------
wins: baseline=? orchestration=? agentic=? ties=?
totals: baseline $? orchestration $? agentic $?
VERDICT: (whatever your models actually produce)
```
Run it yourself — it needs your keys and **spends real money** (7 goals × 3 arms × k runs):
```bash
uv ruWhat people ask about volante
What is ribato22/volante?
+
ribato22/volante is subagents for the Claude AI ecosystem. Volante — a transparent, user-owned model router and orchestration control plane (alpha). Plans a task DAG, filters hard capabilities, then routes each sub-task across your configured models (Anthropic, OpenAI-compatible, Ollama, Claude Code, Codex) with a full, auditable decision trace. No LangChain/CrewAI/LiteLLM. It has 0 GitHub stars and was last updated today.
How do I install volante?
+
You can install volante by cloning the repository (https://github.com/ribato22/volante) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is ribato22/volante safe to use?
+
ribato22/volante has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains ribato22/volante?
+
ribato22/volante is maintained by ribato22. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to volante?
+
Yes. On ClaudeWave you can browse similar subagents at /categories/agents, sorted by popularity or recent activity.
Deploy volante to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/ribato22-volante)<a href="https://claudewave.com/repo/ribato22-volante"><img src="https://claudewave.com/api/badge/ribato22-volante" alt="Featured on ClaudeWave: ribato22/volante" width="320" height="64" /></a>More Subagents
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
The agent that grows with you
Java 面试 & 后端通用面试指南,覆盖计算机基础、数据库、分布式、高并发、系统设计与 AI 应用开发
Build Agentic workflows, RAG pipelines, with rich AI model and tool support on one collaborative workspace. Deploy on cloud, VPC, or self-hosted, so teams move from prototype to production without rebuilding the stack.
The agent engineering platform.
Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.