Chargement de l'image...Kiro

Produit

  • À propos de Kiro
  • IDE
  • CLI
  • Web
  • Mobile
  • Crew
  • Tarification
  • Téléchargements

Pour

  • Entreprise
  • Startups
  • Étudiants

Communauté

  • Aperçu
  • Ambassadeurs
  • Discord
  • Événements
  • Powers
  • Boutique
  • Vitrine

Ressources

  • Docs
  • Blogue
  • Journal des modifications
  • FAQ
  • Signaler un bogue
  • Suggérer une idée
  • Soutien à la facturation

Réseaux sociaux

Conditions d'utilisation du siteLicencePolitique d'IA responsableMentions légalesPolitique de confidentialitéPréférences relatives aux témoins
Chargement de l'image...Kiro
  • Entreprise
  • Tarification
  • Docs
SE CONNECTERTÉLÉCHARGER
Chargement de l'image...Kiro

Pour commencer

InstallationAuthentificationVotre premier projet

Modèles

AperçuModèles disponiblesEffort de raisonnement

Fonctionnalités

Comment fonctionne Kiro
Specs
Steering
Hooks
MCP
Autorisations
Agents personnalisés
Agent Skills
Powers
Sessions cloudCompactionKiroignorePoints de contrôle et rewind
Outils intégrés
Portées de configuration

IDE 1.x

Nouveautés de la version 1.0
Configuration et premier lancement
Éditeur
Chat
Expérimental
DépannageRéférence 0.x

CLI

Nouveautés de la version 3.0
Configuration et première exécution
Interface utilisateur du terminal
Clavardage
Mode vocalMode sans interfaceACPAutocomplétion
Expérimental
Référence 2.x

Crew

Démarrage rapideInstallationFonctionnement 24/7
Chat
Agent Capabilities
Fonctionnalités
Sous-agents
Planification
Artéfacts
Multi-instance
Task Runner
Memory
Knowledge
Instantané et restauration
Interfaces
Applications
ConfigurationSécuritéDépannage

Web - Aperçu

Configuration et première exécutionIdentity Center
Connectez vos dépôts
Utilisation de l'agent
Mode autonomeAutomatisationsMémoire
Sandbox

Mobile - Aperçu

Aperçu

Commandes et référence

Commandes CLICommandes à barre obliqueOutils intégrésCodes de sortieParamètres

Facturation

AperçuGestion de votre abonnementMise à niveau de votre forfaitRétrogradation de votre forfaitAnnulation de votre forfaitAchat de crédits supplémentairesGestion de vos paiementsGestion des notifications d'utilisationGestion de vos impôtsCommuniquer avec le soutien à la facturationSuppression de votre compteQuestions connexes

Entreprise

ConceptsDémarrage rapide de l'intégration
Connexion de votre fournisseur d'identité
Abonnez votre équipeGérer les abonnements
Governance
Surveillance et suivi
ParamètresMises à jour géréesFacturationIAMRégions prises en charge

Confidentialité et sécurité

AperçuProtection des donnéesRéférences de codeValidation de la conformitéSécurité de l'infrastructureAutorisations IAMPare-feu, mandataires et périmètres de donnéesPoints de terminaison VPC (AWS PrivateLink)

Guides

Aperçu
Prise en charge des langages
Apprendre en jouant

Migration

Migration depuis Q DeveloperMigration depuis VSCodeMise à niveau depuis Q CLI
  1. Docs
  2. Crew
  3. Fonctionnalités
  4. Multi-instance
Afficher en Markdown

Multi-instance

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et la version anglaise originale, la version anglaise prévaudra.
Afficher en Markdown

Exécutez Crew sur plusieurs hôtes distants — postes de développement, instances EC2, serveurs personnels — et pilotez-les tous depuis une seule passerelle hub. Multi-instance ouvre des tunnels SSH vers chaque instance distante, émet des jetons de tableau de bord de courte durée et intègre chaque tableau de bord distant dans une bande d'onglets. Les instances utilisées le plus récemment restent actives; les autres se reconnectent à la demande.

Activation volontaire. Désactivé par défaut.

L'activer

bash
kirocrew config set instances.enabled true kirocrew restart

