DocumentaciónCódigo
Disponible desde el plan Builder

Línea de comandos y claves

Lleva la definición de tu proyecto al disco, ejecuta la app en tu máquina y publícala de vuelta sin salir de la terminal.

Coste en créditos: ningún paso de esta guía consume crédito de IA.

La línea de comandos de Fabapp es el mismo proyecto que construyes en Studio, visto desde otro lugar. No es un producto aparte ni una app distinta: pull trae los archivos de definición a tu carpeta, push devuelve lo que editaste y dev ejecuta la app localmente sobre la misma plantilla que la plataforma usa para publicar.

Viene junto con el servidor MCP, que es como Claude Code, Cursor y otros asistentes leen y escriben en tu proyecto.

Lo que necesitas

  • Node 20 o más reciente. Compruébalo con node --version.
  • El plan Builder o superior. La línea de comandos se habilita a partir de Builder. Si tu plan todavía no lo incluye, la pantalla de Claves y CLI muestra qué cambia y te lleva directo a la suscripción.

Nada más. La herramienta no tiene una sola dependencia: guarda una credencial y habla con tu cuenta, y cada paquete del grafo podría alcanzar ambas cosas.

Autorizar esta máquina

Nunca creas una clave a mano. Quien la crea es el comando de inicio de sesión:

npx @fabappai/cli login

Abre el navegador en una página de Fabapp con un código corto. Compruebas que el código en pantalla es el mismo que apareció en la terminal, autorizas, y la máquina queda conectada. En un servidor o en CI, sin navegador, usa --no-open y abre la dirección tú mismo.

Esto es el flujo de dispositivo, y existe por una razón muy concreta: una clave que copias y pegas pasa por lugares por donde las claves no deberían pasar, como el historial del shell, un canal de chat o un archivo de configuración que termina en un repositorio. Aquí la clave nace dentro de tu máquina y nunca se muestra.

Dónde queda la credencial

En el llavero del sistema operativo. Cuando la máquina no tiene llavero, va a un archivo con permiso 0600, y el comando lo dice. Una herramienta que elige en silencio el peor lugar te enseña que siempre es seguro.

Permiso de lectura o de escritura

Por defecto, el inicio de sesión pide lectura y escritura. Para una máquina que solo necesita consultar, pide menos:

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

Una credencial de solo lectura ni siquiera ve los comandos de escritura, ni en la terminal ni en el servidor MCP. Anunciar una operación que responderá 403 es peor que no anunciarla: el asistente lo intenta, falla e intenta otra vez con otros argumentos, porque el rechazo parece un problema con la petición y no con el permiso.

El primer proyecto en el disco

npx @fabappai/cli link <id-del-proyecto>
npx @fabappai/cli pull

link ata la carpeta actual a un proyecto, comprobando tu acceso antes de escribir nada. pull trae los archivos de definición: fab.schema.json (las entidades y sus campos), fab.automations.json, fab.settings.json, fab.connectors.json y el fab.config.json de cada pantalla.

Edita y devuélvelo:

npx @fabappai/cli push

Para ejecutar la app en tu máquina antes de publicar:

npx @fabappai/cli dev

Y para publicar lo que editaste:

npx @fabappai/cli deploy

Lo que no hace, a propósito

No borra. Ni en pull ni en deploy. Un archivo que desapareció de tu carpeta se informa, nunca se elimina de la app. Tu copia puede estar desactualizada respecto al servidor (la IA puede haber editado la app en Studio mientras tanto), y borrar allí por una ausencia aquí destruye trabajo que nadie nos pidió gestionar.

No sobrescribe lo que editaste. dev monta el espacio de trabajo una vez; en las ejecuciones siguientes compara y avisa cuando la plantilla cambió, en lugar de pasar por encima. Reconstruir es decisión tuya (--reset), y te avisa de que eso borra tus ediciones.

No envía lo que no es tuyo. deploy manda solo lo que cambiaste. Los componentes de la plataforma, el SDK y el esqueleto de la app se quedan donde están.

No guarda credenciales de integración. fab.connectors.json y fab.integrations.json son de solo lectura: dicen qué tiene conectado el proyecto, para que un asistente sepa que existe y qué operaciones llamar, y nunca la credencial. Conectar y rotar ocurre en la plataforma.

Usarla con Claude Code y otros asistentes

El servidor MCP usa la credencial que login ya guardó. Nunca pide un secreto y nunca muestra uno.

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

La herramienta más importante es fabapp_read_definition: sin el esquema a mano, un id de modelo equivocado responde 404 y un campo inventado responde 422. Es lo primero que un agente debería llamar.

Ver y revocar las máquinas conectadas

En el panel, abre Perfil y ve a Claves y CLI. La pantalla lista cada máquina autorizada con el nombre que informó, el permiso que recibió y cuándo se usó por última vez.

Revocar es inmediato y vale para todo el servidor: la máquina revocada deja de funcionar en su siguiente llamada, aunque la credencial siga en su disco. Lo contrario no es cierto: ejecutar logout en una máquina olvida la credencial allí, y sigue siendo válida en el servidor hasta que se revoque aquí. Cuando un portátil desaparece, es esta pantalla la que resuelve, no logout.

Cuando algo no funciona

"Tu plan no incluye la línea de comandos". El inicio de sesión solo emite credenciales a partir de Builder. La pantalla de Claves y CLI indica el plan necesario.

El código del navegador no coincide con el de la terminal. No autorices. Cierra la página y ejecuta login de nuevo: ambos códigos salen de la misma petición y solo difieren si estás mirando una autorización que no es tuya.

push se queja de un archivo que la app no puede sobrescribir. Dice cuál. Eso es mejor que guardar con un 200 y no cambiar nada.

Otra API. FABAPP_API_URL cambia la dirección base, que por defecto es https://api.fabapp.ai.

Abrir Fabapp
Relacionados
Conocer el StudioCréditos: qué los gasta y qué no