Skip to main content
@ai_kit/server fournit un serveur Hono préconfiguré qui expose vos agents et workflows sous forme d’API HTTP. Il gère les invocations synchrones, le streaming (SSE), la reprise des workflows en attente et peut générer automatiquement une documentation OpenAPI.

Installation

Ajoutez-le dans le même projet que @ai_kit/core afin de partager les agents et workflows que vous avez déjà déclarés. Besoin d’un projet clé en main ? Lancez simplement :

Exemple minimal

Par défaut, le serveur écoute sur 0.0.0.0 et le port PORT (ou 8787). Les instances d’agent et de workflow sont conservées en mémoire et réutilisées à chaque requête.
Besoin de verrouiller l’API ? Consultez le guide Authentification pour activer les tokens bearer et vos gardes personnalisés.

Endpoints exposés

Les payloads workflow doivent inclure inputData et peuvent ajouter metadata. Pour les agents, fournissez soit prompt, soit messages (aligné sur AI SDK).

Consommer depuis ClientKit

Pour appeler le serveur depuis un autre service Node.js ou un worker edge, installez @ai_kit/client-kit et pointez-le vers l’URL publique du serveur :
  • Les propriétés runtime ou runtimeContext fusionnent leurs metadata/ctx avec celles passées directement (metadata, ctx).
  • resumeWorkflow reste disponible pour débloquer un run en attente humaine avec { stepId, data }.
  • Passez signal dans les options pour annuler une requête (compatible fetch standard).

Streaming et reprise

  • stream utilise un ReadableStream SSE : l’événement run contient le runId, puis chaque étape déclenche un événement dont le nom = event.type.
  • Lorsque le workflow passe en waiting_human, le stream se ferme après avoir envoyé l’état. Utilisez ensuite resume avec { stepId, data } pour relancer l’exécution.
  • La route /stream annule automatiquement le run si le client ferme la connexion.

Middleware

Vous pouvez brancher des middlewares Hono (même syntaxe que Mastra) via l’option server.middleware. Passez soit une simple fonction (middleware global), soit un objet { path, handler } pour limiter la portée à certaines routes (path doit être une chaîne Hono valide, par exemple /api/*). Le champ middleware à la racine reste pris en charge pour compatibilité mais sera retiré à terme.

Swagger / OpenAPI

Swagger est activé par défaut hors production. Personnalisez-le via swagger :
  • L’UI est servie sur route (par ex. /docs).
  • L’OpenAPI JSON est disponible sur route + ".json".
  • Passez false pour désactiver Swagger même en développement, ou true pour l’activer en production.

Utiliser le binaire CLI

Le package expose la commande server-kit (exécutable via npx @ai_kit/server) qui démarre une instance ServerKit en lisant les variables d’environnement suivantes :
  • PORT (défaut 8787).
  • HOST (défaut 0.0.0.0).
  • NODE_ENV influe sur l’activation automatique de Swagger.
Le binaire fourni sert surtout de point de départ : il ne déclare aucun agent ni workflow tant que vous n’instanciez pas vous-même ServerKit dans votre application (par exemple dans apps/api/server.ts) et que vous n’y passez vos modules AI Kit. Inspirez-vous du CLI pour intégrer ServerKit dans votre outil de déploiement habituel.

Options de configuration

La méthode listen({ port, hostname, signal }) accepte également un AbortSignal pour arrêter proprement le serveur. Pour une implémentation complète, consultez packages/server/src/ServerKit.ts.

Télémétrie Langfuse

Activez Langfuse directement via la configuration ServerKit — aucun fichier d’instrumentation séparé n’est requis :
  • telemetry accepte un booléen ou la configuration complète d’ensureLangfuseTelemetry.
  • Définissez les variables LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY (et optionnellement LANGFUSE_BASE_URL).
  • Le CLI expose les flags --telemetry / --no-telemetry pour activer ou désactiver rapidement la télémétrie.