Skip to content

Self-Hosting

Run Raven from a local source checkout or deploy it as a Docker Compose service. The Compose deployment serves the WebUI through nginx, runs the Raven engine and its child services in one container, and stores persistent data in a named volume.

Prerequisites

Docker deployment requires Docker Engine and Docker Compose v2. To run from source, install Python 3.12, uv, Node.js, and npm, then install the project dependencies before starting the engine.

Start with Docker Compose

Build and run the current checkout with Compose. It builds the WebUI and Python environment into the image, so neither needs a separate host-side build:

cd docker
docker compose up --build

To run the configured image without building the checkout, use docker compose up --no-build. Plain docker compose up does not guarantee that local source changes are rebuilt.

Open http://127.0.0.1:18793. The container runs the full gateway engine. Model providers added under Settings > Model providers are available on the next turn without a restart.

See Docker Deployment for container services, sign-in, provider setup, and operational guidance.

Configuration

Compose uses the shell environment and docker/.env to interpolate the image, published port, and build arguments. The service's optional docker/.env.local file overrides container runtime variables, such as provider credentials; it is not automatically used for Compose interpolation. Store credentials there, and set build or port overrides in the shell or via explicit --env-file options. See Docker Deployment for examples.

Raven stores configuration, sessions, workspace files, logs, and memory under RAVEN_HOME. In the Compose deployment, this directory is /data/.raven, inside the raven-data volume mounted at /data. Preserve the volume during upgrades and restarts. docker compose down -v deletes the volume and all data it contains.

Build a Docker image

Build the image using the Makefile target:

make docker-build

The default image tag is raven:local. You can set the tag explicitly or choose which optional dependencies to include:

make docker-build DOCKER_IMAGE=raven:local
docker build -t raven:local --build-arg RAVEN_EXTRAS="channels,tools,sandbox" .

To run the local image without rebuilding it, set RAVEN_IMAGE=raven:local and run docker compose up --no-build from docker/. You can export the variable or prefix the command with the assignment. To rebuild and start the checkout through the Makefile instead, use RAVEN_IMAGE=raven:local make docker-up. Stop the services with make docker-down.

Start the server from source

From the repository root:

make install-deps
make build-ui
uv run raven web

raven web opens the WebUI and keeps the engine running after the terminal exits. It defaults to http://127.0.0.1:18792. Use uv run raven web --foreground when debugging, or uv run raven web --stop to stop the background engine. Raven can start before a model is configured; add a provider under Settings > Model providers or run uv run raven onboard.

To start the engine without opening a browser, use uv run raven gateway.