Files
wiki/Catalogue-Self-Hosted/apps/app-manifest.md
T
2026-06-09 18:40:21 +02:00

127 lines
7.7 KiB
Markdown

---
title: Manifest
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, artificial-intelligence, llm, router, model-routing, cost-optimization, typescript, mit]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=artificial-intelligence, https://github.com/mnfst/manifest]
---
# Manifest 🦚
> **Routeur intelligent de modèles pour agents IA** — redirige chaque requête vers le bon modèle (parmi 300+ modèles, 18+ fournisseurs) pour économiser jusqu'à 70 % sur les coûts d'inférence, sans changer une ligne du code client.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://app.manifest.build |
| **GitHub** | https://github.com/mnfst/manifest |
| **License** | MIT |
| **Langage** | TypeScript (96 %) |
| **Étoiles** | 413 |
| **Dernière MAJ** | 2026-06-04 |
| **Catégorie** | [[cat-artificial-intelligence]] |
## 📝 Description
**Manifest** est un **reverse-proxy LLM compatible OpenAI/Anthropic** qui se place devant vos appels d'API et décide intelligemment quel modèle invoquer pour chaque requête. L'objectif affiché est d'**éviter le gâchis** : beaucoup d'équipes payent `gpt-5` ou `claude-opus-4-7` pour des tâches triviales (résumé d'un e-mail, classification d'un log, reformulation d'une phrase) où un petit modèle open-source ou un `gpt-5-mini` ferait le travail pour 1 à 5 % du coût.
Le **routing** combine trois signaux : (1) la **complexité de la requête** (longueur, présence de code, intention détectée par un mini-classifieur), (2) la **spécificité** (besoin de contexte long, outils, JSON structuré), et (3) des **headers HTTP personnalisés** que l'application cliente peut envoyer pour forcer un fournisseur, un modèle, ou un budget max. Un **endpoint `/auto`** unique agrège 18+ providers (OpenAI, Anthropic, Google, xAI, DeepSeek, Mistral, Qwen, Moonshot, MiniMax, Xiaomi MiMo, Z.ai, BytePlus, OpenCode, Ollama, LM Studio, llama.cpp, OpenRouter, GitHub Copilot) et applique du **fallback automatique** en cas d'erreur ou de rate-limit.
Fonctionnalités clés : **dashboard web** avec **tracking de coût à la requête** (jusqu'au dollar près), **limites de dépenses** par utilisateur/projet avec notifications, **mélange de credentials** (clés API + abonnements ChatGPT Plus / Claude Max / GitHub Copilot), **cache de modèles par agent**, et **compression SSE** pour le streaming. Manifest est utilisé en interne par **217 projets** et compte **40 contributeurs**, 288 releases (v6.9.2 en juin 2026) et 5 169 commits — c'est un projet très actif. Idéal pour les équipes qui jonglent entre plusieurs providers, qui veulent unifier leur observabilité coûts, ou qui cherchent à **déguiser un usage Grok/Mistral/Claude Sonnet derrière une API OpenAI standard** pour ne pas réécrire leur SDK.
## 🚀 Installation
### Option 1 : Docker Compose (recommandé)
```yaml
# docker-compose.yml
services:
manifest:
image: mnfst/manifest:latest
container_name: manifest
restart: unless-stopped
ports:
- "2099:2099"
volumes:
- manifest-data:/app/data
- manifest-db:/app/db
environment:
- TZ=Europe/Paris
- DATABASE_URL=sqlite:///app/db/manifest.db
- JWT_SECRET=changez-moi-32-chars-minimum-ici
- NODE_ENV=production
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:2099/health"]
interval: 30s
timeout: 5s
retries: 3
volumes:
manifest-data:
manifest-db:
```
Une fois démarré, ouvrez `http://localhost:2099`, créez le **premier compte** (il devient admin automatiquement), puis allez dans **Settings → Providers** pour saisir vos clés API ou pointer vers vos Ollama / LM Studio locaux.
### Option 2 : Installation manuelle (one-liner officiel)
```bash
# Script d'install fourni par l'éditeur
bash <(curl -sSL https://raw.githubusercontent.com/mnfst/manifest/main/docker/install.sh)
```
Pour un déploiement sans Docker : `git clone` du repo, `pnpm install` (workspaces Turbo), `pnpm build`, puis lancer `node packages/server/dist/main.js` derrière un reverse-proxy (Caddy/Traefik/Nginx). Prérequis : **Node.js 20+**, 2 Go RAM, 2 vCPU.
## ⚙️ Configuration
La configuration passe par **deux niveaux** :
1. **Variables d'environnement** du conteneur :
- `JWT_SECRET` : signature des sessions web, **obligatoire en prod** (`openssl rand -hex 32`).
- `DATABASE_URL` : SQLite par défaut (`sqlite:///app/db/manifest.db`), PostgreSQL recommandé pour la prod.
- `NODE_ENV=production` : active la gestion d'erreurs stricte et désactive l'auto-signup.
2. **UI Settings → Providers** : ajoutez vos credentials par provider (clé API, token d'abonnement OAuth, URL locale pour Ollama). Le **premier utilisateur** créé est admin ; désactivez l'open-signup dès que possible.
**Exemple de routage intelligent** — l'app envoie un header `X-Manifest-Model-Tier: cheap` et Manifest choisit automatiquement entre `gpt-5-mini`, `claude-haiku-4-5` ou `qwen3-coder` selon la langue détectée et la longueur. Vous pouvez aussi forcer un modèle : `X-Manifest-Model: gpt-5`. Le **budget mensuel** se règle par projet (ex. 50 $/mois pour le bot Discord, 200 $/mois pour l'agent de code).
## 🔄 Alternatives
### Open Source
- **LiteLLM** (Python) — proxy LLM le plus mature, ~10k ⭐, 100+ providers, mais routage basique (pas de classifier embarqué).
- **OpenRouter** (propriétaire mais API ouverte) — agrégateur commercial, pas self-hostable, sert de **provider cible** pour Manifest.
- **Portkey AI Gateway** — concurrent direct, dashboard similaire, freemium avec self-host.
- **Helicone** — observabilité LLM (logs, coûts, latence) sans routing.
- **Unify** — équivalent cloud, payant, pas open source.
- [[app-open-webui]] — interface de chat LLM (consomme les providers, ne route pas).
- [[app-ollama]] — runtime local, s'intègre **comme provider** dans Manifest.
### Propriétaires (ce que Manifest remplace)
- **OpenAI API directe** — pas de visibilité coûts multi-projet, pas de fallback.
- **Cloudflare AI Gateway** — payant au-delà de 10 000 req/mois, pas de routing intelligent basé complexité.
- **AWS Bedrock + Custom Router** — cher, complexe, vendor-locké.
## 🔐 Sécurité
- **JWT_SECRET robuste** (`openssl rand -hex 32`) — sa fuite permet de forger des sessions admin. **Ne jamais** commiter.
- **Premier compte = admin** : dès la première connexion, **désactivez l'open-signup** dans Settings → Auth, sinon n'importe qui peut s'inscrire et consommer vos crédits.
- **Provider API keys** : Manifest les stocke **chiffrées au repos** (scrypt), mais restez vigilant : exportez la base SQLite vers un volume chiffré (LUKS/eCryptfs) et sauvegardez-la via [[app-restic]].
- **Reverse proxy HTTPS** (Caddy/Traefik) — indispensable, le dashboard expose toutes vos clés API.
- **Limites de coûts** (`/settings/billing`) — votre garde-fou contre un script buggé qui boucle 10 000 appels `gpt-5`.
- **Audit logs** : toutes les requêtes sont loggées avec prompt hash, modèle, tokens, coût — exportez-les vers [[app-loki]] pour audit long terme.
## 📚 Ressources
- [GitHub mnfst/manifest](https://github.com/mnfst/manifest)
- [Site officiel (cloud)](https://app.manifest.build/)
- [Documentation](https://github.com/mnfst/manifest/blob/main/docker/DOCKER_README.md)
- [r/selfhosted — discussion initiale](https://www.reddit.com/r/selfhosted/)
## Pages Liées
- [[cat-artificial-intelligence]] — Catégorie AI
- [[app-open-webui]] — Interface chat LLM
- [[app-ollama]] — Runtime LLM local (consommable par Manifest)
- [[app-litellm]] — Alternative proxy LLM
- [[recettes-docker-compose]] — Templates Docker
- [[securisation-home-lab]] — Bonnes pratiques sécurité