Deploying a website
Take a site from your project to a live URL — and connect your own domain — in a few minutes.
Machine can deploy a website straight from your project: it builds your source, ships it to Vercel, and gives you a live URL. This guide walks the whole path, including connecting a custom domain.
For the manifest file itself, see the Manifest reference. To publish a folder from Machine Desktop instead, see Deployments.
Turn on Apps first
Website deploys are an experimental feature called Apps. Until it is on for the project, the Apps panel says "Apps is an experimental feature". A project manager switches it on under the project's Settings → Experimental.
Deploy your first app
Declare the app
Add an entry under apps in your project's manifest. At minimum, point it at
the source and tell it how to build. In kortix.yaml:
apps:
- slug: marketing
name: Marketing site
source:
type: git # deploy from this project's repo
branch: main
root_path: apps/site # the folder to build, if not the repo root
build:
command: pnpm build
out_dir: distA project on the older kortix.toml uses the same fields as an [[apps]]
table:
[[apps]]
slug = "marketing"
name = "Marketing site"
[apps.source]
type = "git"
branch = "main"
root_path = "apps/site"
[apps.build]
command = "pnpm build"
out_dir = "dist"Prefer the dashboard? Click Apps in the project sidebar, then Add app. The form writes the same entry to your manifest. Besides a Git repository, it can deploy a Folder in a session (a folder an agent built in a session's sandbox) or a Prebuilt tarball.
Deploy
Save the manifest. Machine checks every project's apps continuously and deploys a new or changed entry automatically, usually within seconds — or click Deploy on the app's card in the Apps panel to ship it now.
The status moves through building → deploying → active. If a build
fails, the card shows the error, and Logs shows the build output.
Open your live URL
Once the deploy is active, the card shows a stable *.vercel.app URL. Click
it; your site is live. Share it as-is, or connect your own domain next.
Connect a custom domain
Add the domain
List the domains you own under domains, or type them into Domains in the
app's form, one per line:
apps:
- slug: marketing
domains:
- example.com
- www.example.comMachine attaches each domain to the deployment on the next deploy.
Point DNS at Vercel
Add the records at your DNS provider (the registrar or DNS host for the domain):
- Apex domains like
example.com→Arecords with Vercel's IP addresses. - Subdomains like
www.example.comordocs.example.com→ aCNAME, usuallycname.vercel-dns.com.
Your DNS provider's help pages explain where to add records.
Wait for it to verify
DNS changes can take anywhere from a minute to a few hours to propagate. Once the records resolve, the domain starts serving your site.
Domain not serving? That almost always means the DNS records haven't
propagated yet, or they don't exactly match what Vercel expects.
Double-check the type, name, and value, remove any conflicting old
A/CNAME records for the same name, and give it time.
Redeploy and roll forward
Apps redeploy automatically whenever their manifest entry changes — an edit to the build command, the domains, or an env var. To redeploy without changing anything, use Redeploy on the card. The current version keeps serving until the new build is ready. Stop takes an app offline; turning an entry off in the manifest does not stop a running deployment by itself.
Multiple apps
A project can declare as many apps as you need — a marketing site, a docs site, and a dashboard side by side, each with its own source, build, domains, and environment. They appear together in the Apps panel.
Environment variables aren't secret
Values under an app's env are stored in the manifest as plain text, in your
repository. Don't put passwords or API keys there. Project
secrets go to agents in sessions, not to app builds.
Related: Manifest reference · Deployments in Machine Desktop.
