A platform for the conservation of born-digital and media art — automated analysis, a research workbench for reviving works on period virtual machines, and gallery-safe exhibition playback. Developed at ZKM | Center for Art and Media Karlsruhe.
VM-conservation platform for media art — the superproject wiring the family as
submodules. git clone --recursive gets the whole set co-located (the
artwork-autopsy / research-vm-controller → vmctl-core path deps resolve
because the submodules sit as siblings).
Why "vmctl"? The works come back to life inside virtual machines — faithful
period computers — and every tool here controls one, so the family is named
vmctl ("VM control"), after the Unix convention for control utilities
(systemctl, kubectl → vmctl). The members share that root: the Research VM
Controller (rvmc), the Exhibition VM Controller (evmc), and
artwork-autopsy, all resting on the shared vmctl-core spine.
This is a roadmap as much as a release. The pieces sit at different maturity. Take the status column below at face value: some parts are validated and ready to run, one is alpha with APIs still in flux. We would rather tell you that than have you find out.
Three stages carry one artwork through one system: analysis → workbench →
exhibition. artwork-autopsy tears an unknown born-digital work apart and works out
what it needs; research-vm-controller (rvmc) turns that
into a revival on a period VM; exhibition-vm-controller (evmc) locks a verified result
into a gallery-safe playback. vmctl-core is the shared spine, docs the shared
knowledge, wayback-mcp the shared dead-server helper, and vmctl-guest-agent the
in-guest agent the controllers drive inside the period VMs. A recursive clone brings all
seven members.
| submodule | role | status |
|---|---|---|
artwork-autopsy |
deterministic-static + agentic analysis brain | usable — validated on a benchmark (10/11 across six runtime families), EU-sovereign model stack |
vmctl-core |
shared lib — artwork-drive schema, base-image catalog, plugin spec, VM backends | usable — the shared foundation |
docs |
family docs — source for docs.vmctl.org; clone it and point an AI agent at it | usable — read it, or serve it |
exhibition-vm-controller |
evmc — the exhibition/playback controller | published — already public |
wayback-mcp |
shared MCP tool — web-archive resolution for dead-endpoint revival | usable — autopsy's archive side-car |
vmctl-guest-agent |
in-guest agent (agentbox) the controllers drive over virtio-serial/TCP/HTTP — per-OS forks, shared wire contract | usable — ships in every golden image |
research-vm-controller |
rvmc — the analysis→revival workbench controller | alpha — published + deployed, in active use with proven revivals; APIs still in flux |
rvmc is alpha. It's published, deployed, and in active use, with revivals proven end-to-end — but its APIs are still moving, so treat it as pre-release rather than stable. Follow its progress on vmctl.org.
Cross-cutting documentation lives in its own repo (vmctl-docs), wired here as
the docs/ submodule so a recursive clone still gets it. It is the
source for docs.vmctl.org — generated from the repo with its own CI, separate
from the code's release cadence. Holds getting-started/, guides/,
operations/, reference/, and the whitepaper/ source. Per-repo docs stay in
each code submodule.
git clone --recurse-submodules https://github.com/zkmkarlsruhe/vmctl.git
A recursive clone brings all seven members co-located, so autopsy's ../vmctl-core
path-dep and the ../wayback-mcp side-car build resolve. To try the analysis:
cd vmctl/artwork-autopsy and follow its README Quickstart.
MIT — a ZKM Open-Source project, Center for Art and Media Karlsruhe.
Not affiliated with The Sleuth Kit's Autopsy; artwork-autopsy shares the
forensic-dissection metaphor, not the codebase.