Aller au contenu
OmniRoute source

📖 Setup Guide — OmniRoute (Français)

FenĂȘtre de terminal
npm install -g omniroute
omniroute

Le tableau de bord s’ouvre à l’adresse http://localhost:20128 et l’URL de base de l’API est http://localhost:20128/v1.

FenĂȘtre de terminal
pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core
omniroute

Utilisateurs de pnpm : l’option --allow-build est requise pour activer les scripts de compilation natifs de better-sqlite3 et @swc/core. La commande pnpm approve-builds -g n’est pas prise en charge pour les installations globales avec pnpm v11.

FenĂȘtre de terminal
yay -S omniroute-bin
systemctl --user enable --now omniroute.service

Le paquet AUR installe OmniRoute et fournit un service utilisateur systemd.

FenĂȘtre de terminal
npm install
PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev

Remarque pour Windows : par dĂ©faut, OmniRoute utilise %APPDATA%\omniroute lorsque l’ancien rĂ©pertoire %USERPROFILE%\.omniroute n’est pas prĂ©sent. DĂ©finissez DATA_DIR pour choisir un autre emplacement pour le rĂ©pertoire de donnĂ©es.

Remarque : npm install génÚre automatiquement .env à partir de .env.example lors de la premiÚre exécution. Les installations suivantes ne remplaceront pas un fichier .env existant, ce qui permet de conserver les personnalisations. Pour le régénérer, supprimez .env avant de relancer la commande.

Consultez le Guide Docker pour obtenir les instructions complĂštes de configuration de Docker, notamment les profils Compose et le HTTPS avec Caddy.

OmniRoute inclut une application de bureau basĂ©e sur Electron 41 + electron-builder 26.10. Scripts disponibles (Ă  la racine de l’espace de travail) :

FenĂȘtre de terminal
npm run electron:dev # ExĂ©cuter l’application de bureau avec rechargement Ă  chaud
npm run electron:build # Compiler pour le systĂšme d’exploitation actuel (dĂ©tectĂ© automatiquement)
npm run electron:build:win # Programme d’installation Windows (NSIS + portable)
npm run electron:build:mac # macOS (dmg + zip, arm64+x64)
npm run electron:build:linux # Linux (AppImage + deb + rpm)
npm run electron:smoke:packaged # Tester sommairement la version empaquetée

Les programmes d’installation de l’application de bureau sont joints aux versions publiĂ©es sur GitHub. Pour une prĂ©sentation approfondie d’Electron (signature, pont IPC, distributions), consultez ELECTRON_GUIDE.md (créé lors d’une phase ultĂ©rieure).

Pour les configurations sans intervention (Docker, Kubernetes, CI), utilisez :

FenĂȘtre de terminal
omniroute setup --non-interactive
omniroute providers test-batch

AssociĂ© Ă  des variables d’environnement (INITIAL_PASSWORD, OMNIROUTE_WS_BRIDGE_SECRET, etc.), cela vous permet de dĂ©ployer une instance OmniRoute entiĂšrement automatisable par script.

Commande Description
omniroute DĂ©marrer le serveur (PORT=20128, API et tableau de bord sur le mĂȘme port)
omniroute setup Configuration guidée via la CLI pour le mot de passe et le premier fournisseur
omniroute doctor ExĂ©cuter des vĂ©rifications d’intĂ©gritĂ© locales sans dĂ©marrer le serveur
omniroute providers Découvrir, répertorier, valider et tester les fournisseurs depuis la CLI
omniroute config Configuration de l’outil CLI — rĂ©pertorier, obtenir, dĂ©finir et valider les configurations
omniroute status Tableau de bord d’état hors ligne — version, base de donnĂ©es, outils, configuration
omniroute logs Diffuser les journaux d’utilisation depuis l’API (prend en charge --follow)
omniroute update Rechercher ou appliquer les mises à jour d’OmniRoute
omniroute provider GĂ©rer les connexions aux fournisseurs — ajouter, rĂ©pertorier, supprimer, tester, dĂ©finir par dĂ©faut
omniroute --port 3000 DĂ©finir le port canonique/de l’API sur 3000
omniroute --mcp Démarrer le serveur MCP (transport stdio)
omniroute --no-open Ne pas ouvrir automatiquement le navigateur
omniroute --help Afficher l’aide

La configuration sans interface graphique peut ĂȘtre automatisĂ©e Ă  l’aide d’options ou de variables d’environnement :

FenĂȘtre de terminal
omniroute setup --non-interactive --password "$OMNIROUTE_PASSWORD"
omniroute setup --non-interactive --add-provider --provider openai --api-key "$OPENAI_API_KEY"
omniroute setup --non-interactive --add-provider --provider openai --api-key "$OPENAI_API_KEY" --test-provider

Exécutez les diagnostics locaux sans ouvrir le tableau de bord :

