Projects and deployments
Projects
A project ties a repository to builds and deployments, with its own settings, environment variables, domains and storage.
Create a project
Cloud → Overview → New project (needs projects:write):
| Field | |
|---|---|
| Repository | The repository to deploy, or Connect later. |
| Name | Shown across Cloud. Up to 64 characters. |
| Slug | Lowercase letters, numbers and dashes, 2 to 40 characters, unique in the organization. Part of every hostname the project gets. |
| Framework preset | Next.js, Static or Node.js. |
| Location | Where server functions run. Defaults to the registry's default location. |
| Root directory | The folder with the app, for monorepos. Defaults to the repository root. |
Your first project walks through it.
Project pages
| Tab | |
|---|---|
| Overview | The production deployment (hostname, commit, build duration, location, server function), its domains, Instant rollback, and recent deployments. |
| Deployments | Every deployment, filterable by environment, status and branch (deployments:read). |
| Analytics | The project's traffic (analytics:read). See Analytics. |
| Logs | Runtime and build logs (logs:read). See Logs. |
| Storage | Linked databases and buckets (resources:read). |
| Settings | The settings below. |
Settings
Changing settings needs projects:write. Build settings apply to the next deployment.
General
| Setting | Default | |
|---|---|---|
| Project name | Shown across Cloud. | |
| Framework preset | Next.js | How the project is built. See Frameworks. |
| Build command | detected | Static projects: replaces the detected build script. |
| Output directory | detected | Static projects: the folder to upload, relative to the root directory. |
| Install command | detected | Replaces the detected install for every framework, and runs in the root directory. |
| Root directory | . | The folder in the repository that contains the app. Builds run from here. |
Turn an override off to go back to detection. The Node.js version is the platform's (22), for builds and server functions. Project ID is the id the API and builds (PROJECT_ID) use.
Domains: the project's custom domains (domains:read).
Environment Variables: environment variables (env:read).
Git
- Connected repository: pushes to it deploy the project. Connect, change or disconnect it. A repository can be connected to several projects; one push then deploys each of them, for example two apps in a monorepo with different root directories.
- Production branch (default
main): pushes to it deploy to production and update your domains; other branches get previews. - Ignored build step: which pushes build, from the root directory's
si.jsonwatch. See Skipped pushes.
Functions: the Function region, the location server functions of new deployments run in. Existing deployments stay where they are. Every server function has 1,024 MB of memory, a 30-second timeout, arm64 and Node.js 22.
Cron Jobs: the crons the production deployment's si.json declares. See Crons.
Deployment Protection: production and preview URLs are public. Deployment hostnames are hard to guess but not secret, so protect sensitive routes in your app.
Advanced
- Project slug: changing it changes the production hostname and the hostnames of new deployments. The new production hostname serves right away and the old one stops.
- Transfer project: moves the project to another organization where you have
org:write(needed in both). Deployments, domains, environment variables (re-encrypted for the new organization) and crons move with it. The repository stays and is disconnected, linked databases and buckets must be unlinked first, and the target organization can't have a project with the same slug. - Delete project: removes the project with its deployments, server functions, domains (routes and certificates), environment variables and crons. Linked databases and buckets are unlinked, not deleted, and the repository is kept. Can't be undone.
Transfer and delete wait until no deployment is in progress.
Frameworks
| Framework | Build | Serves |
|---|---|---|
| Next.js | OpenNext (@opennextjs/aws 3) | A server function (Node.js 22, arm64) for dynamic routes, static files from the edge. |
| Static | Your build script, if any | Files only. |
| Node.js | Not yet | Listed in Cloud, but builds fail as unsupported. Coming soon |
See The build pipeline for what each build does.