Contexte et motivations

Respan a été lancé après que son équipe a constaté les limites de LiteLLM. Depuis 2024, le wrapper autour de LiteLLM atteignait plus de 100 000 lignes de code. Une mise à jour de LiteLLM en janvier a généré des erreurs de connexion intermittentes, obligeant l’équipe à revenir en arrière et à appliquer manuellement les correctifs en amont. Ces incidents ont montré que la maintenance d’un monolithe lourd n’était pas viable à long terme, d’où la décision de concevoir une passerelle IA native en Rust avec un cœur minimal.

Architecture plugin du cœur

Le cœur de Respan ne fait qu’orchestrer des événements. Un adapter accepte chaque connexion HTTP ou WebSocket et la transmet à un format client capable de la reconnaître. Le format expose la requête sous forme d’un flux bidirectionnel d’événements typés. Les plugins sont enregistrés dans un ordre déterminé ; à chaque passage, ils peuvent choisir un fournisseur, filtrer ou encapsuler le flux, déclencher des appels additionnels, renvoyer une réponse ou refuser la requête. Cette approche, inspirée de Nginx, garantit que l’ajout d’une fonctionnalité ne modifie jamais le cœur.

Les fournisseurs (OpenAI, Anthropic, Gemini, etc.) sont implémentés comme de simples plugins. Le plugin de Mistral, par exemple, ne compte que 22 lignes. Chaque particularité d’un fournisseur, comme le champ de consommation de tokens propre à Groq, est isolée dans son propre plugin de test, ce qui simplifie la maintenance et le débogage.

Gestion des formats et compatibilité

Respan normalise les requêtes dans une structure partagée. Lorsque le client et le fournisseur utilisent le même format et qu’aucun plugin n’altère le payload, les octets originaux transitent sans transformation, préservant les champs spécifiques du protocole. Si les formats diffèrent, le système traduit les messages, appels d’outils, résultats, flux et métriques d’usage via les types partagés. Cette capacité à représenter à la fois des requêtes HTTP ponctuelles et des sessions WebSocket persistantes rend la passerelle compatible avec les API OpenAI Realtime, MCP, ou tout protocole personnalisé.

Implications, limites et perspectives

Le code source est disponible sous les licences MIT et Apache‑2.0 sur GitHub, ce qui permet aux équipes de le déployer localement sans dépendre de la plateforme hébergée de Respan. La version actuelle est en pré‑alpha, ce qui implique que la stabilité et la couverture des plugins restent à consolider. Le modèle de plugins ouvre la voie à un écosystème où chaque équipe peut ajouter des fonctions de routage intelligent, de redondance ou de masquage de données personnelles (PII) sans toucher au cœur. Cependant, la sécurité du chargement dynamique de plugins dépend de la rigueur des revues de code et de la sandboxing éventuelle, aspects qui ne sont pas détaillés dans la documentation publique.