FenĂȘtre de terminal
omniroute doctor
omniroute doctor --json
omniroute doctor --no-liveness

Gérez les fournisseurs via SSH ou des scripts sans ouvrir le tableau de bord :

FenĂȘtre de terminal
omniroute providers available
omniroute providers available --search openai
omniroute providers available --category api-key
omniroute providers list
omniroute providers test <id-or-name>
omniroute providers test-all
omniroute providers validate

  1. Ouvrez le Dashboard → Providers et connectez au moins un fournisseur (OAuth ou clĂ© API).
  2. Ouvrez le Dashboard → Endpoints et crĂ©ez une clĂ© API.
  3. (Facultatif) Ouvrez le Dashboard → Combos et dĂ©finissez votre chaĂźne de repli.
URL de base : http://localhost:20128/v1
Clé API : [copiée depuis la page Endpoint]
ModÚle : if/qwen3.8-max-preview (ou tout préfixe fournisseur/modÚle)

Si votre Ă©diteur ne peut pas envoyer Authorization: Bearer ..., utilisez plutĂŽt l’URL de base de compatibilitĂ© contenant le jeton :

URL de base : http://localhost:20128/api/v1/vscode/YOUR_KEY/
URL des modĂšles : http://localhost:20128/api/v1/vscode/YOUR_KEY/models
URL du chat : http://localhost:20128/api/v1/vscode/YOUR_KEY/chat/completions
URL des tags Ollama : http://localhost:20128/api/v1/vscode/YOUR_KEY/api/tags

Fonctionne avec Claude Code, Codex CLI, Cursor, Cline, OpenClaw, OpenCode et les SDK compatibles avec OpenAI.

Au lieu de coller manuellement l’URL de base et la clĂ©, laissez OmniRoute Ă©crire la configuration propre Ă  chaque outil Ă  partir du catalogue de modĂšles actif. Une commande par outil :

FenĂȘtre de terminal
omniroute setup-codex # Profils ~/.codex/<name>.config.toml
omniroute setup-claude # ~/.claude/profiles/<name>/settings.json
omniroute setup-opencode # ~/.config/opencode/opencode.json (compatible avec OpenAI)
omniroute setup-cline # Paramùtres de Cline CLI et de l’extension VS Code
omniroute setup-kilo # Kilo Code
omniroute setup-continue # ~/.continue/config.yaml (Continue / cn)
omniroute setup-cursor # Affiche les Ă©tapes Ă  suivre dans l’application Cursor
omniroute setup-roo # Importation Roo Code et pointeur autoImport
omniroute setup-crush # ~/.config/crush/crush.json
omniroute setup-goose # ~/.config/goose/config.yaml
omniroute setup-aider # ~/.aider.conf.yml
omniroute setup-qwen # ~/.qwen/settings.json + ~/.qwen/.env

Chaque commande accepte --remote <url> --api-key <key> afin de configurer un outil local pour une instance OmniRoute distante, ainsi que --dry-run pour afficher un aperçu. Pour lancer une CLI avec les variables d’environnement appropriĂ©es injectĂ©es sans Ă©crire le moindre fichier de configuration, utilisez le lanceur gĂ©nĂ©rique omniroute run <target> (claude, codex, aider, goose, opencode, qwen, gemini) ; les anciens lanceurs propres Ă  chaque outil, omniroute launch (Claude Code) et omniroute launch-codex (Codex), restent disponibles.

Pour consulter le tableau complet (éléments écrits par chaque commande, tous les indicateurs, fonctionnement local ou distant et conventions /v1 des URL de base), consultez Intégrations CLI.

Pour obtenir des instructions de configuration détaillées pour chaque outil (Claude Code, Codex CLI, Cursor, Cline, OpenClaw, Kilo Code, Copilot, etc.), consultez le Guide des outils CLI dédié.


Démarrez le transport MCP en mode stdio :

FenĂȘtre de terminal
omniroute --mcp

Procédure de validation recommandée :

FenĂȘtre de terminal
# 1. Démarrer le serveur MCP
omniroute --mcp
# 2. Depuis votre client MCP, appeler :
omniroute_get_health # Doit renvoyer l’état du systĂšme
omniroute_list_combos # Doit renvoyer les combos actifs
# 3. Ou exécuter la suite E2E complÚte :
npm run test:protocols:e2e

Claude Code :

FenĂȘtre de terminal
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream

Cursor / Cline :

Ajoutez ceci Ă  vos paramĂštres MCP :

{
"mcpServers": {
"omniroute": {
"command": "omniroute",
"args": ["--mcp"],
"env": {}
}
}
}

Documentation MCP complùte : README du serveur MCP — 110 outils, configurations d’IDE, clients Python/TS/Go.

VĂ©rifiez l’Agent Card :

