Utilisation
La CLI communique avec l'application via un canal nommé propre à l'utilisateur (un socket de domaine Unix sous Linux/macOS). Si l'application n'est pas lancée, ambih start la démarre en mode barre des tâches et attend l'apparition du canal. Chaque commande accepte --json pour passer d'une sortie lisible à du JSON ligne par ligne, pour les agents et la CI.
$ambih <commande> [options]
ambih start
Lance le projet ancré au répertoire courant et renvoie sa sortie dans votre terminal. La commande de lancement peut être passée en position (ambih start "npm run dev") ou via --cmd. Si un projet est déjà enregistré pour ce répertoire, la commande sauvegardée est utilisée ; en passer une nouvelle la met à jour. Sinon, un projet est auto-enregistré avec le nom du dossier (modifiable via --name). Ctrl+C arrête le projet — le terminal qui l'a lancé possède son cycle de vie. Si le projet est déjà en cours, la CLI propose de suivre la sortie existante ; forcez le choix avec --attach ou --no-attach.
Synopsis
ambih start ["COMMANDE"] [--name NOM] [--attach | --no-attach] [--json]
Options
--name NOM
Nom à utiliser lors de l'auto-enregistrement d'un nouveau projet.
--cmd "…"
Commande de lancement, à la place de la position.
--attach
Toujours suivre un projet déjà en cours, sans demander.
--no-attach
Ne jamais suivre ; quitter avec 0 sans toucher la session.
--json
Diffuse session_started → log_line* → session_exited en NDJSON.
Exemple
$ambih start "npm run dev" --name web-app
ambih list
Affiche tous les projets enregistrés. Les projets en cours sont signalés.
Synopsis
ambih list | ls [--json]
Options
--json
Émet un objet JSON par projet (is_running, name, id, …).
Exemple
$ambih list --json | jq -r 'select(.is_running) | .name'
ambih status
État en direct + dernière session d'un projet. En cours : id de session, durée, branche git et le dernier échantillon de ressources à 1 Hz (CPU / mémoire / disque / réseau). À l'arrêt : la session persistée la plus récente avec son issue, sa durée, son code de sortie et ses stats agrégées.
Synopsis
ambih status <projet> [--json]
Options
--json
Émet l'état sous forme d'un unique objet JSON.
Exemple
$ambih status web-app
ambih history
Sessions récentes d'un projet, de la plus récente à la plus ancienne. Chaque ligne porte une issue (running | success | failed | stopped | orphaned), une durée, une branche git et des métriques agrégées. En mode JSON, les lignes sont diffusées une par une.
Synopsis
ambih history <projet> [--limit N] [--json]
Options
--limit N
Nombre de sessions à retourner. 10 par défaut ; borné à [1, 1000].
--json
Diffuse un objet JSON par session.
Exemple
$ambih history web-app --limit 20
ambih diff
Comparaison métrique par métrique entre deux sessions — comme git diff, mais pour la consommation de ressources. Les références de session sont des GUID complets ou des préfixes d'identifiant uniques d'au moins 8 caractères. Chaque ligne porte a, b, delta, delta_percent et une direction (up | down | unchanged | missing).
Synopsis
ambih diff <session-a> <session-b> [--json]
Options
--json
Diffuse un objet JSON par métrique, dans un ordre stable.
Exemple
$ambih diff a1b2c3d4 e5f6a7b8
ambih exec
Exécution unique d'une commande contre un projet déjà enregistré, avec surveillance complète (courbe de ressources, anomalies, code de sortie). Comme ambih start mais refuse si le projet est déjà en cours (discipline mono-instance) et enregistre la commande comme commande de lancement du projet.
Synopsis
ambih exec <projet> "<commande>" [--json]
Options
--json
Séquence d'événements identique à ambih start --json.
Exemple
$ambih exec web-app "npm run build" --json
ambih shell
Ouvre un shell interactif attaché à un pty dans le répertoire du projet. Le terminal passe en mode brut : flèches, complétion par tabulation, Ctrl+C et TUI plein écran (vim, htop, less) fonctionnent comme un shell local. Utilise le shell configuré du projet (pwsh sous Windows, zsh sous Mac, bash sous Linux). Refuse si le projet est déjà en cours. Quittez avec exit ou Ctrl+D. Pas de mode --json ; le shell est interactif par nature.
Synopsis
ambih shell <projet>
Exemple
$ambih shell web-app
ambih verify
Verdict CI pour une session selon un ensemble de contrôles. Sort avec 0 = succès, 1 = échec, 2 = non concluant — à enchaîner comme eslint --max-warnings 0. Sans --session, cible la dernière session persistée. Tous les contrôles sont cumulatifs.
Synopsis
ambih verify <projet> [--session <id>] [--check …] [--max-* …] [--json]
Options
--session <id>
Cible une session précise au lieu de la dernière.
--check exit-code
La session est sortie avec le code 0.
--check no-anomalies
Aucune anomalie de niveau Warning+ dans la session.
--check regression
Le verdict de santé n'est pas Régression (dernière session seulement).
--max-memory <taille>
Mémoire de pointe sous un seuil. Accepte 512MB, 1.5GB, 1024K, 2048.
--max-cpu <pourcent>
CPU de pointe sous un seuil. Accepte 80, 80%, 12.5.
--max-duration <durée>
Durée totale sous un seuil. Accepte 30s, 5m, 1h, 1500ms.
Exemple
$ambih verify web-app --check exit-code --check no-anomalies \ --max-memory 512MB --max-duration 5m
ambih stop
Arrête la session en cours d'un projet. Le projet reste enregistré.
Synopsis
ambih stop <projet>
Exemple
$ambih stop web-app
ambih delete
Supprime un projet. Une session en cours est arrêtée au préalable.
Synopsis
ambih delete | rm <projet>
Exemple
$ambih rm web-app
ambih ping
Sonde de présence — réussit lorsqu'une instance de l'application Ambih écoute sur le canal IPC de l'utilisateur.
Synopsis
ambih ping [--json]
Options
--json
Émet le résultat de la sonde en JSON.
Exemple
$ambih ping
ambih help
Affiche l'aide intégrée, ou la version de la CLI avec --version / -v.
Synopsis
ambih help | --help | -h ambih --version | -v
Exemple
$ambih --version
Références de projet
Toute commande prenant un <projet> accepte un GUID complet, le nom exact du projet, un préfixe d'identifiant unique, ou un nom insensible à la casse. Les références de session (utilisées par diff et verify --session) acceptent un GUID complet ou un préfixe d'identifiant unique d'au moins 8 caractères — les mêmes préfixes qu'affiche ambih history.
Sortie JSON
Passez --json pour basculer une commande en JSON ligne par ligne (NDJSON) sur stdout. Chaque ligne est un événement structuré avec un discriminant event, un champ schema_version et un horodatage UTC — à passer dans jq ou tout analyseur de flux. Les erreurs antérieures au flux (p. ex. application non lancée) s'affichent en texte brut sur stderr et sortent en non-zéro ; le contrat JSON ne couvre que les événements émis après un démarrage réussi.
$ambih start "npm test" --json | jq -c 'select(.event == "anomaly")'
Environnement
La CLI communique avec l'application via un canal nommé propre à l'utilisateur (un socket de domaine Unix sous Linux/macOS) ; elle n'ouvre donc aucun port réseau. Si l'application n'est pas lancée, ambih start la démarre en mode barre des tâches et attend le canal avant de diffuser. Installez ou mettez à jour la CLI depuis Paramètres → CLI dans l'application, ce qui ajoute le dossier d'installation au PATH de l'utilisateur.