# CLI

> Installez la CLI, connectez-vous avec une clé API et gérez tout depuis votre terminal.

Source: https://gheima.ma/fr/docs/cli

La CLI Gheima pilote votre compte depuis le terminal : déployer, suivre les logs, gérer les services, les bases de données et le stockage. Elle s’authentifie avec une clé API.

### Installer et se connecter

```bash
npm install -g @gheima/cli
gheima login
```

Ou sans installation : npx @gheima/cli <command>.

gheima login ouvre votre navigateur pour que vous approuviez la connexion, puis enregistre une nouvelle clé API dans le profil. Sur une machine sans navigateur, ajoutez --no-browser et ouvrez vous-même l’URL affichée. Depuis un script ou un agent de code, où rien ne peut attendre une saisie, lancez gheima login --no-wait --json : la commande affiche le code et l’URL à transmettre à la personne, puis se termine. gheima login --resume attend ensuite l’approbation et enregistre la clé (ajoutez --timeout <secondes> pour revenir plus tard ; la commande sort avec le code 7 tant que la connexion attend). Pour utiliser une clé existante, lancez gheima login --with-key et collez-la (elle commence par gh_). Les clés sont stockées par profil dans ~/.config/gheima/config.json, en mode 600. Pour vous passer de login, définissez la variable d’environnement GHEIMA_API_KEY.

> Note: L’authentification se résout dans cet ordre : l’option --key, puis GHEIMA_API_KEY, puis le profil stocké. Utilisez --profile <name> pour garder des clés séparées, par exemple travail et perso. gheima logout supprime un profil.

### Options globales

- `-k, --key <key>`: Clé API pour cet appel (prime sur la variable d’environnement et le profil).
- `-u, --url <url>`: URL de base de l’API (par défaut https://gheima.ma).
- `-p, --profile <name>`: Quel profil stocké utiliser.
- `--json`: Afficher du JSON exploitable plutôt qu’un tableau.
- `-v, --version`: Afficher la version de la CLI.

### Commandes du compte

- `gheima login`: Se connecter via le navigateur, ou avec une clé API existante, et stocker la clé dans un profil.
- `gheima logout`: Supprimer un profil stocké.
- `gheima whoami`: Afficher le compte de la clé active (nom, slug, plan, type).
- `gheima status`: Afficher le compte, le plan et le nombre de services et de bases de données.
- `gheima open [resource]`: Ouvrir le tableau de bord (ou un chemin) dans le navigateur.
- `gheima completion [shell]`: Imprimer un script de complétion pour bash, zsh ou fish.

### Commandes de service

Les commandes qui prennent un <service> acceptent son id, son nom ou son slug. Les commandes destructrices demandent confirmation, sauf si vous passez -y ou --yes. Dans un shell non interactif, elles refusent de s’exécuter sans cette option.

- `gheima services`: Lister les services. Équivaut à services list. Alias : service, svc.
- `gheima services get <id>`: Afficher un service en détail.
- `gheima services create --name <name> [--project <id>] [--type WEB|WORKER|STATIC] [--repo <url>]`: Créer un service. Le type par défaut est WEB. Sans --project, le service n’est rangé dans aucun projet.
- `gheima services delete <id> [-y]`: Supprimer un service.
- `gheima github wait [--repo <url>] [--timeout <minutes>]`: Afficher le lien pour installer l’application GitHub de Gheima sur le propriétaire de ce dépôt, et attendre qu’elle soit installée. Un dépôt GitHub privé en a besoin pour être construit ; sortie 7 si --timeout (10 minutes) expire avant.
- `gheima link <service>`: Lier ce répertoire à un service. Les commandes lancées ici, ou dans un sous-répertoire, utilisent alors ce service par défaut.
- `gheima agents [--write]`: Affiche une courte section pour AGENTS.md qui explique aux agents de code comment ce projet se déploie. --write l'ajoute au fichier en remplaçant une copie précédente.
- `gheima deploy [service] [--yes] [--upload] [--name <name>] [--type WEB|WORKER|STATIC] [--no-wait] [--timeout <minutes>]`: Déployer ce dossier, suivre le build et afficher l’URL en ligne. Sort avec 0 si le déploiement est en ligne, 8 s’il échoue. Utilise le service lié si vous l’omettez. Dans un dossier sans service, la commande en crée un et le lie (confirmez avec --yes sans terminal) : construit depuis le remote git s’il y en a un, sinon depuis les fichiers du dossier, envoyés sans les fichiers .env ni node_modules. --upload envoie les fichiers même s’il y a un remote.
- `gheima logs <service> [-f] [-b] [-s <text>]`: Afficher ou suivre les logs. -f suit, -b affiche les logs de build, -s filtre par texte.
- `gheima run <service> [--timeout <seconds>] [--no-wait] -- <command>`: Exécuter une commande ponctuelle, comme une migration, dans un nouveau conteneur à partir de l’image en ligne du service et de son environnement. Affiche son log et sort avec le code de sortie de la commande, ou 9 si elle n’en a renvoyé aucun. Réservé aux administrateurs. Les mots sont joints puis exécutés par le shell distant : mettez toute la commande entre guillemets quand un argument contient des espaces, par exemple gheima run web -- 'psql -c "select 1"'.
- `gheima env ls [service]`: Lister les clés de variables avec valeurs masquées.
- `gheima env pull [service] [--file <path>] [-f] [--stdout]`: Écrire les valeurs des variables du service en clair dans .env.local (mode 0600). Les variables secrètes ne peuvent pas être relues et sont omises.
- `gheima env push [service] [--file <path>] [--replace] [-y]`: Envoyer un fichier .env au service. Fusionne par défaut ; --replace supprime les variables absentes du fichier.
- `gheima env set <service> KEY=value`: Définir une variable d’environnement.
- `gheima env rm <service> <key> [-y]`: Supprimer une variable d’environnement.
- `gheima domains <service>`: Lister les domaines personnalisés d’un service.

### Commandes de ressources

- `gheima db`: Lister les bases de données. Alias : databases.
- `gheima storage buckets`: Lister les buckets de stockage objet.
- `gheima storage ls <bucket> [prefix]`: Lister les objets d’un bucket.
- `gheima storage cp <file> <bucket> [key]`: Téléverser un fichier local via une URL présignée.
- `gheima storage get <bucket> <key> [dest]`: Télécharger un objet.
- `gheima storage rm <bucket> <key> [-y]`: Supprimer un objet.
- `gheima cron`: Lister les tâches cron.
- `gheima webhooks`: Lister les webhooks.

```bash
gheima services create --name web --type WEB --repo https://github.com/me/app
gheima deploy web
gheima logs web -f -s error
gheima env set web NODE_ENV=production
gheima storage cp ./photo.png my-bucket images/photo.png
gheima services --json | jq '.[].url'
```

Une session typique. Ajoutez --json à n’importe quelle commande pour une sortie structurée.

> Result: La CLI couvre toutes les opérations de l’API : scriptez déploiements, logs et ressources depuis votre shell.

---

All docs: https://gheima.ma/fr/docs.md