FenĂȘtre de terminal
curl http://localhost:20128/.well-known/agent.json

Envoyez une tĂąche :

FenĂȘtre de terminal
curl -X POST http://localhost:20128/a2a \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Donnez-moi un bref résumé des quotas."}]}}'

Documentation A2A complĂšte : README du serveur A2A — JSON-RPC 2.0, compĂ©tences, diffusion en continu et cycle de vie des tĂąches.


Pour la plupart des déploiements, seules ces deux variables sont nécessaires :

Variable Valeur par défaut Objectif
REQUEST_TIMEOUT_MS 600000 RĂ©fĂ©rence commune pour le dĂ©lai d’attente du dĂ©but de la rĂ©ponse en amont, les dĂ©lais Undici masquĂ©s, les requĂȘtes d’empreinte TLS et les dĂ©lais de requĂȘte/proxy du pont d’API
STREAM_IDLE_TIMEOUT_MS hĂ©rite de REQUEST_TIMEOUT_MS Intervalle maximal entre les fragments de streaming avant qu’OmniRoute n’interrompe le flux SSE

La rĂ©trocompatibilitĂ© est prĂ©servĂ©e : les variables existantes FETCH_TIMEOUT_MS, API_BRIDGE_PROXY_TIMEOUT_MS et les autres variables de dĂ©lai d’expiration propres Ă  chaque couche continuent de fonctionner et remplacent la rĂ©fĂ©rence commune.

Pour les services en amont compatibles avec Claude Code (anthropic-compatible-cc-*), OmniRoute calcule l’en-tĂȘte sortant X-Stainless-Timeout Ă  partir du dĂ©lai d’expiration de rĂ©cupĂ©ration rĂ©solu, afin que les dĂ©lais de lecture cĂŽtĂ© fournisseur restent alignĂ©s sur votre configuration d’environnement.

Pour les proxys inverses tiers compatibles avec Claude Code, OmniRoute conserve un ensemble anthropic-beta par dĂ©faut prudent et, lorsque Client Cache Control reste dĂ©fini sur Auto, transmet uniquement les marqueurs cache_control fournis par le client. Activez l’option « Enable redact-thinking beta » pour chaque connexion uniquement lorsque le service en amont exige spĂ©cifiquement des flux de raisonnement Claude expurgĂ©s.

Variable Valeur par défaut Objectif
FETCH_TIMEOUT_MS hĂ©rite de REQUEST_TIMEOUT_MS DĂ©lai d’attente du dĂ©but de la rĂ©ponse en amont, utilisĂ© jusqu’à la rĂ©ception des en-tĂȘtes de rĂ©ponse
FETCH_HEADERS_TIMEOUT_MS hĂ©rite de FETCH_TIMEOUT_MS DurĂ©e limite Undici pour la rĂ©ception des en-tĂȘtes de rĂ©ponse en amont
FETCH_BODY_TIMEOUT_MS hérite de FETCH_TIMEOUT_MS Durée limite Undici entre les fragments du corps en amont (0 la désactive)
FETCH_CONNECT_TIMEOUT_MS 30000 DĂ©lai d’expiration Undici pour la connexion TCP
FETCH_KEEPALIVE_TIMEOUT_MS 4000 DĂ©lai d’expiration Undici pour les sockets persistants inactifs
TLS_CLIENT_TIMEOUT_MS hĂ©rite de FETCH_TIMEOUT_MS DĂ©lai d’expiration des requĂȘtes d’empreinte TLS effectuĂ©es via wreq-js
API_BRIDGE_PROXY_TIMEOUT_MS hĂ©rite de REQUEST_TIMEOUT_MS ou 600000 DĂ©lai d’expiration du transfert proxy de /v1 depuis le port de l’API vers celui du tableau de bord
API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS max(API_BRIDGE_PROXY_TIMEOUT_MS, 300000) DĂ©lai d’expiration des requĂȘtes entrantes sur le serveur du pont d’API
API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS 60000 DĂ©lai d’expiration des en-tĂȘtes entrants sur le serveur du pont d’API
API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS 5000 DĂ©lai d’expiration des connexions persistantes sur le serveur du pont d’API
API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS 0 DĂ©lai d’expiration en cas d’inactivitĂ© du socket sur le serveur du pont d’API (0 le dĂ©sactive)

Remarque : Pour les requĂȘtes en streaming, FETCH_TIMEOUT_MS couvre uniquement l’établissement de la connexion et l’attente de la premiĂšre rĂ©ponse en amont. Une fois le flux actif, OmniRoute ne l’interrompt qu’en cas de blocage effectif (STREAM_IDLE_TIMEOUT_MS) ou d’inactivitĂ© du corps Undici (FETCH_BODY_TIMEOUT_MS).