Une fois activée, la passerelle :

  1. Crée le registre des instances + SshTunnelManager
  2. Applique un assouplissement de la CSP frame-src aux ports de tunnel loopback actifs (afin que les tableaux de bord distants intégrés puissent s'afficher — ils sont sinon bloqués par le strict frame-src 'self' blob:)

Lorsque l'indicateur est désactivé, /api/instances/* renvoie 403 et la page /instances affiche une invitation à l'activation.

Fonctionnement

┌── Hub gateway (this host) ──┐ │ /instances page (React) │ │ ├─ tab strip: Home · A · B │ │ ├─ warm <iframe>s per tab │ http://127.0.0.1:<local_port>/?token=… │ └─ Manage panel │ add / connect / diagnose / restart / remove │ │ │ instances/ package │ │ ├─ registry │ ~/.kiro/crew/instances.json │ ├─ port_allocator │ loopback ports from base 7778 │ ├─ token_mint │ ssh <host> kirocrew token → JWT (never logged) │ ├─ ssh_tunnel_manager │ supervised ssh -N -L, probe, self-heal, refresh │ └─ diagnostics │ ssh → remote-dashboard → local-forward ladder └──────────────────────────────┘ │ ssh -N -L 127.0.0.1:<local>:127.0.0.1:<remote> ▼ ┌── Remote gateway ────────────┐ │ kirocrew gateway bound to │ │ 127.0.0.1:<remote_port> │ └──────────────────────────────┘

Chaque instance que vous ajoutez produit un processus enfant supervisé ssh -N -L. Le tunnel transfère 127.0.0.1:<local> → distant 127.0.0.1:<remote>. Le hub émet un jeton de tableau de bord sur l'instance distante via SSH et intègre le tableau de bord distant dans un iframe à l'URL loopback.

Le cycle de vie

  1. Connexion — POST /api/instances/{id}/connect alloue un port loopback, émet un jeton sur l'instance distante via SSH, démarre ssh -N -L, attend que le transfert local accepte une connexion, puis renvoie l'état en direct
  2. Ensemble actif — jusqu'à warm_set_cap (5 par défaut) instances les plus récemment utilisées restent actives avec un tunnel + WebSocket en direct. Se connecter au-delà de la limite évince paresseusement la moins récemment utilisée
  3. Sonde de santé — pendant la connexion, une sonde interroge le transfert loopback toutes les 30 s; après 3 échecs consécutifs, elle arrête le processus enfant pour déclencher la récupération
  4. Autoréparation à 2 niveaux — en cas d'arrêt inattendu : le niveau 1 reconstruit le tunnel en réutilisant le jeton existant; le niveau 2 réémet le jeton puis reconstruit. Limité à 8 tentatives avec un délai exponentiel plafonné (fenêtre d'environ 2 min)
  5. Renouvellement proactif du jeton — une boucle par instance réémet le jeton à 0,8 de sa durée de vie (TTL), avant le plafond d'environ 20 h
  6. Diagnostic / redémarrage — ?diagnose=1 exécute une série de sondes de défaillance à la demande; POST .../restart redémarre la passerelle distante via SSH

Ajouter une instance

Ouvrez Instances dans le tableau de bord, cliquez sur Add, puis remplissez :

ChampDescription
NameN'importe quelle étiquette (p. ex. « Dev box 1 »)
SSH host / aliasCe que vous taperiez après ssh — voir ci-dessous
Remote portPort de la passerelle distante (par défaut 7777)
Token TTLPar défaut 20 h

Le champ ssh_host accepte :

  • Un nom d'hôte ou un FQDN (dev-1.example.com)
  • Un utilisateur + hôte (ec2-user@10.0.1.5)
  • Un alias de configuration SSH (my-ec2)

