Reciprok Docs

Coûts opérationnels

Budget mensuel prévisionnel, stack Dokploy + open source + IA

Reciprok est volontairement frugal côté infra : tout ce qui peut être self-host l'est, ce qui reste payant est ce qui apporte une vraie valeur (Claude, Whisper, Resend). Cette page liste les coûts attendus, comment les surveiller, et comment éviter les dérapages.

Disclaimer : les prix listés sont ceux affichés par les providers en avril 2026. Toujours vérifier sur la page tarifs officielle avant chaque déploiement.

Estimation mensuelle (volume cible)

Hypothèses :

  • ~100 demandes / mois traitées
  • ~1 000 messages chat IA / mois (10 par demande en moyenne)
  • ~50 audios uploadés / mois (membres + vocaux organisateurs)
  • 70 000 membres en base
  • ~3-5 utilisateurs internes
PosteProviderDétailCoût mensuel
Hébergement app + DB + monitoringHostinger VPS (Dokploy)1 VPS suffit (~16 GB RAM, 4 vCPU)~12-20€
LLM ClaudeAnthropic1000 messages × ~3000 tokens in/out, prompt caching activé~50-80€
EmbeddingsOpenAI text-embedding-3-smallRefresh members + queries~3-5€
WhisperOpenAI50 audios × 5 min en moyenne~10€
EmailResend< 3000 emails (free tier)0€
WhatsAppMeta Cloud API~200 conversations utilitaires~5-10€
StorageCloudflare R2Photos, audios, backups (~10 GB)0€ (free tier 10 GB)
Push notificationsWeb Push natif-0€
MonitoringGrafana / Loki / Prometheus / GlitchTip / Uptime Kuma (self-host)-0€
DNSCloudflare-0€
TOTAL~80-125€/mois

Pas de Neon, pas de Vercel, pas de Sentry SaaS, pas de Datadog, pas de Twilio. La quasi-totalité du budget va dans les services à valeur ajoutée IA.

Scénario "ça décolle"

Si l'usage explose (chaque utilisateur converse intensivement, l'IA fait beaucoup de tool calls par message) :

PosteVolume × NCoût mensuel
Claude5000 messages × tool calls profonds~300-400€
Embeddings70k members × 4 refresh / mois~10€
Whisper200 audios~40€
Resendpassage plan Pro 50k mails~20€
WhatsApp Meta1000 conversations~30€
VPS plus gros (32 GB)upgrade Hostinger~30€
Total ajusté~430-530€/mois

Garde-fou principal : si on dépasse 200€ de coût IA / mois, alerte automatique et investigation. Probablement un usage abusif ou un bug.

Scénario "Black Swan"

Une boucle de tool use qui part en vrille, un script qui régénère 70k embeddings 10 fois, une API attaquée. Plafond hard à 600€/mois pour l'IA : au-delà, l'app passe en mode dégradé (chat désactivé, search via SQL/vector seulement, pas de LLM).

Prompt caching (obligatoire)

Anthropic supporte le prompt caching : on cache les parties répétées du prompt (system prompt, contexte de la demande) et on paie 90 % moins cher en input pour ces tokens.

Pour Reciprok :

  • Le system prompt est identique pour toutes les conversations → cacher
  • Le contexte de la demande (description, infos, résultats actuels) est répété à chaque message d'une même conversation → cacher
const response = await anthropic.messages.create({
  model: 'claude-sonnet-4-5',
  system: [
    {
      type: 'text',
      text: SYSTEM_PROMPT,
      cache_control: { type: 'ephemeral' }, // ← cache du system prompt
    },
  ],
  messages: [
    {
      role: 'user',
      content: [
        {
          type: 'text',
          text: requestContext,
          cache_control: { type: 'ephemeral' }, // ← cache du contexte demande
        },
        { type: 'text', text: userMessage }, // ← non caché
      ],
    },
  ],
  tools,
});

Économie attendue : 60-80 % sur les coûts d'input du chat. Sans caching, le coût Claude serait 3-5× plus élevé.

Garde-fous à implémenter dès le jour 1

1. Compteur de tokens par utilisateur

export const aiUsage = pgTable('ai_usage', {
  id: uuid('id').defaultRandom().primaryKey(),
  userId: text('user_id').notNull(),
  date: date('date').notNull(),
  provider: text('provider').notNull(), // 'anthropic' | 'openai'
  model: text('model').notNull(),
  inputTokens: integer('input_tokens').notNull(),
  outputTokens: integer('output_tokens').notNull(),
  cachedTokens: integer('cached_tokens').default(0).notNull(),
  costEur: numeric('cost_eur', { precision: 8, scale: 4 }).notNull(),
  context: text('context'), // 'chat_message' | 'embedding' | 'transcription'
});

