仙kisenon

CLI

Client de forme neonctl prêt à l'emploi pour la plateforme Kisenon.

keon est un client de forme neonctl prêt à l'emploi pour la plateforme Kisenon.

Installation sur macOS / Linux

curl -fsSL https://kisenon.com/install.sh | sh

Détecte votre plateforme, télécharge le binaire keon-<os>-<arch> correspondant, vérifie le sha256 par rapport à /dl/latest/manifest.json, et l'installe dans ~/.local/bin — ou dans /usr/local/bin si ce répertoire est accessible en écriture (par ex. en root). S'il n'est pas dans le PATH, le script l'ajoute à votre fichier rc de shell. Le script est en sh POSIX ; bash n'est pas requis.

Installation sur Windows

Le canal principal est winget :

winget install Seiraiyu.Keon

Ou exécutez directement le script d'installation :

irm https://kisenon.com/install.ps1 | iex

Il installe dans %LOCALAPPDATA%\keon et l'ajoute au PATH de votre utilisateur.

Variables d'environnement de l'installeur

Toutes les variables ne sont pas lues par les deux scripts — la colonne Scripts indique lesquelles. Avec curl | sh, définissez-les côté sh : curl -fsSL https://kisenon.com/install.sh | KEON_INSTALL_DIR=/opt/bin sh.

VariableScriptsDefault
KEON_INSTALL_VERSIONles deuxlatestÉpingle une version, par ex. v0.1.56.
KEON_INSTALL_DIRles deux~/.local/bin (sh), %LOCALAPPDATA%\keon (PowerShell)Répertoire d'installation. Désactive aussi le repli sur /usr/local/bin.
KEON_INSTALL_NO_PATHles deux—1 ignore la modification du PATH.
KEON_INSTALL_HOSTles deuxhttps://kisenon.comHôte de téléchargement. Doit être en https://.
KEON_CONFIG_DIRles deux~/.config/keonOù le fichier host est écrit. Sous Windows, KEON_HOST_FILE est prioritaire.
KEON_HOST_FILEinstall.ps1 uniquement~/.config/keon/hostChemin du fichier host.
KEON_API_URL_DEFAULTles deuxhttps://kisenon.comL'hôte d'API inscrit dans le fichier host à l'installation.
KEON_UNINSTALLles deuxnon défini1 supprime le binaire et le bloc PATH. Les identifiants sont conservés.
KEON_INSTALL_FORCEinstall.sh uniquementnon défini1 retélécharge même si la version installée correspond déjà. install.ps1 n'a aucun saut sur version identique — il retélécharge à chaque exécution, la variable n'aurait donc rien à forcer.

Première connexion

keon login
keon me

keon login exécute un flux OAuth en boucle locale — pas de collage de clés. Il démarre un écouteur local sur un port aléatoire, ouvre votre navigateur sur la page d'autorisation de la console, et attend la redirection. Après votre autorisation, la CLI échange le code à usage unique à POST /v1/cli/exchange contre une clé API à longue durée de vie préfixée par nsk_, restreinte à votre organisation active.

La clé est persistée dans ~/.config/keon/credentials.json avec le mode 0600. La CLI ne conserve que la clé résultante — jamais le code OAuth, l'état, ni aucun jeton de fournisseur. keon logout supprime le fichier et tente de révoquer la clé côté serveur (au mieux : en cas d'échec, il avertit et sort quand même avec 0) ; vous pouvez aussi la révoquer à tout moment depuis Settings → API keys. Voir Authentification pour le flux complet.

Sous Windows, le fichier est %USERPROFILE%\.config\keon\credentials.json ; le mode 0600 ne s'y applique pas, et le fichier porte l'ACL de votre profil — uniquement votre utilisateur, SYSTEM et Administrators.

Commandes courantes

keon projects list
keon branches list --project <id>
keon connection-string <branch> --project <id>

keon connection-string affiche l'URI directe brute (donc psql "$(keon connection-string main --project <id>)" fonctionne), quel que soit votre format de sortie par défaut. --pooled affiche l'URI du pooler et sort avec 1 et pooler_not_enabled si l'endpoint n'a pas de pooler. -o json renvoie {"connection_string": "…"}.

