Yumi AI Gateway

Console admin

Connexion requise

Saisis le GATEWAY_ADMIN_TOKEN en haut à droite puis clique sur « Connecter ».

Tableau de bord

Usage par compte client : jetons · images · secondes de vidéo · coût.

E-mail JourSemaineMois

Créer une clé API

La clé complète n'est affichée qu'une seule fois. Copie-la.

Nouvelle clé (copie-la maintenant) :

Clés existantes

Clés de service seulement ; les clés d'un compte se voient sous Comptes.

IDNomClé (masquée) StatutRPMBudget ModèlesSécurité Usage
Clé révélée :

Comptes

Utilisateurs du service des comptes. Consommation agrégée depuis les clés du compte.

E-mailOffreDernière connexion ClésRequêtesDépenses depuis l’origine

Clés fournisseur

Une clé = un abonnement : formule, fin, restant dans son unité (rafraîchi toutes les deux secondes), réglages sur la ligne.

Registre des fournisseurs

Les clés se règlent ci-dessus ; ici les APIs (nom, protocole, URL, clés), puis les modèles servis, rangés par catégorie.

APIs

NomProtocoleBase URL Clés

Jetons d'abonnement Claude

Un jeton = un compte Claude. Seuls les jetons actifs sont transmis au relais ; le jeton n'est jamais réaffiché.

CompteCléStatut FinDétail

Tarif client par modèle

Micro-dollars entiers par million de jetons (ou par unité pour image / seconde), déduits du crédit du compte quel que soit notre coût d'achat. Un zéro est un prix.

ModèlePalier (jetons)Entrée Cache luCache écrit 5 minCache écrit 1 h SortiePar unitéCoût fournisseurMarge (µ$)Coût relevé le

Plages de coefficient

Jours ISO (1 = lundi) du début de la plage, heures locales du fuseau IANA, fin exclusive. 1 000 = ×1, 500 = moitié prix.

ModèleJoursDébut FinFuseauCoefficient (‰)

Analytics — tokens & coût réel

Consommation dans le temps et coût recalculé depuis le tarif de chaque modèle.

Aucune consommation sur la période.

Coût par modèle dans le temps

Empilé par modèle · coût réel au tarif courant ($/Mtok)

Tokens entrée / sortie

Empilé · entrée vs sortie par période

Coût par modèle

Répartition sur la période, du plus coûteux au moins coûteux

Détail par modèle

Le tarif appliqué rend chaque coût vérifiable

ModèleProvider RequêtesTokens in Tokens outTarif in/out ($/Mtok) Coût (USD)

Plans

Les offres Yumi AI se créent et se règlent ici.

NomTypeModèles Débit

Sécurité de la console admin

Protège UNIQUEMENT ce panneau d'administration (l'API reste protégée par les clés yumi-…). Recommandé si la box est exposée sur internet.

Activer un identifiant / mot de passe

Déploiement : domaine + HTTPS

Génère la config nginx (WebSocket inclus) + les commandes TLS à copier-coller EN ROOT sur le serveur. Pour ta sécurité, la console n'exécute rien en root elle-même.

1) DNS : crée un enregistrement A « domaine → IP du serveur ». 2) Lance les commandes ci-dessous en root :


      

Version minimale de l'app

