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.0Use 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.