Skip to content

Dependencies

What you actually need, in tiers. Start at the core and add only what your use case requires.

Core — the research workbench

  • 1 process. No database, no message broker.
  • Only hard dependency: libvirt / KVM. rvmc clones and boots VMs through libvirt; that is the one thing it can’t do without.
  • Runs single-user with RVMC_AUTH_MODE=local (see Auth modes).

That’s the whole floor for booting era-correct machines.

+ Docker — helper services

  • code-server (in-workbench editing) and the wayback-cache proxy (serve archived responses to a guest that expects a dead server) run as containers.
  • Add Docker only if you want these.

+ An OpenAI-compatible endpoint — the AI

  • The autopsy analyst and the rvmc chat agent need an LLM. Provide your own OpenAI-compatible endpoint + key (cloud, or a local Ollama/vLLM). See Bring your own AI.
  • No AI, no analysis or agent — but the manual VM workbench still works.

+ Autopsy — PostgreSQL

  • The autopsy service analyzes bundles as jobs, and its job runner uses a PostgreSQL-backed queue (a SELECT … FOR UPDATE SKIP LOCKED claim loop — no Redis/broker needed).
  • So enabling autopsy adds PostgreSQL to the requirements.
  • Storage for artifacts is pluggable (local filesystem, an artwork drive, or S3-compatible).

+ Multi-tenant server — the full edge

For a shared, internet-reachable deployment (RVMC_AUTH_MODE=forward):

  • Traefik (the reverse proxy / edge) + Authentik (OIDC forward-auth), and Authentik’s own Postgres + Redis.
  • This is the ZKM production posture; skip it entirely for solo self-hosting.

Summary

TierAddsNeeded for
Corelibvirt/KVMbooting VMs (single-user)
+ DockerDockercode-server, wayback-cache
+ AIOpenAI-compatible endpoint + keyautopsy analysis, agent
+ AutopsyPostgreSQLanalyzing bundles as jobs
+ Multi-tenantTraefik + Authentik (+ PG/Redis)shared internet deployment

Language runtimes: rvmc and autopsy are Python services with a React SPA for the workbench UI; exact versions are pinned per repo (see each repo’s pyproject.toml / package.json).