headless · self-host
Run 00 anywhere.
The same engine that powers the Mac app runs headless on Linux, Windows, and servers — control it from any browser, your phone, or your Mac. Every device pairs with an 8-digit code you approve; nothing connects silently.
macOS & Linux — one command
curl -fsSL https://0-0.chat/install.sh | bash Installs the engine, links 00d onto your PATH, and starts an auto-start service. Needs Node ≥ 20. Windows: download the tarball and run 00d.cmd up.
Docker
Drop this Dockerfile in a folder — the container is the service, so there's no launchd/systemd to manage. Data persists in a volume; pairing is still required.
# 00 headless engine — https://0-0.chat
FROM node:22-slim
RUN apt-get update && apt-get install -y --no-install-recommends curl ca-certificates tar \
&& rm -rf /var/lib/apt/lists/*
# Install the engine (no host service — the container IS the service).
RUN curl -fsSL https://0-0.chat/install.sh \
| ZEROZERO_NO_SERVICE=1 ZEROZERO_INSTALL_DIR=/opt/00d ZEROZERO_BIN_DIR=/usr/local/bin bash
ENV ZEROZERO_DATA_DIR=/data
VOLUME /data
EXPOSE 4600
CMD ["00d", "up"]…or with Compose:
services:
00d:
build: .
container_name: 00d
restart: unless-stopped
ports: ["4600:4600"]
volumes: ["00-data:/data"]
# environment:
# ZEROZERO_MASTER_KEY: "<base64>" # keep the vault key off disk — see /security
volumes:
00-data:$ docker compose up -d
$ docker compose exec 00d 00d pair # shows pending requests + codes
$ docker compose exec 00d 00d pair approve <id>
The web UI + API listen on :4600.
Managing it
- ›
00d status·00d version·00d update - ›
00d service install|start|stop|status— auto-start on Linux/macOS/Windows - ›
00d lan onthen00d pair— open to your network & approve devices - ›
00d agent create Rex --engine claude-cli, thencd ~/project && 00d init && 00d run "…"
Exposing it over the internet? Use Tailscale/WireGuard or a reverse proxy with a real TLS cert, and set ZEROZERO_MASTER_KEY to keep the vault key off disk. See security.