# One-command self-hosted Executor. # # docker compose up -d --build # build the image and start # open http://localhost:4788 # create the admin account (first-run) # # Everything — SQLite (libSQL), QuickJS code execution, and the MCP server — runs # in this single container. The named volume persists the database and the # generated keys across restarts and upgrades. Nothing else to orchestrate. # # No configuration is required: a bare `docker compose up` boots a working # instance and walks you through creating the admin account in the browser. # Optional settings live in .env (see .env.example) — most importantly # EXECUTOR_WEB_BASE_URL when serving behind a domain / TLS. services: executor: build: # Build context is the repo root: the Bun workspace install needs every member. context: ../.. dockerfile: apps/host-selfhost/Dockerfile image: executor-selfhost restart: unless-stopped ports: - "4788:4788" env_file: - path: .env required: false volumes: - executor-data:/data healthcheck: test: - CMD - bun - -e - "fetch('http://127.0.0.1:4788/api/health').then(r=>process.exit(r.ok?0:1),()=>process.exit(1))" interval: 30s timeout: 5s retries: 5 start_period: 20s volumes: executor-data: