Skip to main content
The self-hosted image is the entire Executor server in a single container: the typed API, the MCP server, authentication, QuickJS code execution, and the web console, all in one process over a libSQL (SQLite) file. There is no external database, worker, or proxy to run.

Run it

Using the published image:
Or build from a clone of the repo, from apps/host-selfhost:
No configuration is required. Open http://localhost:4788; the first person to create an account becomes the owner. After that, people join through single-use invite links you mint from the Admin page, and open signup is closed.

Storage

Everything that must persist (the SQLite database and the generated encryption keys) lives in the data directory, mounted at /data in the container. Always mount a volume there so it survives restarts and upgrades:
Back it up by snapshotting that volume (or copying /data, primarily data.db). EXECUTOR_DATA_DIR (default /data) sets the directory, and EXECUTOR_DB_PATH (default <data dir>/data.db) sets the database file.

Environment variables

Everything is optional: a bare run boots a working instance. The defaults below are the container defaults.

Behind a domain or TLS

Set EXECUTOR_WEB_BASE_URL to the exact public URL you load in the browser (scheme, host, and port). If it does not match, browser logins are rejected with an invalid-origin error.
For a headless deploy (CI or infra-as-code), set EXECUTOR_BOOTSTRAP_ADMIN_EMAIL and EXECUTOR_BOOTSTRAP_ADMIN_PASSWORD to create the admin without the browser setup screen.

Connect an agent

The server exposes a streamable-HTTP MCP endpoint at /mcp. Point your client at http://localhost:4788/mcp (or your public URL). See MCP Proxy for how that endpoint exposes your integrations.