Stack technique

Open, moderne,
intégrable partout.

PulseLABS est construit sur des technologies éprouvées et largement adoptées. La stack est pensée pour l'intégration entreprise, le déploiement on-premise, et la compatibilité avec tous les modèles IA du marché.

Stack par couche

Architecture de bout en bout.

Interface utilisateur
Next.js 14Framework React (Pages Router)SSR, routing, optimisations natives
TypeScriptTypage statique frontendInterfaces partagées frontend ↔ backend
CSS Modules + inline stylesStylingPas de Tailwind — tokens CSS custom
Serveur API
FastifyFramework Node.jsPerformances, plugins, hooks middleware
TypeScriptTypage strictZod pour la validation des payloads
ts-node-devHot-reload devReload < 200ms en développement
Base de données
PostgreSQL 15Base relationnelleMulti-workspace, isolation par workspaceId
Prisma ORMMigrations + requêtesSchema-first, migrations typées
Mémoire épisodiqueStockage agentTable AgentMemory — clé/valeur + importance
Moteur IA
OpenAI APIModèles cloud par défautGPT-4o, GPT-4-turbo via aiProvider.ts
Claude (Anthropic)Modèle alternatifConfigurable dans AISettings DB
OllamaModèles locaux (on-premise)100% local, zéro requête externe
AIManagerAbstraction providerSwitch live sans redémarrage
Infrastructure
Docker / Docker ComposeContainerisationDéploiement on-premise en 4 étapes
JWTAuthentificationToken signé, workspace isolation middleware
StripePaiements (cloud)Désactivé en mode on-premise (APP_MODE=local)
API publique & SDK
REST API v1API publiqueAuthentification par clé `x-api-key`
SDK TypeScriptLibrairie officiellenpm i @pulselabs/sdk
WebhooksÉvénements sortantsSignature HMAC-SHA256, replay possible
Moteur IA

Un provider unique pour tous les modèles.

Toutes les requêtes IA transitent par aiProvider.ts. Ce module abstrait retourne le bon client selon la configuration active en base de données. Basculer entre OpenAI, Claude et Ollama se fait sans redémarrer le serveur — et sans changer une seule ligne de code.

backend/src/services/ai/aiProvider.ts
const { client, cfg } = await getAI()
// client = OpenAI SDK | Anthropic SDK | Ollama
// cfg    = model name, temperature, token budget
// Switch live via AISettings in DB — no restart needed

Modèles IA supportés

ModèleTypeLatenceCapacitéOn-Prem
OpenAI GPT-4oCloudFaibleÉlevée
Claude Sonnet 4CloudFaibleÉlevée
Ollama (Llama 3)LocalVariableBonne
Ollama (Mistral)LocalVariableBonne
Mémoire épisodique

Les agents se souviennent de tout.

Chaque agent maintient une table de mémoire persistante en PostgreSQL (via memoryService.ts). Les entrées sont typées par catégorie (health, work, goals, preferences…), pondérées par un score d'importance, et injectées automatiquement dans le contexte de chaque nouvelle session.

key
string
Identifiant sémantique
value
string
Contenu de la mémoire
category
enum
Type de souvenir
importance
int 1–10
Score de priorité
agentId
FK
Agent propriétaire
workspaceId
FK
Isolation multi-tenant
API publique

REST API v1 + SDK TypeScript officiel.

Tous les modules sont accessibles programmatiquement via une API REST authentifiée par clé. Un SDK TypeScript officiel simplifie l'intégration. Les webhooks permettent d'écouter les événements en temps réel (fin de débat, fin de simulation, alerte risque).

Documentation API →SDK TypeScript →Webhooks →