
Passerelle API sur site pour agents de codage IA avec attribution des coûts par ingénieur, budgets stricts, gouvernance des sorties (scan de secrets/entités), observabilité du contexte rotatif, et exports prêts pour audit. S'exécute à l'intérieur de votre VPC.
Le plan de contrôle on-prem pour les agents de codage IA. Attribution des coûts par ingénieur · budgets stricts · gouvernance des sorties · observabilité de la rotation de contexte · exports prêts pour l'audit — le tout dans votre VPC.
Conduit s'interpose entre vos agents de codage IA (Claude Code, Cursor, Codex, Aider) et le fournisseur que vous utilisez déjà (Anthropic, OpenAI, Bedrock, Azure — ou votre déploiement LiteLLM / Portkey existant). Une seule variable d'environnement à adopter, aucun changement côté client, les prompts et complétions jamais stockés.
[Claude Code / Cursor / Codex]
│ ANTHROPIC_BASE_URL=https://conduit.yourco.dev
▼
[Conduit] vk_live_… (per-engineer)
│ metering · budgets · governance · audit · context-rot
▼
[LiteLLM / Portkey / direct providers]
│
▼
[Anthropic / OpenAI / Bedrock / Azure]
Aperçu — dépenses, économies de cache, jetons, requêtes bloquées et drapeaux de gouvernance en un coup d'œil.

Application stricte des budgets — le dépassement de la limite renvoie une 402 au niveau de la passerelle, avant que la requête n'atteigne le fournisseur.

Gouvernance des sorties — une requête contenant une clé AWS est bloquée avec un 451 ; seule la catégorie est enregistrée, jamais la valeur.

Activité — chaque requête avec un statut distinct : succès · cache hit · limité par débit · modèle bloqué · budget dépassé · gouvernance bloquée.

Paramètres — CRUD complet pour l'organisation, les identifiants fournisseur, les équipes, les budgets et les clés virtuelles.