Supprimer un projet supprime aussi ses branches et endpoints — passez --cascade, sinon l'API renvoie 409 has_branches dès que le projet a une autre branche que main :

keon projects delete <id> --cascade

Le même drapeau --cascade s'applique à keon branches delete <id>.

keon status

keon status

Indique si la CLI dispose d'identifiants valides. La clé est validée auprès de /v1/auth/whoami, donc une clé révoquée ou expirée renvoie authenticated: false plutôt qu'un succès périmé. Le corps contient toujours .authenticated et latencyMs ; api_url, user et token_id sont remplis lorsqu'un identifiant stocké est utilisé.

C'est le code de sortie qu'un script doit tester :

Exit
0Authentifié — la clé a été validée auprès de /v1/auth/whoami.
1Non authentifié — aucun identifiant, ou cp a répondu 401/403.
2Indéterminé — connexion refusée, échec DNS, délai dépassé, ou un 5xx.

2 n'est délibérément pas 1 : un control plane injoignable ne prouve pas que votre identifiant est mauvais, et keon status && deploy.sh doit s'arrêter dans les deux cas. Lisez le code de sortie directement — passer keon status dans un pipe le remplace par celui du pipeline.

Flux de travail d'agent

keon couvre la surface sûre pour les agents, pas seulement les projets et branches :

  • keon sandbox — piloter des sandboxes d'agent : environnements de base de données éphémères capture-et-promotion pour les agents.
  • keon ledger — lire le registre de promotion et vérifier les attestations de capture/promotion.
  • keon ip-allow — gérer la liste d'autorisation d'IP d'un projet.

Les autres commandes de premier niveau incluent orgs, endpoints, databases, roles, snapshots, operations, usage et audit. Exécutez keon --help pour l'ensemble complet.

Format de sortie

Par défaut, c'est JSON. Pour des tableaux : keon config set output table, ou passez --output table par commande.

Installer la compétence Claude

keon install --skills

Dépose un SKILL.md + des docs de référence dans ./.claude/skills/keon/ afin qu'un agent Claude puisse piloter la CLI sans tour de configuration.

Dépannage

macOS : « developer cannot be verified »

N'arrive que lorsque le binaire a été téléchargé via un navigateur avec l'attribut Gatekeeper positionné — install.sh ne le positionne pas. Supprimez-le :

xattr -d com.apple.quarantine $(which keon)

Windows : avertissement SmartScreen

Cliquez sur « More info » → « Run anyway ». Une fois par machine. L'installation via winget install Seiraiyu.Keon évite l'invite. La réputation SmartScreen des builds Windows se construit avec le temps.

Windows : winget upgrade indique que le paquet « a été modifié »

winget upgrade Seiraiyu.Keon échoue avec Unable to remove Portable package as it has been modified si un keon update de la version 0.1.59 ou antérieure a remplacé le binaire installé par winget. winget a enregistré l'empreinte du fichier d'origine à l'installation et refuse d'écraser un fichier modifié. Contournez la vérification une fois :

winget upgrade Seiraiyu.Keon --force

Ensuite, winget list et keon --version concordent de nouveau. Le keon actuel refuse de se mettre à jour lui-même lorsqu'il est installé par winget, donc le problème ne se reproduit pas.

macOS : quel binaire est signé

Seul keon-macos-universal — celui que télécharge install.sh — est signé et notarié. Les binaires par architecture, keon-macos-arm64 et keon-macos-x64, ne le sont pas.

macOS : Gatekeeper a besoin d'un accès réseau pour valider

keon-macos-universal est notarisé, mais le ticket de notarisation ne peut pas être agrafé : stapler attache les tickets aux bundles et aux conteneurs (.app, .pkg, .dmg), pas à un exécutable Mach-O nu. Gatekeeper résout donc le ticket en ligne, et un Mac hors ligne ou qui bloque le service de notarisation d'Apple ne peut pas valider le téléchargement.

Cela n'affecte pas l'usage normal du CLI. La vérification de quarantaine de Gatekeeper passe par LaunchServices — un double-clic dans le Finder — et non par execve : un binaire lancé depuis un terminal n'est donc jamais bloqué, agrafé ou non. Les chemins curl et install.sh ne posent pas du tout l'attribut de quarantaine.

Signaler un bug

github.com/Seiraiyu/Kisenon/issues

CLI · Kisenon