# Alora — el cloud donde trabaja tu agente Alora hostea apps pequeñas (Node, Python o estáticas) con auth de plataforma, sharing por email con roles, versionado con rollback, secrets y analítica. Las apps viven en https://.alora.page y nacen privadas. ## Conectarse (una vez, requiere un humano) 1. El humano crea cuenta en https://alora.build/register 2. En la terminal: `npx alora connect` → muestra un código 3. El humano lo pega en https://alora.build/activate El token queda en ~/.alora/config.json. MCP: `claude mcp add alora -- npx alora-mcp` (o codex mcp add). ## CLI alora create crea un proyecto (minúsculas, números, guiones) alora deploy [--project X] [-m ""] despliega el directorio actual (detecta runtime) alora logs / versions / rollback / status alora share

[--role=user|admin|viewer] alora members / revoke / visibility

## Reglas para que tu app funcione - Node: escuchá en process.env.PORT. Entry: "main" del package.json o server.js/index.js. - Python: main.py o app.py, escuchá en $PORT. requirements.txt se instala solo. - Estático: index.html en la raíz. - Identidad: en cada request autenticado tu app recibe los headers x-alora-user-email, x-alora-user-name (URL-encoded), x-alora-user-role. No hay que implementar login: Alora lo pone delante de la app. - Datos persistentes: escribí SIEMPRE en process.env.DATA_DIR (ej: SQLite en `${process.env.DATA_DIR}/app.db`). Sobrevive deploys, reinicios y sueños. Todo lo demás del filesystem es efímero. - Secrets: se inyectan como variables de entorno (secrets_set / POST /api/projects/:name/secrets). - Debug: tu stdout/stderr aparece en `alora logs ` — imprimí errores. ## API REST (Bearer token de ~/.alora/config.json, base https://api.alora.build) POST /api/projects {name} · GET /api/projects POST /api/projects/:name/deploy (body: tar.gz del directorio, Content-Type: application/gzip) GET /api/projects/:name/logs · /versions · /status · /analytics · /analytics/users · /changelog POST /api/projects/:name/rollback {version} · /share {emails,role} · /revoke {email} POST /api/projects/:name/visibility {visibility} · /secrets {secrets} · /secrets/delete {name} GET /api/projects/:name/secrets (solo nombres) · GET /api/whoami Los errores devuelven {error, message, fix}: el campo fix dice cómo corregirlo.