Self-hosting

flamel runs as a single Docker container. Your data stays on your machine. Everything below applies to a standard deployment.

Running the container

shell
docker run -d \
  --name flamel \
  --restart always \
  --privileged \
  -p 8181:8181 \
  -v flamel:/data \
  flameldev/flamel:latest

First-start registration

On first start, the server isn't registered with flamel.dev yet. It generates a registration URL and prints it to the logs:

shell
docker logs flamel
output
  flamel server is not registered with flamel.dev.

  Register at:
  https://flamel.dev/register-server?nonce=abc123...&callback_url=...

  Starting server and waiting for registration callback...

Open that URL in your browser. Sign in to flamel.dev and confirm the registration. flamel.dev then redirects your browser back to your server's callback endpoint to complete the handshake and store credentials.

The registration page will ask for your server's URL. Enter your public IP or domain if you're on a VPS (e.g. http://1.2.3.4:8181). For local use, http://localhost:8181 is fine.
FlagWhy
--privilegedRequired for bubblewrap (bwrap) — the sandbox that isolates each agent session. Without this, sessions won't start.
--restart alwaysDocker brings the container back up after crashes or reboots.
-v flamel:/dataPersists the SQLite database, session history, and config across container restarts.
-p 8181:8181Exposes the API. Change the host port if 8181 is taken.

Data

Everything lives in /data inside the container — the SQLite database (flamel.db), session history, Drive files, and config. Back this volume up if you care about your data.

Updating

shell
docker pull flameldev/flamel:latest
docker stop flamel && docker rm flamel
docker run -d --name flamel --restart always \
  --privileged -p 8181:8181 -v flamel:/data \
  flameldev/flamel:latest

Your data in the flamel volume is untouched — the new container mounts the same volume.

Reverse proxy (TLS)

flamel listens on plain HTTP. Put nginx or Caddy in front for TLS. Example Caddy config:

caddy
flamel.yourdomain.com {
    reverse_proxy localhost:8181
}

Then add your server to flamel.dev using https://flamel.yourdomain.com.

Native packages

If you prefer running the binary directly, .deb, .rpm, .pkg.tar.zst, and .tar.gz packages ship on every tagged release. Download from the downloads page.

Native packages still require bubblewrap (bwrap) to be installed on the host. On Debian/Ubuntu: apt install bubblewrap. On Arch: pacman -S bubblewrap.