À chaque appel API, on log la consommation. Page admin pour visualiser :

  • Coût par jour / semaine / mois
  • Coût par utilisateur
  • Coût par contexte (chat vs embedding vs transcription)

Ces métriques alimentent aussi Prometheus (cf. operations/monitoring).

2. Rate limiting

const RATE_LIMITS = {
  chat_messages_per_hour: 60,
  search_per_hour: 100,
  audio_uploads_per_day: 20,
  email_sends_per_hour: 50,
};

Implémenté côté API (macro Elysia). Si dépassé : error(429, 'TOO_MANY_REQUESTS').

3. Caps de coût mensuel

const MONTHLY_CAPS = {
  warning: 200, // €
  critical: 400, // €
  hard_stop: 600, // €
};

Worker quotidien qui vérifie la consommation cumulée du mois :

  • À 200€ : alerte Discord équipe + email admin
  • À 400€ : alerte critique
  • À 600€ : désactivation temporaire du chat IA (passe en mode "lecture seule")

4. Timeouts et max iterations

const AI_LIMITS = {
  tool_call_timeout_ms: 5000,
  max_iterations_per_message: 10,
  max_message_size_tokens: 8000,
};

Évite qu'une boucle agentique partie en vrille consomme des tokens à l'infini.

5. Alertes GlitchTip / Grafana

  • Erreurs API providers (Anthropic 5xx, rate limits OpenAI)
  • Augmentation soudaine du coût (× 3 vs jour précédent)
  • Échecs de transcription Whisper
  • Échecs d'envoi d'email Resend

Pricing détaillé par provider

Tarifs avril 2026, vérifier les pages officielles avant intégration.

Anthropic (Claude Sonnet 4.6, claude-sonnet-4-5)

TypePrix
Input$3 / 1M tokens
Cached input read$0.30 / 1M tokens (10× moins cher)
Cached input write$3.75 / 1M tokens (25 % plus cher la 1ère fois)
Output$15 / 1M tokens

Astuce : le cached input write est plus cher la première fois, mais devient ultra rentable dès le 2ᵉ message d'une conversation.

OpenAI

ServicePrix
text-embedding-3-small$0.02 / 1M tokens
Whisper$0.006 / minute
tts-1 (futur)$15 / 1M caractères

Resend

PlanPrixVolume
Free0€100 emails/jour, 3 000/mois
Pro$20/mois50 000 emails/mois

Pour Reciprok au démarrage, le plan Free suffit. Pro à activer si on dépasse 3 000 mails/mois.

WhatsApp Cloud API (Meta)

Tarification "conversation-based" Meta (avril 2026, FR) :

  • 1 000 conversations utilitaires gratuites par mois (free tier)
  • Au-delà : ~0.005 € à 0.04 € par conversation selon le type (utility, marketing, authentication)
  • Pas de marge revendeur (vs Twilio)

Pour Reciprok en volume nominal : ~5-10€/mois.

Hostinger VPS

PlanPrixSpecs
KVM 4~12€/mois4 vCPU, 16 GB RAM, 200 GB SSD
KVM 8~22€/mois8 vCPU, 32 GB RAM, 400 GB SSD

KVM 4 suffit pour le démarrage (app + Postgres + monitoring + workers sur le même VPS).

Cloudflare R2

PostePrix
Storage$0.015/GB/mois (gratuit jusqu'à 10 GB)
Egress (download)0€ (différenciateur clé vs S3)
Operations$4.50/M class A, $0.36/M class B

R2 = quasi-gratuit pour Reciprok.

Optimisations actionnables

  1. Active le prompt caching dès le jour 1, économie 60-80 % sur le chat
  2. Embed les members en batch la nuit, pas à chaque update
  3. Cache les résultats de recherche identiques pendant 5 minutes (mêmes critères, même demande)
  4. Compresse les audios avant upload (Opus 16 kHz mono = 10× plus petit que MP3)
  5. Lazy load les transcripts, ne les renvoie pas par défaut, seulement à la demande
  6. Tier les modèles : Sonnet pour 99 % des cas, Opus uniquement pour les tâches complexes (training, comparaisons historiques)
  7. Self-host tout ce qui peut l'être : monitoring, status page, mailcatcher en dev
  8. Backups Postgres uniquement vers R2 : pas de service de backup tiers payant

Voir aussi

  • operations/environments, où les services tournent (et donc qui paye quoi)
  • operations/monitoring, d'où viennent les alertes coûts
  • ADR-02, choix de la stack IA
  • ADR-05, Resend comme provider email
  • ADR-06, Postgres self-host (Dokploy) au lieu de Neon

On this page