WARHOUNDOPEN SOURCEGitHub
DOCUMENTATION / HOUNDBROWSER

Deployment

A small reference service with explicit operational boundaries.

Run the container

Build the supplied Dockerfile and mount an encrypted persistent volume for SQLite. Bind to loopback or a private network, then place an authenticated TLS reverse proxy in front of it.

docker build -t houndbrowser:0.1.0 .
docker run --rm --init --shm-size=1g \
  -p 127.0.0.1:8080:8080 --env-file .env \
  -v houndbrowser-data:/data houndbrowser:0.1.0

Use one ASGI worker

Browser sessions belong to one runtime process. Do not start multiple Uvicorn workers against one database. Scale separate instances behind a session-aware control plane; never distribute commands randomly across processes.

Persist status, recover safely

SQLite records command status, events, and evidence. After a service restart, unfinished commands become outcome_unknown and browser sessions close. Start a new session; no mutation is automatically replayed. Keep backups and apply an evidence-retention policy appropriate to your deployment.

Observe and limit

The reference service admits eight concurrent sessions and closes idle browsers after five minutes. Bounded synthetic rate experiments stop on throttling, server errors, or excessive target latency. These safeguards do not replace application-level budgets or authorization.