Install & deploy

The three self-host install paths, where the desktop app fits, and the managed-hosting option if you'd rather not run it yourself.

damn.dev is self-hosted. Pick the path that matches where you want it to run — or have us run it for you.

The three self-host paths#

PathBest forFrontendBackendRuntime
npm CLIA laptop / workstationServed by backendNative Node processOpenClaw native
docker-localLocal, with OpenClaw in DockerServed by backendNative Node processOpenClaw in Docker
docker-vpsA team — a server everyone can reachCaddy (auto-TLS)ContainerContainers

For a team, choose docker-vps. A workspace on a laptop stops when that laptop sleeps, and teammates can't reach it. The other two paths are for evaluating on your own machine.

The desktop app is not a fourth path#

The macOS/Linux app is not where a team's damn.dev lives. It is one of two things:

  • Your company's app. Someone opens the install link you sent them, and the app connects to the damn.dev on your server. No backend runs on their machine. They get the same workspace everyone else sees, plus the endpoint sensor and one-tap connect for their coding agents.
  • A personal install. A private workspace on that one computer, with its own bundled backend. Good for trying damn.dev out. Teammates can't reach it.

The app asks which of the two it is on first run — unless it was opened from an install link, in which case that already answered it.

Most people never download it directly: an employee gets it from the install link their operator sends, which also tells the app which server to join. To grab it yourself for a personal install — or to hand a teammate a signed build before they have a link — download the latest signed release:

Download the desktop app → — macOS (.dmg, Apple-notarized) and Linux (.deb / .rpm).

Note — A personal install shares one data directory (~/.damn-dev/) and one agent directory (~/.openclaw/) with the CLI paths, so those compose: install the CLI first and add the app later, and they connect to the same state. An app connected to your company's server keeps no workspace of its own.

System requirements#

  • OS — macOS or Linux. The Docker paths run anywhere Docker does.
  • Node.js 22 for the npm / CLI path (the Docker paths and a personal desktop install bundle their own runtime).
  • pnpm for the CLI (not npm — see the warning below).
  • Disk — a few GB free: Docker images on the container paths, plus a one-time ~363 MB browser download the first time an agent browses.
  • Memory — modest at rest; budget roughly ~150 MB extra RAM per actively-browsing agent on top of the base.
  • Docker for docker-local, docker-vps, and a personal desktop install (which run the agent runtime in a container). An app connected to your company's server needs none of this.

Installing#

bash
# Local Docker install
curl -fsSL install.damn.dev/docker | bash

# npm install
curl -fsSL install.damn.dev/npm | bash

# docker-vps (a networked server)
curl -fsSL install.damn.dev/vps | bash

Warning — The CLI must be installed with pnpm, not npm — a native dependency hard-fails npm global installs. The install scripts handle pnpm for you; if you install the package by hand, use pnpm add -g @damn-dev/cli.

See the Quickstart for first-run notes (including the one-time ~363 MB browser download).

Running on a different port#

damn.dev serves the workspace on :3001 by default. That's a busy port on a developer machine, so if something else already owns it, pass your own:

bash
PORT=3005 curl -fsSL install.damn.dev/docker | bash

The installer refuses to continue if the port you picked is already taken, and it remembers your choice — later damn-dev start runs come up on the same port without repeating the flag. To change it afterwards, edit PORT= in ~/.damn-dev/.env, or run damn-dev start --port 3005 once.

The desktop app picks its own free port and needs no configuration. It looks for a damn.dev backend you're already running — at whatever port it's on — and connects to that instead of starting a second one; only if it finds none does it start its own. It identifies a backend before connecting, so another app answering on a nearby port is never mistaken for your workspace.

Note — On docker-vps this doesn't apply: the workspace is reached over HTTPS on 443, and :3001 is internal to the deployment.

Managed hosting#

Don't want to run it yourself? We offer managed hosting: a dedicated instance at your-name.damn.dev, provisioned for you, that you administer from minute one.

Note — Managed hosting runs the same software on a docker-vps-style deployment, with the contained shell executor on new provisions and consent-gated, time-limited support access (no standing SSH into your box). Pricing and sign-up live on the damn.dev site; this page is just the pointer.

Next#