À propos du projet

# Weave Router **Un endpoint. Tous les modèles. Toujours le bon.** Weave Router est un proxy transparent pour Anthropic, OpenAI et Gemini qui sélectionne automatiquement le meilleur modèle pour chaque requête. Au lieu d'utiliser une invite basée sur des impressions, il utilise un petit embeddeur sur la machine avec un scoreur de clusters dérivé de l'article de recherche [Avengers-Pro](https://arxiv.org/abs/2508.12631) pour acheminer chaque requête vers le modèle approprié parmi vos fournisseurs activés. ## Fonctionnalités clés - **Acheminement par action** — Un scoreur de clusters sélectionne le bon modèle pour chaque requête API en amont, acheminant par action plutôt que par tour. - **Parle l'API de tout le monde** — Compatible avec Anthropic Messages, OpenAI Chat Completions et les API natives Gemini, y compris le streaming, les outils et la vision. - **Connaît aussi l'open source** — DeepSeek, Kimi, GLM, Qwen, Llama et Mistral via OpenRouter ou tout endpoint compatible OpenAI. - **BYOK par défaut** — Les clés des fournisseurs restent sur votre machine, chiffrées au repos. - **Observable** — Traces OTLP prêtes à l'emploi, visibles dans le tableau de bord Weave ou tout collecteur compatible OTLP comme Honeycomb, Datadog ou Grafana. ## Démarrage rapide Le moyen le plus rapide de commencer est avec le Weave Router hébergé : ```bash npx @weave-os/router ``` L'installateur demande quel outil (Claude Code, Codex, opencode ou pi), vous guide à travers la portée (utilisateur vs projet), récupère une clé de routeur et configure le bon fichier de configuration. Autres variantes : ```bash npx @weave-os/router --claude # ignorer le sélecteur, Claude Code npx @weave-os/router --codex # ignorer le sélecteur, OpenAI Codex CLI npx @weave-os/router --opencode # ignorer le sélecteur, opencode npx @weave-os/router --pi # ignorer le sélecteur, pi + Loom UI npx @weave-os/router --scope project # par dépôt, valide settings.json npx @weave-os/router --local # auto-hébergé localhost:8080 npx @weave-os/router --base-url https://router.acme.internal npx @weave-os/router@0.1.0 # épingler une version ``` Nécessite Node ≥ 18. La référence complète des drapeaux se trouve dans [install/npm/README.md](install/npm/README.md). ## Auto-hébergement Pour exécuter le routeur et le tableau de bord sur votre propre machine : ```bash # 1. Déposez une clé de fournisseur. OpenRouter est la base recommandée. echo "OPENROUTER_API_KEY=sk-or-v1-..." >> .env.local # 2. Définissez un mot de passe pour le tableau de bord. echo "ROUTER_ADMIN_PASSWORD=remplacer-par-un-mot-de-passe-fort" >> .env.local # 3. Démarrez Postgres + routeur sur :8080 et générez une clé rk_. make full-setup ``` Le routeur est accessible sur http://localhost:8080, le tableau de bord sur http://localhost:8080/ui/, et votre clé `rk_...` s'affiche dans les journaux. ### Exemples d'appels API ```bash # Appelez-le comme Anthropic curl -sS http://localhost:8080/v1/messages \ -H "Authorization: Bearer rk_..." \ -d '{"model":"claude-sonnet-4-5","max_tokens":256, "messages":[{"role":"user","content":"salut"}]}' # ...ou comme OpenAI curl -sS http://localhost:8080/v1/chat/completions \ -H "Authorization: Bearer rk_..." \ -d '{"model":"gpt-4o-mini", "messages":[{"role":"user","content":"salut"}]}' # Consultez la décision d'acheminement sans proxy curl -sS http://localhost:8080/v1/route -H "Authorization: Bearer rk_..." -d '...' ``` ## Architecture Seules les boîtes grises sont hors de votre machine. Le routeur, le scoreur, Postgres et vos clés de fournisseur restent tous locaux ; les invites vont du routeur directement au fournisseur que vous avez configuré, jamais à Weave. ```mermaid flowchart LR client["Claude Code, Codex, opencode,<br/>pi, Cursor, votre propre application"] router["Routeur :8080<br/>/v1/messages · /v1/chat/completions<br/>/v1beta/models · /v1/route"] scorer["Scoreur de clusters<br/>Embeddeur ONNX en processus"] hmm["Sidecar de politique HMM :8093<br/>optionnel, make up-hmm"] pg[("Postgres<br/>installations, clés rk_,<br/>clés BYOK chiffrées, utilisation")] ui["Tableau de bord /ui<br/>mode auto-hébergé uniquement"] providers["Anthropic · OpenAI · Gemini<br/>OpenRouter et tout<br/>endpoint compatible OpenAI"] otel["Votre collecteur OTLP<br/>Honeycomb, Datadog, Grafana"] client -->|"jeton porteur rk_…,<br/>réponse en streaming retour"| router router -->|"embedder et scorer l'action"| scorer router -.->|"ROUTER_DEFAULT_STRATEGY=hmm"| hmm router -->|"auth, config, utilisation"| pg pg --> ui router -->|"clé fournisseur depuis env ou BYOK"| providers router -.->|"spans et journaux d'utilisation"| otel ``` Les déploiements multi-réplicas nécessitent également Pub/Sub (`PUBSUB_*`) pour l'invalidation du cache ; `docker compose` exécute l'émulateur pour vous. ## Optionnel : Sidecar de politique HMM La pile par défaut utilise le scoreur de clusters en processus. Pour exécuter la politique HMM figée comme conteneur compagnon, ajoutez une clé API Google et utilisez la cible d'adhésion : ```bash echo 'GOOGLE_API_KEY=...' >> .env.local make up-hmm ``` Cela ne change pas la stratégie par défaut. Voir [sidecars/hmm/README.md](sidecars/hmm/README.md) pour la vérification des artefacts, la compatibilité d'embedding et la sélection explicite HMM. ## Intégration d'outils **Claude Code.** Exécutez `make install-cc` pour connecter Claude Code au routeur auto-hébergé local (également invoqué automatiquement à la fin de `make full-setup`). Pour le routeur hébergé, utilisez `npx @weave-os/router` ci-dessus. **Codex** (CLI OpenAI). `npx @weave-os/router --codex` modifie `~/.codex/config.toml` (ou `<repo>/.codex/config.toml` avec `--scope project`) avec un bloc `[model_providers.weave]` géré et définit `model_provider = "weave"`. Le fournisseur préserve la connexion OAuth ChatGPT existante de Codex tandis que la clé du routeur circule dans un en-tête HTTP `X-Weave-Router-Key`. ## Licence Sous licence Elastic License v2 (ELv2). --- *Construit par [Weave](https://www.workweave.ai) : La plateforme d'intelligence technique n°1, adoptée par Robinhood, PostHog, Reducto et des centaines d'autres.*