Skip to content

Deploying an app

Terminal window
vibe deploy # current folder
vibe deploy ./shop --name shop # another folder, explicit name

A deploy uploads the folder, builds an image in the cluster, rolls it out and waits until the new version answers. Then the app is live at https://<name>.tja.nrw. The first deploy writes vibe.json with the name, so later deploys update the same app.

  • Listen on 0.0.0.0, not localhost or 127.0.0.1.
  • Listen on $PORT. It is 8080 unless you set a port. If your app can’t read PORT, tell VibeDeploy its port with --port 3000 or "port": 3000 in vibe.json.
  • Write state to a volume or a database. Files written inside the container are gone after the next deploy. See Storage and Databases.
  • Fit in 512 MiB of memory and half a CPU. More is not possible; a process that goes over the memory limit is killed (OOMKilled).

Without a Dockerfile, VibeDeploy picks the build from your files:

Detected by package.json. Runs on node:22-alpine.

  • A start script: installed and run as a server (npm start).
  • Only a build script: built once and served as a static single-page app from dist/, build/ or out/, with fallback to index.html for client-side routes.
  • npm, pnpm or yarn, chosen by the lockfile.

In a git repository: the tracked files plus new files that are not ignored. Outside git: the folder without the usual clutter. In both cases these are never uploaded:

  • .env, .env.local and every other .env* file (.env.example is fine)
  • node_modules, .git, .venv, __pycache__, .next
  • kubeconfigs and SSH private keys

Secrets go in through environment variables, never in the upload.

A new version replaces the old one only once it is running. If the new version crashes or never answers, the deploy fails and the previous version keeps serving. The error, a hint and the logs come back to the CLI or your agent, and the dashboard shows them in the app’s Health card.

Two deploys of the same team can build at the same time; more wait in a queue. See Limits.

Every deploy is recorded with its status, duration, the git commit and branch (* means uncommitted changes) and where it came from (CLI, MCP, GitHub Actions).

Terminal window
vibe history shop # newest first
vibe history shop shop-mvvf8lzv # the full build and rollout log of one deploy

The last 30 deploys per app are kept.

Terminal window
vibe rm shop --yes

This removes the app, its environment variables, its domains, its volume and its images. Linked databases stay.