arcave 0.1.0-alpha.2
arcave 0.1.0-alpha.2 was released on 2026-10-31. Clean up after yourself with arcave gc, share one store between machines, and watch what each command is doing as it runs.
This is still an alpha. Commands, flags, output, config keys and the storage format may change between alpha releases with no migration path. Savepoints taken with alpha.1 may not be readable by alpha.2. Do not use it in production yet.
Breaking changes
session deleteis nowsession remove. The MCP toolsession_deleteis nowsession_remove, and the JSON fielddeletedis nowremoved.- The MCP tool
savepoint_removetakesrefsinstead ofids. A ref is an id or a name. - The terminal shows a live progress tree and a text summary. Before, every command printed JSON. Now a command run on a terminal (with
log.format: text) draws its steps on stderr and prints its result as text. When stdout is a pipe or a file, the result is still JSON, soID=$(arcave savepoint create | jq -r .id)keeps working.--format jsonasks for JSON on a terminal too. log.levelis empty by default. Above the live tree only warnings are printed; with--progress logthe default isinfo. Set--log-level,ARCAVE_LOG_LEVELorlog.levelto choose.- Volume sizes moved in the savepoint record. Each
statsentry now carriessize_bytes,stored_bytesandreused_bytesitself. They are no longer insidepayload. savepoint removeno longer deletescdcdata. The restic snapshots of a removed savepoint stay untilarcave gcforgets and prunes them.
New
-
arcave gcgives back the space removed savepoints held. It deletes savepoint directories no record names, stored images and layers no savepoint uses, thecdcsnapshots of removed savepoints, and thearcave/…tags rollbacks left in Docker once no container uses them.--dry-runshows what would go and deletes nothing. It covers every compose project of the session, so it takes no-p. Agents get it as the MCP toolgc. New tags are kept for an hour, set bygc.restored_layer_grace.arcave savepoint remove --retain-recent 5arcave gc --dry-runarcave gc -
Several machines can share one store. Every command that changes a session now also locks it in the store, so two machines take turns instead of writing over each other. A command that finds the session busy waits up to 60 seconds, then fails naming the machine and the command that holds it. The lock of a crashed command is taken over after 30 seconds. If a rollback succeeds but can't drop its safety snapshot, the result names it in
safety_snapshot_kept. -
See progress as it happens.
--progress ttydraws a live tree of the steps with bytes, rates and warnings.--progress logwrites one log line per step.--progress jsonwrites every step as a JSON line on stdout, with the result last. The default picks the tree on a terminal and the log elsewhere.--format text|jsonchooses how the result is printed. Both can also be set withARCAVE_PROGRESSandARCAVE_FORMAT. -
Get a compose file back from a running project.
arcave tools generate-compose -o recovered.yamlwrites a compose file from what Docker reports about the project. It is the same spec a savepoint records, for a project whose compose file was lost or never written. Agents get it as the MCP toolcompose_generate.arcave tools generate-compose -p myapp -o recovered.yaml -
Shorter commands.
spandsaveforsavepoint,lsforlistandrmforremove:arcave sp lsarcave sp rm before-migration
Fixes
savepoint removetakes names as well as ids, asrollbackdoes. Before, a name was reported as not found.session remove baseline --forceempties the default session. It deletes all of its savepoints and keeps the session itself. Without--forceit is refused, with a hint.
Good to know before you rely on it
- The services stop during every savepoint and rollback, for longer when the volumes are large.
- You can only go back to a savepoint you took. There is no point-in-time recovery.
- If you leave a service's container files out of savepoints, a rollback rebuilds it from its
image:, which must still be in Docker or a registry. The image copy stored in the savepoint isn't used yet. - Give every stateful service a health check. Without one, arcave treats a service as up as soon as its container starts.
- After a rollback, running
docker compose upby hand recreates the containers from your compose file, and the restored container files are lost. Volume data stays. - Some space takes two
arcave gcruns to come back: an unused image's layers go on the run after the image. - On a store shared by several machines, run
arcave gcwithout--dry-runonly while no other machine works in the same session. In rare cases the store lock can't tell two machines apart, and gc could then delete data another machine's savepoint has just reused. - gc leaves alone an
arcave/…tag of a compose project no session holds any more, or one an earlier arcave version made. List them withdocker image ls --filter 'reference=arcave/*'and remove those by hand. - On Docker Desktop for macOS,
cdccannot capture bind mounts. Use named volumes, orfullcopyfor that project. - SFTP storage does not check the server's host key yet.
The full list is in Limitations.