DocumentationCode
Disponible à partir du plan Builder

Ligne de commande et clés

Amenez la définition de votre projet sur votre disque, lancez l'application sur votre machine et publiez-la sans quitter le terminal.

Coût en crédits : aucune étape de ce guide ne consomme de crédit d’IA.

La ligne de commande Fabapp, c'est le même projet que celui que vous construisez dans Studio, vu d'ailleurs. Ce n'est ni un produit à part ni une autre application : pull amène les fichiers de définition dans votre dossier, push renvoie ce que vous avez modifié, et dev exécute l'application en local sur le même gabarit que celui utilisé pour la publication.

Elle est livrée avec le serveur MCP, par lequel Claude Code, Cursor et d'autres assistants lisent et écrivent dans votre projet.

Ce qu'il vous faut

  • Node 20 ou plus récent. Vérifiez avec node --version.
  • Le plan Builder ou supérieur. La ligne de commande est ouverte à partir de Builder. Si votre plan ne l'inclut pas encore, l'écran Clés et CLI montre ce qui change et mène directement à l'abonnement.

Rien d'autre. L'outil n'a pas une seule dépendance : il détient une identification et parle à votre compte, et chaque paquet du graphe pourrait atteindre les deux.

Autoriser cette machine

Vous ne créez jamais de clé à la main. C'est la commande de connexion qui la crée :

npx @fabappai/cli login

Elle ouvre le navigateur sur une page Fabapp affichant un code court. Vous vérifiez que le code à l'écran est bien celui affiché dans le terminal, vous autorisez, et la machine est connectée. Sur un serveur ou en CI, sans navigateur, utilisez --no-open et ouvrez l'adresse vous-même.

C'est le flux d'appareil, et il existe pour une raison très concrète : une clé que l'on copie-colle passe par des endroits où une clé ne devrait pas passer, comme l'historique du shell, un canal de discussion ou un fichier de configuration qui finit dans un dépôt. Ici la clé naît à l'intérieur de votre machine et n'est jamais affichée.

Où vit l'identification

Dans le trousseau du système. Quand la machine n'en a pas, elle va dans un fichier en 0600, et la commande le dit. Un outil qui choisit silencieusement le moins bon endroit vous apprend que c'est toujours sûr.

Permission de lecture ou d'écriture

Par défaut, la connexion demande la lecture et l'écriture. Pour une machine qui n'a qu'à consulter, demandez moins :

npx @fabappai/cli login --scopes "read"

Une identification en lecture seule ne voit même pas les commandes d'écriture, ni dans le terminal ni dans le serveur MCP. Annoncer une opération qui répondra 403 est pire que de ne pas l'annoncer : l'assistant essaie, échoue et recommence avec d'autres arguments, parce que le refus ressemble à un problème de requête et non de permission.

Le premier projet sur le disque

npx @fabappai/cli link <id-du-projet>
npx @fabappai/cli pull

link rattache le dossier courant à un projet, en vérifiant votre accès avant d'écrire quoi que ce soit. pull récupère les fichiers de définition : fab.schema.json (les entités et leurs champs), fab.automations.json, fab.settings.json, fab.connectors.json et le fab.config.json de chaque écran.

Modifiez, puis renvoyez :

npx @fabappai/cli push

Pour lancer l'application sur votre machine avant de publier :

npx @fabappai/cli dev

Et pour publier ce que vous avez modifié :

npx @fabappai/cli deploy

Ce qu'elle ne fait pas, volontairement

Elle ne supprime pas. Ni dans pull ni dans deploy. Un fichier disparu de votre dossier est signalé, jamais retiré de l'application. Votre copie peut être en retard sur le serveur (l'IA a pu modifier l'application dans Studio entre-temps), et supprimer là-bas à cause d'une absence ici détruit un travail que personne ne nous a demandé de gérer.

Elle n'écrase pas ce que vous avez modifié. dev assemble l'espace de travail une fois ; ensuite il compare et vous prévient quand le gabarit a changé, au lieu de passer par-dessus. Reconstruire est votre décision (--reset), et il vous dit que cela efface vos modifications.

Elle n'envoie pas ce qui n'est pas à vous. deploy n'envoie que ce que vous avez changé. Les composants de la plateforme, le SDK et la coquille de l'application restent où ils sont.

Elle ne détient aucune identification d'intégration. fab.connectors.json et fab.integrations.json sont en lecture seule : ils disent ce que le projet a connecté, pour qu'un assistant sache que cela existe et quelles opérations appeler, et jamais l'identification elle-même. Connecter et renouveler se fait sur la plateforme.

L'utiliser avec Claude Code et d'autres assistants

Le serveur MCP utilise l'identification que login a déjà rangée. Il ne demande jamais de secret et n'en montre jamais.

{ "mcpServers": { "fabapp": { "command": "npx", "args": ["-y", "@fabappai/cli", "mcp"] } } }

L'outil qui compte le plus est fabapp_read_definition : sans le schéma sous la main, un mauvais identifiant de modèle répond 404 et un champ inventé répond 422. C'est la première chose qu'un agent devrait appeler.

Voir et révoquer les machines connectées

Dans le panneau, ouvrez Profil puis Clés et CLI. L'écran liste chaque machine autorisée avec le nom qu'elle a donné, la permission qu'elle a reçue et sa dernière utilisation.

La révocation est immédiate et vaut pour tout le serveur : la machine révoquée cesse de fonctionner dès l'appel suivant, même si l'identification est encore sur son disque. L'inverse n'est pas vrai : lancer logout sur une machine oublie l'identification , et elle reste valable sur le serveur jusqu'à sa révocation ici. Quand un portable disparaît, c'est cet écran qui règle la question, pas logout.

Quand quelque chose ne marche pas

« Votre plan n'inclut pas la ligne de commande. » La connexion n'émet d'identification qu'à partir de Builder. L'écran Clés et CLI indique le plan nécessaire.

Le code du navigateur ne correspond pas à celui du terminal. N'autorisez pas. Fermez la page et relancez login : les deux codes viennent de la même requête et ne diffèrent que si vous regardez une autorisation qui n'est pas la vôtre.

push se plaint d'un fichier que l'application ne peut pas écraser. Il dit lequel. C'est mieux que d'enregistrer avec un 200 sans rien changer.

Une autre API. FABAPP_API_URL change l'adresse de base, par défaut https://api.fabapp.ai.

Ouvrir Fabapp
À lire aussi
Découvrir le StudioCrédits : ce qui en consomme et ce qui n’en consomme pas