Si vous exĂ©cutez OmniRoute derriĂšre Nginx, Caddy, Cloudflare ou un autre proxy inverse, assurez-vous que les dĂ©lais d’expiration du proxy sont Ă©galement supĂ©rieurs aux dĂ©lais de streaming/rĂ©cupĂ©ration d’OmniRoute.


ExĂ©cutez l’API et le tableau de bord sur des ports distincts pour les scĂ©narios avancĂ©s (proxy inverse, mise en rĂ©seau de conteneurs) :

20128/v1
PORT=20128 DASHBOARD_PORT=20129 omniroute
# Tableau de bord : http://localhost:20129

Les utilisateurs de Void Linux peuvent créer un paquet natif avec xbps-src. Enregistrez ce bloc sous srcpkgs/omniroute/template :

FenĂȘtre de terminal
# Fichier modĂšle pour 'omniroute'
pkgname=omniroute
version=3.8.0
revision=1
hostmakedepends="nodejs python3 make"
depends="openssl"
short_desc="Universal AI gateway with smart routing for multiple LLM providers"
maintainer="zenobit <zenobit@disroot.org>"
license="MIT"
homepage="https://github.com/diegosouzapw/OmniRoute"
distfiles="https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz"
# Régénérez la somme de contrÎle pour chaque version avec :
# curl -L -o /tmp/omniroute.tar.gz "https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz" && sha256sum /tmp/omniroute.tar.gz
checksum=PLACEHOLDER_REGENERATE_PER_RELEASE
system_accounts="_omniroute"
omniroute_homedir="/var/lib/omniroute"
export NODE_ENV=production
export npm_config_engine_strict=false
export npm_config_loglevel=error
export npm_config_fund=false
export npm_config_audit=false
do_build() {
local _gyp_arch
case "$XBPS_TARGET_MACHINE" in
aarch64*) _gyp_arch=arm64 ;;
armv7*|armv6*) _gyp_arch=arm ;;
i686*) _gyp_arch=ia32 ;;
*) _gyp_arch=x64 ;;
esac
NODE_ENV=development npm ci --ignore-scripts
npm run build
cp -r .next/static .next/standalone/.next/static
[ -d public ] && cp -r public .next/standalone/public || true
local _node_gyp=/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js
(cd node_modules/better-sqlite3 && node "$_node_gyp" rebuild --arch="$_gyp_arch")
local _bs3_release=.next/standalone/node_modules/better-sqlite3/build/Release
mkdir -p "$_bs3_release"
cp node_modules/better-sqlite3/build/Release/better_sqlite3.node "$_bs3_release/"
rm -rf .next/standalone/node_modules/@img
for _mod in pino-abstract-transport split2 process-warning; do
cp -r "node_modules/$_mod" .next/standalone/node_modules/
done
}
do_check() {
npm run test:unit
}
do_install() {
vmkdir usr/lib/omniroute/.next
vcopy .next/standalone/. usr/lib/omniroute/.next/standalone
for _d in \
.next/standalone/.next/server/app/dashboard \
.next/standalone/.next/server/app/dashboard/settings \
.next/standalone/.next/server/app/dashboard/providers; do
touch "${DESTDIR}/usr/lib/omniroute/${_d}/.keep"
done
cat > "${WRKDIR}/omniroute" <<'EOF'
#!/bin/sh
export PORT="${PORT:-20128}"
export DATA_DIR="${DATA_DIR:-${XDG_DATA_HOME:-${HOME}/.local/share}/omniroute}"
export APP_LOG_TO_FILE="${APP_LOG_TO_FILE:-false}"
mkdir -p "${DATA_DIR}"
exec node /usr/lib/omniroute/.next/standalone/server.js "$@"
EOF
vbin "${WRKDIR}/omniroute"
}
post_install() {
vlicense LICENSE
}

Commande Action
npm run uninstall Supprime l’application du systĂšme, mais conserve votre base de donnĂ©es et vos configurations dans ~/.omniroute.
npm run uninstall:full Supprime l’application ET efface dĂ©finitivement toutes les configurations, clĂ©s et bases de donnĂ©es.

Pour obtenir des instructions de désinstallation détaillées pour toutes les méthodes, consultez UNINSTALL.md.


Code source d’OmniRoute (a58000c7685f)

HagiCode

HagiCode est un espace de développement agentique qui associe workflows structurés, exécution multi-agent et vues Hero Dungeon.

Transformez vos idées en logiciels utiles grùce à un workflow agentique plus intelligent, rapide et agréable.

Interface principale de HagiCode en thĂšme clair
  • SmartDes workflows structurĂ©s transforment une intention en parcours exĂ©cutable, de l’idĂ©e Ă  la livraison.
  • EfficientLes workflows multi-agents font avancer recherche, rĂ©alisation et revue en parallĂšle.
  • FunHero Dungeon rend les longues sessions de code plus visuelles et collaboratives.
Visiter HagiCode