Overview
How It Works
Each app runs on managed infrastructure, provisioned via the Naive API. When you create an app:- Managed hosting is provisioned in the Naive org (Next.js framework)
- For
fullstackapps, a managed backend is also provisioned (PostgreSQL, auth, storage, edge functions) - A production domain is assigned (e.g.,
naive-myapp-abc123.vercel.app) - The response includes a
templateblock — the GitHub clone command for the starter template. If the company has an agent container, a dedicated engineer agent is also provisioned with the template scaffolded into its workspace.
naive apps deploy uploads your local project directory when run on your own machine; inside agent containers it deploys the agent’s workspace.
The curated commands above cover the common path, and the vercel / supabase proxy commands cover everything else the underlying platforms support.
Typical Workflow (Direct)
Create App
Options
Deploy
node_modules, .next, .git) into a tarball and uploads it through the Naive API — max 30 MB gzipped. Inside an agent container, the agent’s workspace is deployed instead (auto-detected from the current directory). Returns the deployment ID and preview URL.
Options
Templates
Publish
Options
Secrets
Secrets are stored encrypted by Naive and synced to the app’s environment variables. Redeploy after changes for them to take effect.Options (set/delete/reveal)
NEXT_PUBLIC_APP_URL (all apps) and NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY (fullstack) are provisioned automatically.
Domains
Database (Fullstack Only)
*, ; and friends before
the CLI ever sees them.
Only available for apps created with --type fullstack. Queries run against the app’s managed PostgreSQL database with admin privileges via the backend management API. While the backend is still being provisioned the query returns job_not_ready (409) — poll naive apps show <id> until the backend link appears.
Direct Provider Access (Advanced)
Anything the underlying hosting REST API or backend management API supports can be called through the scoped proxies — Naive injects the credentials and restricts each call to the app’s own project:Options
The project ID / ref are shown by
naive apps show <id>. Deleting the underlying project through the proxies is blocked — use naive apps delete. See the hosting proxy and backend proxy references for full scoping rules.
Retry Provisioning
status: "noop" rather than an error — it is safe to retry.
Backend re-provisioning runs in the background: the response reports supabase: "provisioning" and the app is only usable once naive apps show <id> shows the backend link. See POST /v1/apps/:id/retry.