Isolation des charges de travail exécutables
Comment Scrydon sélectionne l'exécution microVM ou processus géré pour les tours Agent, les fonctions, les implémentations d'intégration et les jobs de notebook.
Scrydon utilise une fabrique d'exécution unique pour les charges de travail exécutables. Chaque charge est liée à un seul niveau avant son démarrage :
| Niveau | Garantie fournie |
|---|---|
microvm | Une charge de travail neuve dotée d'un noyau invité dédié via le Runtime Plane authentifié. Il s'agit du niveau isolé. |
managed_process | Un nouvel arbre de processus enfant détenu par un acteur Dapr. Il se met à l'échelle horizontalement grâce au placement Dapr, mais partage le noyau du pod hôte de l'acteur et reste donc plus faible qu'une microVM. |
Il n'existe aucun repli vers une exécution en cours de processus dans Agentic, API Platform ou Analytics. Une exécution ne change jamais de niveau après son démarrage.
Qui contrôle le niveau
Les opérateurs du déploiement choisissent les backends présents en déployant le
Runtime Plane et/ou l'hôte d'acteur géré. Scrydon privilégie toujours microvm.
Un administrateur d'organisation contrôle Exiger l'exécution isolée dans
Paramètres → Plateforme → Compute :
- Option activée ou non définie : seul
microvmest admissible. S'il est indisponible, la charge est refusée. - Option désactivée :
microvmreste prioritaire ; Scrydon peut se replier surmanaged_processlorsque son profil d'acteur est prêt.
Une intégration ou une capacité peut exiger microvm malgré l'assouplissement de
l'organisation. Les paramètres d'organisation ne peuvent pas rendre disponible
un backend non déployé ou non prêt.
Le processus géré est un assouplissement explicite, pas un autre nom pour l'isolation par VM. Chaque invocation reçoit un nouveau processus et un nouvel espace de travail, mais partage le noyau hôte et l'identité du pod de l'hôte d'acteur.
Où chaque charge s'exécute
Les deux niveaux réutilisent les mêmes runners détenus par la plateforme :
- Les tours Agent utilisent le runner de bundle Agent borné.
- Les blocs Fonction utilisent le profil QuickJS du runner de bundle fournisseur.
- Les implémentations d'intégrations fournisseur utilisent le runner de bundle fournisseur et le courtier de sortie de confiance.
- Les jobs de notebook utilisent le runtime de job Marimo et le courtier de stockage.
Le niveau d'exécution modifie le placement et le propriétaire du cycle de vie ; il ne crée pas une seconde implémentation du protocole Agent, Fonction, intégration ou notebook.
Espace de travail et outils Agent
Un tour Agent possède un /workdir éphémère pendant toute sa session bornée.
Les outils locaux au runner incluent l'exécution shell et les opérations de
lecture, écriture et listage de fichiers. L'image du runner fournit notamment
Git, curl, ripgrep, jq, Node.js, npm, Python, make et des utilitaires d'archive.
L'espace de travail est détruit à la fin du tour. Il ne persiste pas dans un autre bloc, une autre exécution de workflow ou un autre tour de conversation.
Outils que cet Agent ne peut pas exécuter
Toutes les intégrations ne peuvent pas s'exécuter dans un tour d'Agent isolé. Lorsqu'un outil sélectionné n'y est pas disponible, le tour est refusé avant l'appel au modèle.
Le refus nomme les outils concernés uniquement avec leur libellé lisible ; il n'inclut jamais d'identifiant d'outil interne avec portée ni d'UUID d'organisation. Retirez chaque sélection non prise en charge du bloc Agent, puis relancez le workflow. Une intégration activée dans les Paramètres n'est pas automatiquement disponible dans cet Agent isolé.
Identifiants et appels à la plateforme
Les charges exécutables ne reçoivent aucun identifiant réutilisable de fournisseur, OAuth, base de données, Dapr ou Kubernetes.
- Les appels Agent utilisent des autorisations racine et par action à courte durée de vie.
- Le code source d'une Fonction ne reçoit aucune autorisation d'identifiant ou de sortie réseau.
- Le code du runner fournisseur reçoit des autorisations d'invocation et un socket privé vers le courtier ; seul le courtier de confiance reçoit l'autorisation opaque d'accéder aux identifiants.
- Le code d'un notebook reçoit des capacités de stockage limitées à l'exécution via son courtier.
Chaque autorisation est liée à l'organisation, l'espace de travail, l'exécution, le plan, l'opération, les budgets et l'expiration. La plateforme la révoque pendant le nettoyage terminal ; sa durée de vie reste la borne finale si la révocation ne peut pas être confirmée.
Accès réseau
Installer un client réseau n'accorde aucun accès réseau. Les charges microVM utilisent le mur de sortie du Runtime Plane. Les implémentations fournisseur en processus géré passent par le même contrat de courtier fournisseur de confiance. L'instantané de sortie de l'organisation et les réseaux bloqués par le déploiement restent la référence.
Comportement en cas d'échec
Avant l'envoi, la sélection vérifie les backends déployés, l'exigence de l'organisation, le minimum de la capacité, l'authentification du backend et l'état de préparation du profil de charge. L'ordre produit est microVM d'abord, puis processus géré uniquement si l'organisation l'autorise.
- Si l'organisation exige l'isolation et que la microVM n'est pas prête, l'exécution est refusée.
- Si l'assouplissement est autorisé mais que le profil d'acteur géré est indisponible, l'exécution est refusée.
- Si le runner sélectionné échoue, la tentative échoue sur ce niveau. Scrydon ne la relance pas sur un backend plus faible.
- Si l'hôte d'acteur redémarre pendant l'exécution d'un enfant, le résultat est signalé comme incertain après récupération ; le code arbitraire n'est pas rejoué silencieusement.
Prise en charge des déploiements
| Cible de déploiement | Frontière la plus forte prise en charge | Exigence de qualification |
|---|---|---|
| AKS avec Pod Sandboxing | microvm | Pool de nœuds Kata géré, nœud Ready correspondant et preuve du candidat exact |
| Kubernetes autogéré ou k3s sur Linux/KVM | microvm | RuntimeClass Kata/QEMU, KVM, CNI appliquant les règles et preuve du nœud natif |
| Kubernetes générique sans Kata/KVM | managed_process | État d'acteur Dapr, canaux authentifiés, suppression des enfants neufs et smoke test de la charge |
| EKS, GKE, OpenShift et autres Kubernetes gérés | managed_process | Qualification du processus géré ; une preuve fournisseur distincte est nécessaire pour la microVM |
| Offre Azure Marketplace officielle | managed_process | Image de l'acteur géré et smoke test des profils |
| Package Kubernetes isolé officiel | microvm | Importer les images épinglées et prouver le chemin Kata hors ligne complet |
| Docker Compose, Docker Desktop et macOS natif | managed_process | Préparation de l'acteur Dapr local et smoke test d'un nouvel enfant |
Pour le développement local :
bun run dev:alldémarre l'hôte d'acteur en processus géré et ne requiert ni KVM, ni Runtime Plane Rust, ni invité Apple Container.bun run dev:all --mode=isolatedutilise uniquement les microVM et démarre le chemin Runtime Plane.
Pour les valeurs Helm et la qualification de production, consultez la documentation de déploiement.