Les points de terminaison privés Bedrock / Vertex / Azure et les BAA sans entraînement résolvent le canal vers le fournisseur. Ils ne disent pas à la finance qui a dépensé les 40 000 $, n'attrapent pas les secrets à la sortie, ne donnent pas d'enregistrement aux auditeurs et ne montrent pas où la rotation de contexte brûle votre budget de jetons. C'est le fossé que Conduit comble — sans jamais voir vos prompts.
Tire les dernières images signées de GHCR (vérifiable via cosign verify, voir Posture de sécurité).
# 1. Récupérer le fichier compose + le modèle .env (pas besoin de cloner)
curl -fsSL https://raw.githubusercontent.com/anee769/conduit/master/docker-compose.yml -o docker-compose.yml
curl -fsSL https://raw.githubusercontent.com/anee769/conduit/master/.env.example -o .env
# 2. Générer une véritable clé de chiffrement maître
sed -i.bak "s|^MASTER_ENCRYPTION_KEY=.*|MASTER_ENCRYPTION_KEY=$(openssl rand -base64 32)|" .env && rm .env.bak
# 3. Tirer les images signées + démarrer
docker compose --profile app pull
docker compose --profile app up -d
# 4. Exécuter les migrations + amorcer le livre de tarifs (une fois)
docker exec conduit-gateway-1 pnpm --filter @finops/db db:migrate
docker exec conduit-gateway-1 pnpm --filter @finops/db seed-pricing
# → ouvrir http://localhost:3000/setup → créer org / credential / team / virtual key
Épingler à une version spécifique en exportant GATEWAY_IMAGE et CONTROL_PLANE_IMAGE avant up :
export GATEWAY_IMAGE=ghcr.io/anee769/conduit-gateway:v0.1.0
export CONTROL_PLANE_IMAGE=ghcr.io/anee769/conduit-control-plane:v0.1.0
git clone https://github.com/anee769/conduit && cd conduit
cp .env.example .env
sed -i.bak "s|^MASTER_ENCRYPTION_KEY=.*|MASTER_ENCRYPTION_KEY=$(openssl rand -base64 32)|" .env && rm .env.bak
docker compose --profile app up -d --build
docker exec conduit-gateway-1 pnpm --filter @finops/db db:migrate
docker exec conduit-gateway-1 pnpm --filter @finops/db seed-pricing
export ANTHROPIC_BASE_URL=http://localhost:4000
export ANTHROPIC_AUTH_TOKEN=vk_live_… # clé virtuelle depuis /setup
claude # ou cursor / codex / aider
Guide complet depuis zéro dans INSTALL.md.
LiteLLM est excellent pour les alias et le routage de modèles — Conduit ajoute la couche que vos équipes de sécurité et financières ont demandée. Portkey est le plus proche en termes de fonctionnalités, mais il est closed-source en entreprise dès que vous avez besoin de gouvernance + on-prem. Helicone est uniquement de l'observabilité (il vous dit où les jetons sont allés ; il ne contrôle pas où ils vont).
SECURITY.md pour la posture complète./invoke de Bedrock fonctionne.Conduit s'exécute entièrement dans votre propre cloud — aucun fournisseur dans le chemin de la requête, pas de rappel à la maison, air-gappable. Voir SECURITY.md pour le livre blanc (diagramme de flux de données, ce qui est stocké, crypto, authentification fermée, posture de conformité, modèle de menace).
ghcr.io/anee769/conduit-gateway et ghcr.io/anee769/conduit-control-plane à chaque tag git v* (voir .github/workflows/release.yml). Vérifier n'importe quel tag publié :
cosign verify ghcr.io/anee769/conduit-gateway:<tag> \
--certificate-identity-regexp 'https://github.com/anee769/conduit' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
bash scripts/sbom.sh.apps/gateway — Hono sur Node, le plan de données du chemin actif. Pas d'étape de build (tsx). Client ClickHouse sans dépendance + ioredis.apps/control-plane — Tableau de bord Next.js 15 / React 19 + API d'administration + assistant de première exécution /setup.packages/db — Schéma Drizzle, crypto AES-256-GCM, hachage de clés, tarification + budgets.usage_events en ajout seulement) + Redis (cache + limites de débit + compteurs de budget en direct).Cycle de vie d'une requête (apps/gateway/src/routes/proxy.ts) :
auth (vk) → rate limit → model allow-list → budget check
→ governance scan (T1 secrets + T2-lite entities)
→ cache lookup → resolve credential → adapter.prepare()
→ forward + tee stream (client untouched; meter branch in background)
bash scripts/run-tests.sh # suite complète unitaire + système réel (72 tests)
bash scripts/run-tests.sh --unit-only # logique pure, pas besoin de stack Docker
pwsh scripts/run-tests.ps1 # équivalent Windows
CI (.github/workflows/ci.yml) exécute les deux jobs à chaque PR — ne fusionner que lorsque le statut est vert.
Les PRs sont les bienvenus. Chemin rapide :
git checkout -b feat/my-change
# …
bash scripts/ci-local.sh # exécute les mêmes vérifications que la CI
bash scripts/ci-local.sh --fast # typecheck + unitaire uniquement, pas de Docker
git push -u origin feat/my-change
gh pr create --base dev
Flux des branches : feature → dev → master. La CI doit passer avant la fusion.
Apache License 2.0 — même licence que Kubernetes, Terraform, Kafka. Utilisez-le commercialement, modifiez-le, vendez-le ; ne revendiquez pas Conduit comme votre propre travail.
SECURITY.mddocs/run-with-litellm.mdINSTALL.md| Vous utilisez aujourd'hui | Configurez l'amont de Conduit comme |
|---|
| LiteLLM (n'importe quel modèle, n'importe quel fournisseur) | UPSTREAM_ANTHROPIC_URL=http://litellm:4000 → guide complet : docs/run-with-litellm.md |
| Portkey | Pointez UPSTREAM_OPENAI_URL / UPSTREAM_ANTHROPIC_URL vers votre URL de base Portkey |
| Direct Anthropic / OpenAI | Par défaut — rien à configurer |
| AWS Bedrock | Configurez un identifiant Bedrock dans /setup ; Conduit signe les requêtes avec SigV4 |
| Azure OpenAI | Configurez un identifiant Azure (nom du déploiement + api-version) dans /setup |
| Conduit | LiteLLM | Portkey | Helicone |
|---|
| Licence open-source | Apache 2.0 | MIT | Apache 2.0 (gateway) | MIT |
| Fonctionne entièrement sur site / dans votre VPC | ✅ | ✅ | ✅ (enterprise) | ✅ (self-host) |
| Routage + alias + repli des fournisseurs | ✅ (n'importe quel amont) | ✅ | ✅ | ❌ |
| Attribution des coûts par ingénieur (clés virtuelles avec noms) | ✅ | partielle (factures partagées clé maître) | ✅ | ✅ (observation uniquement) |
| Budgets stricts (402 fermé) | ✅ | partiel | ✅ | ❌ |
| Gouvernance des sorties (secrets + liste blanche d'entités par organisation, alerte→blocage) | ✅ | ❌ | ✅ (guardrails) | ❌ |
| Export CSV/JSON prêt pour l'audit (métadonnées uniquement) | ✅ | ❌ | partiel | ✅ |
| Observabilité de la rotation de contexte (courbe coût-et-erreur par taille de jetons d'entrée) | ✅ | ❌ | ❌ | ❌ |
| Les prompts / complétions jamais stockés | ✅ | logs par défaut | configurable | logs par défaut |
| Versions signées + SBOM CycloneDX | ✅ | ❌ | ❌ | ❌ |
| Conçu pour se placer au-dessus des autres | ✅ | n/a | n/a | n/a |