Skip to main content

A Mistral model-and-specialist router for vibe: describe a task, it routes to the right model, specialist, and tool.

Project description

vibe-orchestra

A Mistral model-and-specialist router for vibe. Describe a task; it routes to the right Mistral model, specialist, and tool — so you launch vibe and it orchestrates, instead of picking models by hand.

CI Python License deps


The idea

Inspired by Sakana AI's Fuguyou should not manage which model to call. Fugu coordinates a pool of models with learned strategies (an evolved coordinator + an RL-trained conductor). vibe-orchestra does not learn coordination; it is the practical, hand-designed slice you can run today: a cheap classifier picks the route, and a model policy maps each route to the Mistral model, specialist, and tool that fit.

task ──▶ route()  (Ministral, cheap)
            │
   surgical-edit ─▶ Codestral FIM     · tool: vibe-fim surgical_patch
   ios          ─▶ Devstral           · specialist: iOS posture + patterns
   reasoning    ─▶ Magistral
   vision       ─▶ Pixtral
   agentic-build─▶ Devstral
   quick        ─▶ Ministral
   chat         ─▶ Mistral medium

Install — then vibe, and basta

git clone https://github.com/guillaumevele/vibe-orchestra && cd vibe-orchestra
IOS_KIT=/path/to/vibe-ios-kit ./install.sh

install.sh wires everything globally and reversibly (it backs up the files it touches and edits only inside marked blocks):

  • the orchestration posture → ~/.vibe/AGENTS.md (loaded by every session),
  • the route + surgical_patch tools → ~/.vibe/config.toml (global MCP),
  • the iOS specialist (posture + 38 patterns + a real ios vibe skill) from vibe-ios-kit.

Add --with-capabilities to also connect a curated set of real, keyless MCP plugins so the orchestrator is autonomous out of the box:

./install.sh --with-capabilities     # + apple-docs, context7, sequential-thinking

It pre-warms the npm cache and gives those servers a generous startup timeout — a cold npx download otherwise exceeds vibe's 10s limit and destabilises MCP init (learned the hard way). Plugins that need a key (github, supabase, brave) are catalogued with their command and env var for you to add yourself — this project never ships or asks for secrets.

After that, anywhere — no --agent, no per-project copy:

vibe "round the body of computeScore() to 2 decimals, leave the rest"
vibe "add a shimmer Metal loader to onboarding, gated on scenePhase"

Plain vibe calls route() to pick the model/specialist, then edits via surgical_patch (Codestral FIM, bounded). Undo with ./install.sh --uninstall.

Use the router directly

pip install vibe-orchestra
vibe-orchestra route "verify the SwiftUI glassEffect API then add a glass tab bar"
#   route      : ios
#   model      : devstral-latest
#   subjects   : apple-docs, ios
#   use        : ios, apple-docs        (already wired)
#   why        : SwiftUI work -> iOS specialist
vibe-orchestra routes          # the model policy
vibe-orchestra capabilities    # real plugins/skills: wired vs available

Connect real plugins per subject

route is capability-aware: it returns not just a model and specialist but the real plugins/skills that serve the task's subject — split into ones already wired into vibe and ones to consider adding (with the exact command and any key). The catalog is verified, public packages only:

subject plugin key
iOS / Apple APIs apple-docs
library docs context7
hard reasoning sequential-thinking
browser / scrape playwright
backend / Postgres supabase SUPABASE_ACCESS_TOKEN
repos / PRs github GITHUB_PERSONAL_ACCESS_TOKEN
web search brave-search BRAVE_API_KEY

That is the autonomy: the orchestrator reaches for the right real tool per subject instead of guessing.

from vibe_orchestra import classify
d = classify("add a SwiftUI settings screen")
d.route, d.model, d.specialist     # ('ios', 'devstral-latest', 'ios')

The classifier backend is injectable, so the routing logic is fully testable with no network:

classify("rename foo to bar", chat_fn=lambda system, user: '{"route": "surgical-edit"}')

Honest limits

  • Coordination is hand-designed, not learned. Fugu's edge is the trained coordinator; this is a policy + a classifier. It is transparent and cheap, not evolved.
  • Within one session the driving model is fixed. route() tells you the ideal model and gives you the tools/specialists to act on it — real today for edits (Codestral FIM) and iOS (the specialist posture). Routes whose ideal model differs and have no backing tool yet are surfaced, not silently switched. Full per-subtask model switching grows by adding more model-backed tools — that is the roadmap, stated plainly so nothing is overclaimed.

Specialties

The iOS specialist is vibe-ios-kit (build posture + 38 distilled iOS 26/27 patterns + a runnable lint). The registry is extensible: a specialist is a vibe agent plus a posture the orchestrator adopts when route selects it.

License

MIT © Guillaume Vele

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vibe_orchestra-0.2.0.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vibe_orchestra-0.2.0-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file vibe_orchestra-0.2.0.tar.gz.

File metadata

  • Download URL: vibe_orchestra-0.2.0.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.16

File hashes

Hashes for vibe_orchestra-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9eb366aee2261ba960971a685591eba9c633145498ce8f637f368822667c03e9
MD5 9eba98f10ff47740e6f689255ee58901
BLAKE2b-256 5b921572514532edf6b8fae93248e66796c940c986e5067fc25f201eebda1c3b

See more details on using hashes here.

File details

Details for the file vibe_orchestra-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: vibe_orchestra-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.16

File hashes

Hashes for vibe_orchestra-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c9e5c9ee621724562a3f7f6436446053d77440e13e027af8e300d1dfc2f3f97c
MD5 ffcc2c491db66e3cd7f622fefcb6a578
BLAKE2b-256 c40b1ed728efd3df84e8a49d33075ab05812b6c587a82ae79320f6f436f2897b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page