Projects
A project is the unit of everything in OctopusLab: a name, a slug (which becomes a public subdomain), one conversation history with the AI, one isolated sandbox, and N deployments. Each project lives inside an organization and its teammates' access is controlled by org membership.
Lifecycle
- draft — created but the AI hasn't run yet. Possible if you POSTed via the API without a prompt.
- generating — the AI is actively scaffolding the code. Workspace shows live file changes + chat output.
- live — there is at least one Production deployment in the ready state.
- failed — the last generation or deploy errored. The project still exists; click Retry in the project overview to ask the AI to fix it.
Slug, subdomain & custom domains
The slug is your project's URL-safe identifier and is unique inside an org. It's used to build:
<slug>.octopus-lab.app— the production subdomain we issue automatically.- A signed Preview URL per Preview deployment, of the form
<slug>-<short-id>.octopus-lab.app.
Add a custom apex or subdomain in the Domains tab — OctopusLab verifies the CNAME / A record via Google DNS-over-HTTPS before flipping the green "live" dot. There is no guess work: if you see live, DNS is propagated.
Conversation & messages
Each project has one conversation. The first message is the prompt you typed on the dashboard composer (or POSTed via the API). Every follow-up — yours and the AI's — is appended. The conversation history is what the AI uses as context when you ask for a change, so be specific and reference earlier decisions ("undo the hero gradient I asked for two messages back").
Files & the sandbox
Code is generated into an ephemeral Firecracker sandbox (Vercel Sandbox SDK). The sandbox is per-project, not per-message — long-running iterations stay in the same microVM so file edits accumulate without re-uploading the whole tree. When you promote a deployment to production, the sandbox's last successful build is what we promote.
Deleting a project
Settings → Danger zone has a Delete button that cascades through every related row (messages, deployments, domains, sandboxes). It's not reversible — export anything you want to keep first.