Installation¶
riverbank supports multiple installation paths depending on your use case.
Python package (development)¶
Extras groups¶
riverbank uses optional dependency groups to keep the core package lightweight:
| Extra | Purpose | When to install |
|---|---|---|
dev |
pytest, ruff, mypy, testcontainers | Local development and testing |
docs |
mkdocs-material, mkdocstrings, mike | Building the documentation site |
ingest |
Docling, Instructor, spaCy, sentence-transformers | Real LLM extraction (production) |
review |
Label Studio SDK | Human review loop |
orchestration |
APScheduler, Prefect | Workflow orchestration |
hardening |
prometheus-client, aiobreaker, hvac | Production metrics, circuit breakers, Vault |
Install multiple extras at once:
Docker¶
The project ships a production Dockerfile:
Or use the pre-built image:
Docker Compose (full stack)¶
The docker-compose.yml at the repo root brings up the complete stack for local development:
Services included:
| Service | Purpose |
|---|---|
postgres |
PostgreSQL with pg-ripple, pg-trickle, pgvector |
pg_tide |
CDC relay sidecar |
ollama |
Local LLM runtime |
langfuse |
LLM observability dashboard |
riverbank |
Worker container |
Kubernetes (Helm)¶
For production deployments, use the Helm chart:
helm install riverbank ./helm/riverbank \
--set dbDsn="postgresql://..." \
--set llmProvider=openai \
--set llmApiKey="sk-..."
See the Helm chart reference for the full values.yaml documentation.
Verify your installation¶
After any installation path:
If you have a running PostgreSQL instance with the required extensions: