managing-streamlit-apps

Par posthog · skills

Créez, déployez et gérez des applications Streamlit dans PostHog via les outils MCP `streamlit-apps` — créez une application, définissez son code source, démarrez et arrêtez son sandbox, interrogez son statut, listez les versions, supprimez-la et partagez-la avec des humains via son URL PostHog. À utiliser lorsqu'on vous demande de « créer une application Streamlit », « déployer une data app », « livrer une application de dashboard », « redémarrer/arrêter mon application », « pourquoi mon application ne fonctionne pas », ou « donnez-moi un lien vers l'application ».

npx skills add https://github.com/posthog/skills --skill managing-streamlit-apps

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

  1. streamlit-apps-create avec un name (optionnellement description, cpu_cores 0,25–8, memory_gb 0,5–16, défauts 0,5 / 1). L'app existe mais n'a pas encore de code.
  2. streamlit-apps-set-source avec la source complète app.py en une seule chaîne. Cela crée la version 1 et l'active. Écrivez la source selon la skill writing-streamlit-apps — en particulier, utilisez posthog_apps.query() pour les données PostHog, jamais import posthog.
  3. streamlit-apps-start. Retour immédiat ; le bac à sable démarre de façon asynchrone.
  4. Interrogez streamlit-apps-status jusqu'à ce que status soit running (généralement bien en dessous d'une minute). S'il passe à error, lisez last_error — voir Dépannage ci-dessous.
  5. Partagez l'app : l'_posthogUrl retourné 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-stop arrê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-delete arrê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: error avec last_error: "Start failed: ..." — le bac à sable n'a pas pu être provisionné ou démarré. Réessayez streamlit-apps-start une fois ; s'il persiste, exposez last_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-apps est 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.

Skills similaires