BUILD AND RUN
Deploy your app
Once your agent is connected, deploying is a sentence.
Builds
Your agent sends your code to Yeeted, which auto-detects the stack (Node/Next, Vite, React, Python, PHP, Ruby, Go, static sites; in beta: Angular, Vue, Svelte, Astro, Java without a Dockerfile, C#, and Composer-based PHP), builds it, and gives you back a live URL. Auto-detection uses a custom Dockerfile synthesizer for supported source layouts. Unrecognized source trees fail auto-detection; include your own Dockerfile to define the build.
A Vite or React project with its own server (a start script that runs a server file, or a server entry file plus a database driver, a port other than 80 or a required database in yeeted.yaml) builds as a Node server that also builds the frontend. A static site is served by nginx on port 80, so a yeeted.yaml port other than 80 fails its build with a message saying what to change, and a required database the site cannot use gets a warning in the build log.
Conventions: your app should listen on 0.0.0.0 and honor the
$PORT environment variable. Most frameworks do this out of the box. For supported source layouts,
no Dockerfile is needed; otherwise, include one. You can also supply one to take full control.
Preview, then production
// just tell your agent "Deploy my app to Yeeted." "Ship this to production." "Roll back to the last working version."
flowchart LR A["Deploy my app"] --> B[Build] B --> C[Preview URL
try it, share it] C -->|"ship to production"| D[Production
always-on, blue/green swap] D -->|"roll back"| E[Previous version]
Start with a development preview you can share, on every plan. When you're happy, ask your agent to
promote it to production (Small Business plan and up, after the beta) - the exact image you tested is shipped live under
the same yeeted.yaml (port, health check, env, and a production database if it requires one, provisioned
before the app starts; if that cannot be done the promote is refused and production is left alone). The swap is
blue/green, designed to keep the previous version serving until the new one passes its health check.
Swaps are not guaranteed to be downtime-free. Use status to watch readiness, then use
versions_list(project_id, service_type=production) to confirm the promoted revision is marked running now.
Probe the production URL if availability matters. Production is kept
always-on and restarted automatically if it ever crashes. Saying
“deploy to production” promotes your tested preview when a development image exists. If no development image exists,
deploy(service_type=production) builds production directly from the files sent.
Rollback
A git-hash or previous-image rollback restores a retained app image without automatically rolling back
database changes. A named production checkpoint with a captured database snapshot can also restore
supported production data except Redis on plans with snapshots if the restore succeeds. A production
rollback also moves the prod line of your code; see Version control.