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
Interfaces
Applications
Créez votre première application
Référence du manifeste
Référence SDK / API
Publication et lignes directrices
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. Applications
  4. Référence du manifeste
Afficher en Markdown

Référence du manifeste

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

Le manifeste de l'application (app.json) déclare l'identité, les ressources et les exigences de votre application. Il se trouve à la racine du dépôt — ou dans un sous-répertoire si l'entrée du registre en spécifie un.

Champs requis

ChampTypeDescription
namestringIdentifiant unique, en kebab-case (p. ex. "oncall-watchtower")
versionstringVersion Semver (p. ex. "1.0.0")
displayNamestringNom lisible affiché dans l'App Store
descriptionstringCourte description de ce que fait l'application

Champs recommandés

ChampTypeDescription
authorstringNom de l'auteur ou de l'équipe
licensestringIdentifiant de licence
minCrewVersionstringVersion minimale requise de Gateway
tagsstring[]Étiquettes de découverte (p. ex. ["oncall", "monitoring"])
jobFamiliesstring[]Familles d'emplois auxquelles cette application s'applique

Ressources

ChampTypeDescription
agentsstring[]Chemins vers les fichiers JSON des agents (relatifs à la racine de l'application)
skillsstring[]Chemins vers les répertoires de Skills
sopsstring[]Chemins vers les fichiers SOP (procédure opérationnelle normalisée)
mcpServersobjectDéfinitions des serveurs MCP (même format que mcp.json)

Fiche de l'App Store

ChampTypeDescription
repostringNom du dépôt Git. Utilisé par le proxy blob pour servir les images
iconPathstringChemin vers l'icône de l'application (PNG, carrée, min 256×256)
screenshotsstring[]Chemins vers les captures d'écran (PNG/JPG, max 5)
highlightsstring[]Points forts affichés sur la page de détails (max 10)

Images héros

L'illustration héros s'affiche sur les lignes de liste Discover, la mise en vedette, les cartes de fonctionnalités et la bannière de la page de détails.

ChampObjectifTaille recommandée
heroImageHéros en thème clair1200×675 (16:9)
heroImageDarkVariante en thème sombre1200×675 (16:9)
heroImageDetail / heroImageDetailDarkBannière de la page de détails uniquement (préférée à heroImage pour cet usage)1200×288 (25:6)

Ordre de résolution sur chaque surface : illustration du thème actuel → celle du thème opposé → première capture d'écran → dégradé déterministe avec l'icône de l'application. L'absence d'image héros est gérée proprement.

La forme du chemin dépend de la distribution :

  • Applications intégrées — URL absolue servie sous /apps/{name}/ui/
  • Applications fédérées / de registre — relative au dépôt (ui/hero-light.svg); le registre la réécrit en URL de proxy blob

Planification

crons

json
{ "crons": [ { "name": "ticket-refresh", "every": 300, "message": "Check for new high-severity tickets" }, { "name": "daily-digest", "cron_expr": "0 9 * * 1-5", "message": "Generate daily digest", "agent": "digest-agent" } ] }
ChampDescription
nameIdentifiant de la tâche
everyIntervalle en secondes (s'exclut mutuellement avec cron_expr)
cron_exprExpression cron (s'exclut mutuellement avec every)
messageRequête envoyée à l'agent à chaque exécution
agentAgent à exécuter (optionnel, utilise l'agent par défaut si omis)
enabledPar défaut true. Doit être un booléen JSON. false enregistre la tâche cron en pause (visible, reprenable) — pour les tâches qui nécessitent d'abord une configuration par l'utilisateur
Info

Désactiver une application supprime ses tâches cron enregistrées; la réactiver les réenregistre à partir du manifeste. Une tâche cron livrée avec "enabled": false et reprise par la suite par un utilisateur sera remise en pause après un cycle de désactivation → réactivation.

UI frontend

ui

json
{ "ui": { "entry": "dist/index.mjs", "pages": [ { "route": "/apps/my-app", "label": "My App", "icon": "Shield", "entryPoint": "dist/page.mjs", "mountFunction": "mount" } ], "sidebar": { "section": "Apps", "order": 10 } } }
ChampPar défautDescription
ui.entryChemin vers le bundle ESM (relatif à la racine de l'application)
ui.pages[].routeChemin URL de la page
ui.pages[].labelÉtiquette dans la barre latérale
ui.pages[].iconNom d'icône Lucide (p. ex. "Shield", "Package")
ui.pages[].iconUrlChemin d'image d'icône personnalisée (relatif à ui/)
ui.pages[].entryPointBundle ESM par page (remplace ui.entry)
ui.pages[].mountFunction"mount"Nom de la fonction exportée dans le bundle ESM
ui.sidebar.section"Apps"Nom de la section dans la barre latérale
ui.sidebar.order10Ordre de tri dans la section

Backend

backend

json
{ "backend": { "entryPoint": "backend/server.py", "port": "auto", "healthCheck": "/health", "routes": "/api/apps/oncall-watchtower" } }
ChampPar défautDescription
backend.entryPointScript à exécuter (relatif à la racine de l'application), ou un chemin de module Python en notation pointée lancé via python -m
backend.port"auto"Numéro de port ou "auto" pour l'attribution automatique
backend.healthCheck"/health"Chemin du point de terminaison de vérification de santé
backend.routesChemin de route de base pour le backend
backend.type""Runtime : "python", "asgi", "node", "exec", ou "" (détection automatique à partir de entryPoint)

Les backends d'application sont accessibles via le proxy inverse de la gateway à /apps/{name}/api/{path}, ce qui évite les problèmes CORS pour les pages UI du tableau de bord.

Info

La détection automatique du lanceur shell lit le shebang du point d'entrée; un lanceur binaire compilé ne peut donc pas être détecté automatiquement — déclarez "type": "exec" explicitement dans ces cas. Les backends exec sont uniquement compatibles POSIX : sur Windows natif, le backend est refusé au démarrage avec une erreur consignée.

backend.hooks — points d'entrée Python intégrés à la gateway

Au lieu d'un processus backend autonome (ou en complément), enregistrez des points d'entrée Python qui s'exécutent à l'intérieur du processus de la gateway :

json
{ "backend": { "hooks": { "routes": "backend.routes:register_routes", "on_startup": "backend.hooks:on_startup", "on_shutdown": "backend.hooks:on_shutdown" } } }
ChampDescription
backend.hooks.routesEnregistre des gestionnaires dans le RouteRegistry interne de la gateway
backend.hooks.on_startupInvoqué lorsque les hooks de l'application sont branchés
backend.hooks.on_shutdownInvoqué lorsque l'application est désactivée

Les hooks sont branchés à l'activation de l'application (via on_app_enable, également réexécuté au démarrage de la gateway) — aucun redémarrage de la gateway n'est requis.

Permissions

json
{ "permissions": { "api": ["/api/crons", "/api/status", "/api/agents"], "events": ["notification", "slots"], "mcpTools": ["cron_add", "cron_list"], "storage": true, "cron": true, "memory": "app-scoped", "network": false } }
ChampTypeDescription
permissions.apistring[]Préfixes de chemins API autorisés (appliqué actuellement)
permissions.eventsstring[]Types d'événements WebSocket autorisés
permissions.mcpToolsstring[]Noms d'outils MCP autorisés
permissions.storagebooleanPeut utiliser le stockage propre à l'application
permissions.cronbooleanPeut créer des tâches cron
permissions.memorystringAccès à la mémoire : "", "app-scoped", ou "shared"
permissions.networkbooleanPeut effectuer des requêtes réseau externes
Info

À titre indicatif aujourd'hui, pas entièrement appliqué. Seul permissions.api est appliqué actuellement (via la vérification de portée du jeton d'application — refus par défaut pour les chemins hors portée). Les autres champs sont des marqueurs déclaratifs; leur application est prévue sur la feuille de route. Concevez de façon prudente — ne déclarez que ce que vous utilisez.

Hooks de cycle de vie

setup

json
{ "setup": { "onInstall": "cd ui && npm install && npm run build", "onUninstall": "echo cleanup done", "onUpdate": "cd ui && npm install && npm run build", "onEnable": "echo enabled", "onDisable": "echo disabled", "configSchema": {} } }
ChampPar défautDescription
setup.onInstall""Commande shell exécutée après l'installation
setup.onUninstall""Commande shell exécutée avant la désinstallation
setup.onUpdate""Commande shell exécutée après la mise à jour
setup.onEnable""Commande shell exécutée à l'activation de l'application
setup.onDisable""Commande shell exécutée à la désactivation de l'application
setup.onEnableTimeout30Délai d'expiration en secondes pour onEnable
setup.onDisableTimeout30Délai d'expiration en secondes pour onDisable
setup.configSchema{}Schéma JSON pour la configuration de l'application

Les scripts s'exécutent avec set -euo pipefail imposé par Crew. Les variables non définies et les échecs de pipe entraînent une sortie immédiate — aucune erreur silencieuse.

Limites de délai d'expiration : onInstall / onUpdate = 300 s, onUninstall = 120 s, onEnable / onDisable = configurable (30 s par défaut).

Si onEnable échoue, l'activation est annulée — l'application reste désactivée et toute ressource enregistrée est désenregistrée. Les échecs de onDisable sont consignés comme avertissements mais ne bloquent pas la désactivation.

onUninstall reçoit KEEP_DATA=1 ou KEEP_DATA=0 dans l'environnement — si l'utilisateur a choisi « Conserver les données de l'application », le script doit éviter de supprimer les répertoires de données utilisateur.

Dépendances

json
{ "dependencies": { "managedBy": "gateway", "capabilities": { "mcp": [ { "id": "some-mcp-server", "source": "registry" } ], "skills": [ { "id": "some-skill", "source": "registry" } ] }, "commands": ["jq", "node", "python3"] } }
ChampPar défautDescription
dependencies.managedBy"gateway"Qui gère le cycle de vie des dépendances : "gateway" ou "app"
dependencies.capabilities.mcp[]Dépendances requises envers des serveurs MCP
dependencies.capabilities.skills[]Dépendances requises envers des Skills
dependencies.capabilities.agents[]Déprécié pour managedBy: "gateway" — toujours signalé comme non résolu
dependencies.commands[]Commandes système qui doivent être sur le PATH (vérifiées via which)
Info

L'édition open source ne fournit aucun gestionnaire de capacités, donc les entrées capabilities sont signalées comme non résolues — l'application s'installe malgré tout, mais les entrées apparaissent dans la liste failed du résultat d'installation. Concevez pour une dégradation harmonieuse.

Les dépendances sont suivies dans un registre à comptage de références. À la désinstallation, Crew indique quelles dépendances peuvent être supprimées en toute sécurité par rapport à celles partagées avec d'autres applications.

Cycle de vie et gestion des ressources

ChampPar défautDescription
lifecycle"gateway""gateway" (géré), "app" (autogéré), ou "locked" (ne peut être désinstallé)
resources"gateway""gateway" (Crew enregistre les agents/Skills/MCP) ou "app" (l'application gère les siennes)

Plateforme

json
{ "platform": { "os": ["macos", "linux"], "arch": [], "installMode": "server", "clientInstall": { "shell": "curl -fsSL https://example.com/install.sh | bash", "postInstall": "open ~/Applications/MyApp.app" } } }
ChampPar défautDescription
platform.os["macos", "linux"]Plateformes prises en charge
platform.arch[] (toutes)Architectures prises en charge
platform.installMode"server""server" ou "client"
platform.clientInstall.shellCommande unique pour l'installation locale
platform.clientInstall.postInstallCommande à exécuter après l'installation

Lorsque installMode: "client", l'App Store affiche des instructions de terminal à copier-coller au lieu d'exécuter l'installation sur le serveur. À utiliser pour les applications qui doivent s'exécuter sur la machine locale de l'utilisateur (p. ex. les applications Electron lorsque Crew s'exécute sur un hôte distant).

Commande d'ouverture

json
{ "openCommand": "open ~/Applications/MyApp.app" }

Pour les applications qui s'exécutent hors du tableau de bord, openCommand déclare comment les lancer. POST /api/apps/{name}/open l'exécute en arrière-plan. Dans un environnement distant sans interface, le point de terminaison retourne plutôt la commande à exécuter localement.

Règles de validation

Appliquées au moment de l'installation :

  • name doit correspondre à /^[a-z0-9]+(?:-[a-z0-9]+)*$/ (kebab-case)
  • version doit correspondre au format semver (X.Y.Z)
  • Les chemins dans agents, skills, sops, ui.entry, ui.pages[].entryPoint, backend.entryPoint doivent être relatifs et rester à l'intérieur de la racine de l'application (les chemins absolus et la traversée .. sont rejetés via une résolution canonique et une vérification de confinement)
  • backend.hooks.* sont vérifiés au niveau du format (module.path:callable, aucune traversée exprimable) et vérifiés en confinement au chargement
  • Les entrées mcpServers utilisent command / args / url / env — et non des chemins de fichiers relatifs à l'application — et ne sont pas vérifiées quant au chemin
  • Tous les champs requis doivent être des chaînes non vides
  • Chaque entrée cron doit spécifier soit every, soit cron_expr
  • Chaque page UI doit avoir un route et un label

Compatibilité ascendante

Les champs inconnus dans app.json sont préservés lors de l'analyse et retransmis intégralement via to_dict() / to_json(). Les nouvelles fonctionnalités du manifeste peuvent coexister avec des versions plus anciennes de Crew sans compromettre la validation.

Exemple complet

json
{ "name": "oncall-watchtower", "version": "1.0.0", "displayName": "Oncall Watchtower", "description": "Monitor tickets, pipelines, and alarms for your on-call rotation", "author": "kirocrew", "tags": ["oncall", "monitoring"], "agents": ["agents/ticket-analyst.json"], "skills": ["skills/oncall-runbook"], "crons": [ { "name": "ticket-refresh", "every": 300, "message": "Check for new high-severity tickets" } ], "ui": { "entry": "dist/index.mjs", "pages": [ { "route": "/apps/oncall-watchtower", "label": "Oncall", "icon": "Shield" } ] }, "permissions": { "api": ["/api/crons", "/api/status"], "events": ["notification"] }, "platform": { "os": ["macos", "linux"] } }
Page mise à jour : 11 août 2026
Créez votre première application
Référence SDK / API