Une app (clé d'appareil) qui n'envoie pas X-Mi-Version ou envoie une version plus ancienne reçoit 426 app_update_required avec le lien ci-dessous. Vide = aucun contrôle. Les clés de service et les clés API du compte ne sont pas concernées.

File des images 3K/4K

Une image 3K/4K dont le pool est plein attend la première clé libre, au maximum ce nombre de secondes ; au-delà, l'appel reçoit 429 avec Retry-After. Publié à l'app dans account_limits.

Comment ça marche

La gateway expose un endpoint compatible OpenAI et route vers un agent CLI.

Client (SDK OpenAI)
   │  Authorization: Bearer yumi-…
   ▼
Yumi AI Gateway  (/v1/chat/completions)
   ├─► claude_cli   → claude -p …
   ├─► kimi_cli     → kimi -p … (stream-json)
   └─► mistral_cli  → vibe -p … --yolo

Modèles disponibles

Le nom du modèle dans l'appel sélectionne l'agent CLI. Pour Claude, le suffixe choisit la variante — -sonnet (Sonnet 5), -opus (Opus 4.8), -haiku (Haiku 4.5), -fable (Fable 5) — le modèle exact étant défini par CLI_MODEL_MAP. Liste en direct depuis /v1/models :

Exemples d'appel

Remplace BASE et yumi-… par les tiens.

curl

      Python (SDK OpenAI)

      JavaScript (fetch)


      

Exposer l'API (mapping de port sur la box)

Si la gateway tourne sur un nano-ordinateur (Raspberry Pi / SmartPi) derrière une box internet, il faut rediriger un port pour y accéder depuis l'extérieur.

ServicePortNote
Gateway (HTTP)8001Port d'écoute par défaut (variable PORT). Bind 0.0.0.0 sur le nano-PC.
HTTPS (nginx)443Recommandé : nginx + TLS devant la gateway, on n'expose que le 443.
SSH22Ne PAS rediriger publiquement.
  1. Sur le nano-PC : lance la gateway en écoute sur 0.0.0.0:8001 (IP LAN, ex. 192.168.1.50).
  2. Sur la box (routeur) : crée une redirection de port (NAT/Port Forwarding) port externe → 192.168.1.50:8001 (ou 443 si nginx/TLS).
  3. Utilise l'IP publique de la box, ou un DNS dynamique (DuckDNS…) car l'IP résidentielle change.
  4. Sécurité : n'expose jamais sans TLS + clé yumi-…. Restreins la console admin (ADMIN_IP_ALLOWLIST, pare-feu).

L'avantage de la solution

  • Un seul endpoint OpenAI pour plusieurs agents CLI.
  • Toute l'orchestration agentique du CLI via un simple appel chat.
  • Auto-hébergé : les credentials ne quittent jamais ton serveur.
  • Clés maîtresses par client : rate-limit, budget, allow-list, suivi de coût.
  • Zéro lock-in : on change de provider via le routage.

Débogueur

Capture, en mémoire et pour une durée bornée, tout ce qui passe par l'API pour un compte. Sans capture allumée, rien n'est gardé.

Boutique de connexions

Parcours le catalogue et connecte un service en un clic — la gateway construit le connecteur et le câble sur les CLI ciblés.

Chargement…
Catalogue indisponible.

Connecteur MCP sur mesure

Branche des serveurs MCP (outils) sur les agents CLI.

Connecteurs enregistrés

Coche/décoche une cible CLI directement ici — le changement est appliqué aussitôt et le token est conservé.

NomTransport CiblesDétail Statut

Créer un serveur MCP compatible

Prompt prêt à donner à un agent AI pour générer un serveur MCP branchable ici. Adapte la liste des outils.


    

Notes importantes

  • Le token va dans l'en-tête Authorization AVEC le préfixe « Bearer » (sinon 401). L'en-tête Accept (application/json, text/event-stream) est ajouté automatiquement (anti-406).
  • La gateway traduit chaque connecteur au format NATIF du CLI ciblé — kimi (mcp.json), claude (claude mcp add), mistral/vibe (config.toml, transport « http »). Rien à adapter côté connecteur.
  • Édite un connecteur (crayon) pour changer ses cibles sans re-saisir le token : le secret existant est préservé.
  • Coche plusieurs CLI pour câbler le même serveur MCP sur tous en un clic.
  • Détails, formats par CLI et dépannage (401 / 406 / 502 / hang) : docs/mcp-integration.md du dépôt.

Skills

Procédures réutilisables (format SKILL.md). Injectées dans le dossier de travail de l'agent : Claude, Kimi et Grok les découvrent nativement ; Vibe via son préambule. Portée par clé, comme les connecteurs MCP.

Glisse-dépose un .md/.txt dans l'éditeur pour charger son contenu (le nom/description sont pré-remplis depuis l'en-tête s'il existe).
SkillPortée

Terminal — connecter les CLI

inactif

Providers & authentification des CLI

Configure la clé de chaque CLI puis teste la connexion.

Sécurité de la clé

Limite ce que l'agent peut faire (anti prompt-injection). Contrôle fin sur Claude ; best-effort sur Kimi/Vibe.

Permissions

Connecteurs MCP visibles par cette clé

« Strict » = la clé ne voit QUE les connecteurs cochés (aucun coché = aucun accès MCP). Garanti sur Claude.

Skills visibles par cette clé

« Strict » = la clé ne voit QUE les skills cochés. « Hérite » = les skills marqués « pour toutes les clés ».

Préambule système injecté (couche de sécurité)