A faithful, append-only archive of AI coding sessions -- Claude Code, Gemini, Codex -- on machine-local storage, so transcripts survive the tools' rotation windows. Sync runs hourly from a git checkout; nothing is overwritten, nothing is deleted, and no step calls an LLM.
The installer proposes the platform-default local root and refuses
cloud-synced paths for it -- a cloud folder belongs as the consolidated
root, not the local one. It registers the machine, seeds shared config,
and writes the native scheduler unit; it never edits your crontab and
writes nothing outside the dataset root and the unit file. Updating is
git pull: the unit points at the checkout, so the next tick
runs the new code. There is no deployed copy and no self-updater.
Is this machine actually archiving?
every failure prints its fix
atlas
$ python3 ~/code/pibmo-recall/scripts/sync/doctor.py \ --root "$HOME/Library/Application Support/pibmo/recall" \ --consolidate ~/Dropbox/Datasets/pibmoPibmo Recall doctor -- machine 'atlas', root /Users/dev/Library/Application Support/pibmo/recall OK root /Users/dev/Library/Application Support/pibmo/recall/machines.json readable (2 machine(s) registered) OK identity 6f2a91c4... OK registered 'atlas' OK writable canary ok under atlas/logs/ OK unit 1 unit file(s) current OK unit-cmd embedded interpreter and script exist OK heartbeat last completed sync 2026-07-22T09:00:11.482913+00:00 (0.4h ago) OK log /Users/dev/Library/Application Support/pibmo/recall/atlas/logs/cron.log (modified 0.4h ago) OK consolidated this machine's replicated heartbeat 2026-07-22T09:00:14.107255+00:00 (0.0h behind local) WARN fleet harbor: heartbeat 27.3h oldfix: that machine (or its transport) has gone dark -- run the doctor thereSummary: 9 ok, 1 warn, 0 fail
The data path
copy, then consolidate
Archiving is a copy. The hourly unit mirrors each tool's home into the
machine-local root; consolidation folds per-machine subtrees into one
shared root as a separate transport step. By design, replication beyond
that is delegated to tools built for it.
The moving parts
scripts, not a daemon
install.sh
Propose a local root, register the machine in machines.json, seed shared config, and write the scheduler unit.
sync-transcripts.py
Archive new session data from the tool homes. Safe any time; concurrent runs exit immediately via a lock.
doctor.py
Check registration, unit, heartbeat, and replication lag. Every failure prints its exact remediation.
scheduler.py
Render, write, or verify the native scheduler unit -- LaunchAgent on macOS, systemd user timer on Linux.
process_root.py
Project the raw archive into merged per-project Markdown under denylist profiles.
Deployment shapes
both first-class
The local root must be a plain local path -- the installer refuses
cloud-synced and remote paths for it rather than archiving onto storage
that a mount, permission fence, or network can deny. Nothing beyond the
first shape is ever required; the second is opt-in for operators with
more than one machine.
single-machine
One local dataset root at the platform-default path. Install, accept the proposed root, activate the unit -- done. No cloud storage, no consolidation, no extra tooling; this is the whole product on one machine.
roots
one, machine-local
scheduler
LaunchAgent / systemd timer
consolidation
never comes up
multi-machine
Each machine archives to its own local root, and every sync additionally pushes that machine's subtree into one shared consolidated root. Replicating that root to cloud storage is delegated to a tool built for it.
roots
one local per machine + one shared
transport
--consolidate on the unit line
replication
delegated -- rclone or vendor client
Preservation scope
what is and is not guaranteed
Preservation is not replication
Recall provides preservation: the archive is
append-only, so a transcript is never overwritten or shrunk. Appends
extend it, a divergent rewrite -- compaction, for instance -- is kept
as a sibling fork file, and regressions are skipped. Nothing is ever
deleted.
It does not provide replication. The local root
protects transcripts from the tools' rotation windows, not from the
loss of the disk they sit on. Durability beyond one machine comes from
the consolidated root and from replication
delegated to tools built for it -- Recall
deliberately ships no cloud client of its own.
The archive is also faithful, and faithful cuts both
ways. Credential files never enter it, but transcript content is not
redacted at sync time -- everything your sessions saw is in the root.
Filtering happens later, in the deterministic processing layer, under
denylist profiles. Treat the dataset root with the sensitivity of the
sessions it holds.