Workspace Layout

Rinne keeps workspace history under .rinne/. This page shows the paths that exist in v0.9.8 and what each one is for.

Important

You may edit rinneignore.json, snapshots/<space>/<id>/note.md, and activity/settings.json.
Everything else under .rinne/ should be managed through rinne commands or the GUI.
Avoid manual edits to internal files such as manifest.db, manifest.v2.db, filemeta.db, repair.db, activity.db, current, or the CAS, tree, and repair stores.

Key paths

Ignore rules
workspace/rinneignore.json

Rules that tell Rinne which paths to ignore during save, diff, validate, and related operations.

Workspace config
workspace/.rinne/config.json

Workspace-level defaults such as parallelism and compression level.

Snapshot history
workspace/.rinne/snapshots/

Snapshot directories grouped by space, plus the current space pointer.

Activity history
workspace/.rinne/activity/

Separate SQLite command history and its recording, retention, paging, and display settings.

Internal storage
workspace/.rinne/store/

ManifestDB, file metadata cache, normal CAS chunks (loose files and, in format v2, pack files), repair data, and tree objects used internally by Rinne.

Directory tree

Directories end with /. Files do not.

workspace/
|-- .rinne/
|   |-- .lock
|   |-- config.json
|   |-- activity/
|   |   |-- activity.db
|   |   `-- settings.json
|   |-- snapshots/
|   |   |-- current
|   |   `-- <space>/
|   |       `-- <id>/
|   |           |-- note.md
|   |           `-- snapshot/
|   |-- store/
|   |   |-- cas/
|   |   |-- filemeta.db
|   |   |-- manifests/
|   |   |   |-- manifest.db
|   |   |   `-- manifest.v2.db   (format v2 only)
|   |   |-- packs/               (format v2 only)
|   |   |-- repair/
|   |   |   |-- repair.db
|   |   |   |-- cas/
|   |   |   `-- shards/
|   |   `-- trees/
|   `-- tmp/
|       `-- packs/               (format v2 only)
`-- rinneignore.json

Note: paths under .rinne/ are internal implementation details and may change across versions. Use the CLI or GUI instead of manual edits.

What each part is for

rinneignore.json

Ignorerules for the workspace. Keep this file under version control if you want the same exclusion behavior across machines.

.rinne/config.json

Workspace-level defaults used by commands such as save, extract, restore, verify, and validate.

.rinne/activity/activity.db

SQLite database for CLI execution entries, UUIDv7 ids, BLAKE3 chain hashes, head metadata, and the retained anchor after pruning. It is separate from ManifestDB and the CAS.

.rinne/activity/settings.json

Activity recording and retention settings, including enabled state, stored text limits, retention days, maximum entries, maximum database bytes, list limits, short-id length, and automatic pruning. Recording is disabled by default.

.rinne/snapshots/current

Pointer to the current space. Commands resolve the active space from this file unless a CLI override is supplied.

.rinne/snapshots/<space>/<id>/

Snapshot record for one snapshot in one space. Each snapshot directory contains the user note and a snapshot/ folder reserved for snapshot-level data.

  • note.md - Optional user note for that snapshot.
  • snapshot/ - Snapshot-specific data reserved for Rinne internals.
.rinne/store/manifests/manifest.db

ManifestDB. This is the main snapshot metadata database used by save, diff, restore, history, verify, and related commands.

In a format v2 repository, this file is only a small marker that stops Rinne v0.9.7 from opening the repository, and the real database is manifest.v2.db next to it. Never delete or empty the marker.

.rinne/store/filemeta.db

File metadata cache used to speed up incremental save decisions. This is cache data, not the source of truth for snapshots.

.rinne/store/cas/

Content-addressed chunk storage. Reused chunks are shared across snapshots instead of being copied for each snapshot. Each chunk here is stored as its own loose file. In format v2, chunks written before upgrade stay here and remain readable.

.rinne/store/packs/

Pack files for format v2 (new in v0.9.8). Each pack holds many compressed chunks (up to about 32 MiB) followed by its own index, and is named by the BLAKE3 hash of its content. The chunk index in manifest.v2.db points into these files; the index at the end of each pack lets repair reindex rebuild it. gc removes or rewrites packs as snapshots are deleted.

.rinne/store/repair/

Repair data store used by repair and the desktop Repair window. It contains repair metadata, repair CAS data, and repair shards.

  • repair.db - RepairSet metadata and references.
  • cas/ - Repair content-addressed objects.
  • shards/ - Repair shard data used to recover normal CAS objects when possible.
.rinne/store/trees/

Tree objects used for snapshot directory structure storage and merge operations such as fuse.

.rinne/tmp/

Temporary files used internally during operations, recovery, and staging. In format v2, pack files being written are placed in tmp/packs/ until they are complete.

.rinne/.lock

Lock file used to prevent concurrent write-style operations against the same workspace.

Ops tips

  • To check which format a repository uses, run rinne upgrade --dry-run or rinne downgrade --dry-run; neither changes anything.
  • If you copy or move a workspace, include .rinne/ together with your files to keep snapshot history.
  • Prefer CLI or GUI operations for integrity and cleanup instead of manual edits. Use repair prune or repair clear for repair data, and activity prune or activity clear --force for Activity history.
  • Treat files under .rinne/store/ and .rinne/activity/activity.db as internal implementation details even when their names are visible here.