Toute option commençant par - est rejetée (protection contre l'injection).

Types d'hôtes distants

Le seul paramètre propre à chaque instance distante est ssh_host. Tout ce que ssh peut atteindre de manière non interactive fonctionne.

Poste de développement / serveur personnel

Utilisez votre alias de configuration SSH ou user@hostname. Tant qu'une clé de votre ssh-agent couvre l'authentification, BatchMode réussit sans invite.

EC2 et autres hôtes basés sur des clés

Configurez un alias SSH dans ~/.ssh/config sur le hub, puis référencez l'alias :

Host my-ec2 HostName ec2-1-2-3-4.compute-1.amazonaws.com User ec2-user IdentityFile ~/.ssh/my-key.pem # Optional: reach a private instance through a bastion ProxyJump bastion-host # Or via SSM Session Manager: # ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p"

Ajoutez ensuite une instance avec my-ec2 comme hôte SSH.

Prérequis sur le hub :

  • Une clé sans phrase de passe ou un ssh-agent la détenant (BatchMode ne demandera pas d'invite)
  • kirocrew installé et une passerelle en cours d'exécution sur le port loopback de l'instance EC2

Ce qui est pris en charge

BesoinÉtatComment
Utilisateur de connexion personnalisé✅user@host ou User dans la configuration ssh
FQDN / IP✅valeur directe de ssh_host
Fichier d'identité (-i)⚠️ via la configuration ssh seulementIdentityFile dans un bloc Host
Port SSH autre que 22⚠️ via la configuration ssh seulementPort dans un bloc Host
Bastion / ProxyJump⚠️ via la configuration ssh seulementProxyJump / ProxyCommand
Instances SSM uniquement⚠️ via la configuration ssh seulementProxyCommand avec aws ssm start-session

Gestion des instances

Le panneau Manage vous offre les actions suivantes par instance :

  • Connect — ouvrir un tunnel + iframe
  • Disconnect — fermer le tunnel
  • Diagnose — exécuter la série de sondes de défaillance et signaler le premier lien rompu
  • Restart — redémarrer la passerelle distante via SSH (avec prise en compte du service)
  • Edit — modifier le nom / l'hôte / le port / le TTL
  • Remove — déconnecter puis supprimer

Modèle de sécurité

Chaque route de /api/instances/* est protégée par _guard() :

  • Refus par défaut — rejette les requêtes provenant de Slack (403)
  • Réservé au propriétaire — exige request["user"] (session de tableau de bord authentifiée)
  • Contrôlé par fonctionnalité — exige instances.enabled: true
  • Audité par SEL — chaque appel (réussite et refus) émet un événement d'audit

Au-delà de la protection :

  • Transferts loopback uniquement — ssh -N -L 127.0.0.1:<local>:127.0.0.1:<remote>
  • Aucun shell local — ssh est toujours invoqué avec une liste argv; ssh_host ne peut pas injecter de syntaxe shell locale
  • Entrées validées par jeu de caractères — ssh_host et remote_bin sont rejetés s'ils contiennent des métacaractères shell ou commencent par -
  • Jetons de courte durée — ≤20 h, renvoyés uniquement en mémoire à l'appelant, jamais journalisés, jamais dans les charges utiles de liste/état
  • Vérification de l'origine postMessage — le parent valide chaque event.origin de trame intégrée par rapport à l'exact http://127.0.0.1:<port> d'un tunnel actuellement actif avant de faire confiance à un message de compte de non-lus

Configuration

Sous instances.* :

CléPar défautSignification
instances.enabledfalseActivation principale
instances.warm_set_cap5Nombre maximal d'instances maintenues actives à la fois
instances.tunnel_base_port7778Premier port loopback local pour ssh -L
instances.max_recovery_attempts8Tentatives d'autoréparation consécutives avant abandon
instances.recover_backoff_max_secs30Plafond du délai exponentiel entre les tentatives d'autoréparation
instances.probe_failure_threshold3Échecs de sonde consécutifs avant de déclencher la récupération

Dépannage

SymptômeSolution
/instances affiche « multi-instance management is off »instances.enabled est à false — activez-le et redémarrez
L'iframe est videL'assouplissement de la CSP frame-src ne s'applique qu'aux ports de tunnel actifs; assurez-vous que l'instance est connectée
La connexion échoue avec une erreur d'authentification SSHActualisez vos identifiants SSH (rajoutez la clé à ssh-agent); les tunnels s'autoréparent une fois SSH rétabli
La connexion échoueUtilisez Diagnose — la série de sondes signale le premier lien rompu (ssh_unreachable, remote_down ou tunnel_down)
L'instance se déconnecte constammentSonde de santé + nouvelle tentative d'autoréparation à 2 niveaux sur environ 2 min; si elle abandonne, le diagnostic s'exécute automatiquement. Vérifiez la passerelle distante et la stabilité SSH
Une instance a disparu silencieusement de l'ensemble actifÉvincée par LRU (ensemble actif plein). Augmentez instances.warm_set_cap ou reconnectez-vous à la demande
Page mise à jour : 11 août 2026
Artéfacts
Task Runner