Gestion des apps Streamlit
Une app Streamlit est une application de données Python exécutée dans un bac à sable isolé à l'intérieur de PostHog.
Chaque app possède des versions immuables de son code ; une version est active ; un processus de bac à sable sert la version active.
L'intégralité du cycle de vie est pilotée par les outils MCP streamlit-apps-*.
Le chemin heureux : créer → définir la source → démarrer → partager
streamlit-apps-createavec unname(optionnellementdescription,cpu_cores0,25–8,memory_gb0,5–16, défauts 0,5 / 1). L'app existe mais n'a pas encore de code.streamlit-apps-set-sourceavec la source complèteapp.pyen une seule chaîne. Cela crée la version 1 et l'active. Écrivez la source selon la skillwriting-streamlit-apps— en particulier, utilisezposthog_apps.query()pour les données PostHog, jamaisimport posthog.streamlit-apps-start. Retour immédiat ; le bac à sable démarre de façon asynchrone.- Interrogez
streamlit-apps-statusjusqu'à ce questatussoitrunning(généralement bien en dessous d'une minute). S'il passe àerror, lisezlast_error— voir Dépannage ci-dessous. - Partagez l'app : l'
_posthogUrlretourné par create/get/start (/streamlit-apps/{short_id}) est la page de l'app dans PostHog. Ce lien est celui que vous donnez aux utilisateurs. Les spectateurs doivent être connectés à PostHog avec accès au projet (l'app s'affiche dans une iframe authentifiée ; il n'y a pas d'URL publique).
Dont les données l'app lit
Les requêtes de l'app s'exécutent avec l'accès aux données de la personne qui a créé la version active — définissez la source, et l'app lit ce que vous pouvez lire. Quiconque peut visualiser l'app voit ces résultats, donc traiter la publication d'une app comme un partage de données avec tout le monde sur le projet. Une app dont l'auteur de la version a depuis été supprimé ne peut pas démarrer ; téléchargez une nouvelle version pour la corriger.
Mise à jour du code
Appelez streamlit-apps-set-source à nouveau : cela crée la version suivante et l'active.
Un bac à sable en cours d'exécution est arrêté pour qu'il ne continue pas à servir du code obsolète — appelez streamlit-apps-start après pour servir la nouvelle version.
Les versions sont immuables, mais non permanentes : streamlit-apps-versions affiche les 50 plus récentes, et les versions non-actives de plus de 30 jours sont supprimées ainsi que leur code.
Il n'y a pas d'outil de restauration : pour restaurer, définissez à nouveau l'ancienne source (récupérez-la de votre conversation ou où elle est conservée — les versions stockent le zip, pas une vue de source inline).
Arrêt, inactivité et suppression
streamlit-apps-stoparrête le bac à sable ; le code et les versions restent inchangés. Redémarrer plus tard est peu coûteux.- Les bacs à sable inactifs sont arrêtés automatiquement après une période sans activité — une app arrêtée est normal, pas une erreur. Redémarrez-la quand nécessaire.
streamlit-apps-deletearrête tout bac à sable et supprime l'app en doux. Confirmez auprès de l'utilisateur avant de supprimer quoi que ce soit que vous n'aviez pas créé dans cette conversation.
Dépannage
status: erroraveclast_error: "Start failed: ..."— le bac à sable n'a pas pu être provisionné ou démarré. Réessayezstreamlit-apps-startune fois ; s'il persiste, exposezlast_errorà l'utilisateur (les échecs de provisionnement sont généralement côté plateforme, pas côté app).- Les appels d'outils retournent 403 "Streamlit apps is not available." — le flag de fonctionnalité
streamlit-appsest désactivé pour cette organisation. C'est une porte de déploiement, pas une erreur que vous pouvez corriger ; dites-le à l'utilisateur. - L'app s'exécute mais une requête à l'intérieur échoue — c'est une question de code d'app ; voir
writing-streamlit-apps(limites du bridge : 30s d'exécution, 256 MB de mémoire par requête). - L'app affiche du code ancien après set-source — vous avez sauté l'étape « démarrer après set-source » ; le bac à sable a été arrêté et nécessite un démarrage.
Renommage et redimensionnement
streamlit-apps-update change le nom d'une app, sa description, cpu_cores (0,25–8) ou memory_gb (0,5–16) ; seuls les champs que vous transmettez changent.
Le nouveau dimensionnement s'applique la prochaine fois que le bac à sable démarre, donc arrêtez + redémarrez après redimensionnement d'une app en cours d'exécution.
Les défauts (0,5 CPU / 1 GB) conviennent aux apps de tableau de bord typiques.
Augmentez memory_gb uniquement quand l'app elle-même contient de grands DataFrames en mémoire — le cap de requête du bridge HogQL de 256 MB est côté serveur et NE CHANGE PAS avec le dimensionnement du bac à sable, donc les bacs à sable plus grands ne corrigent pas les requêtes défaillantes.