Déployer GrowthOps et le mettre sous licence
GrowthOps est en marque blanche : vous exploitez un déploiement sous votre propre marque et le vendez à vos propres clients. Cette page traite de ce qui se joue entre vous et Kuploy — où tourne le déploiement, qui compte comme son exploitant, et sa licence. Ce que vos clients vous achètent est sur Offres, clients et tarifs.
Les mécanismes de licence que GrowthOps partage avec tous les produits — codes de rattachement, synchronisation, états — sont sur Licences.
L'usage de GrowthOps est documenté dans l'application. Chaque déploiement sert un guide utilisateur public sur /docs — premiers pas, recommandations, Ask Google, équipe et sièges, et mesure — et y renvoie depuis son pied de page. Voyez-le sur growthops.kuploy.app/docs. Cette section ne le répète pas.
1. Dites où il tourne
Définissez GROWTHOPS_TRUST. C'est cette variable qui décide si le déploiement peut détenir une clé de licence, et rien ne la devine : toute valeur autre que exactement server est traitée comme tenant, de sorte que ne rien dire vous donne la réponse prudente.
| Valeur | Où tourne le déploiement | Une clé de licence dans l'environnement |
|---|---|---|
tenant (par défaut) | Comme charge de travail sur le cluster de quelqu'un d'autre — sur Kuploy Cloud, par exemple | Ignorée. La clé appartiendrait à celui qui exploite le cluster, et non à vous. Rattachez la licence à la place. |
server | Sur une infrastructure que vous possédez — Vercel, votre propre cluster | Honorée comme amorce, depuis KUPLOY_LICENSE_KEY |
La raison en est donnée dans Licences → Une clé de licence est un secret.
2. Dites qui l'exploite
Posséder une organisation sur le déploiement ne fait de personne son exploitant : chacun possède celle qu'il crée en s'inscrivant. GrowthOps reconnaît son exploitant de deux façons, et l'une des deux suffit :
- Le propriétaire de l'exploitant sous licence, connecté avec Kuploy. La question est posée à kuploy.app en direct, chaque fois. Cela exige que la connexion Kuploy soit configurée sur le déploiement (
KUPLOY_OIDC_CLIENT_IDetKUPLOY_OIDC_CLIENT_SECRET) — voir Le SSO avec kuploy.app. - Une adresse vérifiée dans
GROWTHOPS_OPERATOR_EMAILS, séparées par des virgules. C'est ainsi que vous entrez sur un déploiement neuf, avant qu'il n'y ait de licence à interroger. C'est une identité, et non un secret : elle n'accorde rien sur kuploy.app, et quiconque peut la définir maîtrise déjà le déploiement. Seules les adresses vérifiées comptent : il faut doncREQUIRE_EMAIL_VERIFICATION=true.
Cette liste d'adresses continue de fonctionner après le rattachement de la licence, et c'est délibéré : c'est ainsi que vous rentrez quand la licence est unlinked, ou que kuploy.app est injoignable.
3. Connectez-vous sur /admin/sign-in
Operator sign-in est la porte de l'exploitant. Elle aboutit sur la page de licence, fonctionne même sans organisation sur le déploiement, et renvoie les clients qui s'y égarent vers le /sign-in ordinaire. Elle est tenue à l'écart des résultats de recherche.

4. Rattachez la licence
Sur /admin/license, demandez un code de rattachement et saisissez-le sur kuploy.app/claim. La clé voyage de kuploy.app jusqu'au stockage propre au déploiement ; vous ne la manipulez jamais. La page affiche ensuite l'état de la licence et le niveau que rapporte kuploy.app :

Si la page indique que le déploiement n'est pointé sur aucun centre, définissez KUPLOY_HUB_URL et PUBLIC_URL — les deux sont nécessaires.
5. Planifiez le rafraîchissement de la licence
GrowthOps ne se synchronise pas dans son propre processus. Il ne relit kuploy.app que lorsqu'on le lui demande : planifiez donc un POST /api/license/sync toutes les 30 minutes, authentifié par Authorization: Bearer $CRON_SECRET. Sur Kuploy Cloud, c'est une planification applicative qui exécute :
sh /app/scripts/license-sync.sh
- Sans
CRON_SECRET, la route répond 404 à tous les appels — celui de l'ordonnanceur compris : le symptôme est donc le silence, et non une erreur. - Une synchronisation en échec fait échouer l'exécution planifiée, pour que vous le voyiez.
- Avant le rattachement, l'appel est sauté plutôt qu'échoué : un déploiement qui attend d'être rattaché n'est pas cassé.
Sans planification, la licence devient stale, puis frozen, et les changements d'offre ou une révocation n'atteignent jamais le déploiement.
6. Choisissez comment GrowthOps atteint l'IA
GrowthOps rédige ses textes avec Claude. Il s'appuie, dans cet ordre, sur :
- Votre propre clé —
ANTHROPIC_API_KEY, etANTHROPIC_BASE_URLsi vous passez par votre propre passerelle. Dès qu'elle est définie, elle l'emporte toujours, et rien de ce qui suit ne s'applique. - L'IA fournie par Kuploy — du crédit prépayé que vous achetez sur kuploy.app. Elle exige une licence rattachée, et reste désactivée jusqu'à ce que vous l'activiez.
Activer l'IA fournie par Kuploy
- Achetez un lot de crédit sur kuploy.app.
- Sur
/admin/license, cliquez sur Use Kuploy-supplied AI et confirmez. Le bouton n'apparaît que tant qu'aucuneANTHROPIC_API_KEYn'est définie. - La licence se synchronise aussitôt. La carte au-dessus du bouton indique alors Generation runs on AI credit you bought on kuploy.app, avec un lien vers kuploy.app → Billing pour en racheter. Turn off Kuploy-supplied AI la désactive, avec une synchronisation immédiate également ; définir
ANTHROPIC_API_KEYrevient à votre propre clé.

La ligne AI de la page de licence dit quelle source est en service : Your own key (ANTHROPIC_API_KEY) ; Off — no key set, Kuploy-supplied AI not turned on ; ou Kuploy-supplied · credit … · spent … — ou bien la raison invoquée par kuploy.app lorsqu'il refuse. Les montants sont ceux de la dernière synchronisation, et une dépense inférieure à un cent s'affiche under US$0.01. Le rafraîchissement planifié les tient à jour, et un nouveau jeton atteint le déploiement de lui-même.
La génération est refusée jusqu'à ce que vous en rachetiez. /api/health rapporte generationSource : own, kuploy, ou null lorsqu'aucune des deux n'est disponible.
Tourner sans licence
C'est pris en charge : rien n'est coupé. Ce que vous perdez, c'est le plafond de votre niveau : vos propres offres ne sont alors vérifiées contre aucun. Tout déploiement rapporte licence: {plan, state} sur /api/health.