Skip to main content

loil — life of ideas, light

Claude Code deletes its transcripts after about thirty days. loil keeps them, and everything around them that you would need later to see how an idea evolved, in a private store on your disk. It does nothing else.

Everything stays on your machine. loil never uploads, syncs or sends anything anywhere. It has no network code, no account, no telemetry and no cloud. The store is a folder on your own disk (~/.loil, readable only by you), and the only things that leave it are the ones you move yourself.

What it keeps

For every Claude Code session of a repo you loil init:

in the store what
payloads/*.json the raw hook payloads (start, end, every compaction)
transcript.jsonl.gz the conversation, byte for byte
subagents/, tool-results/, … everything in the session's own Claude directory
plans/<sha>.md every plan file the session named, every version
file-history/*.gz Claude's copies of every file version it edited in the session
git/start.json, git/end.json, git/diff-end.patch.gz HEAD, branch, status and the uncommitted diff
claude-project-entry.json the project's entry in ~/.claude.json (cost, tokens, model)

And per project: snapshots of Claude's project memory and of the repo's agent configuration (CLAUDE.md, .claude/…) whenever they change, your prompt history for the project with the pasted text it references, and Claude's own sessions-index.json.

Everything is plain files: JSON, JSONL, gzip. gunzip -c gives you the original. Each file is recorded with its size and sha256, and loil verify checks them all.

Use

uv tool install loi-light    # or: pipx install loi-light
cd ~/your/repo
loil init                    # hooks into .claude/settings.local.json; imports the sessions Claude still holds
loil ls                      # the sessions recorded for this repo
loil verify                  # re-hash every stored file
loil capture --backfill      # import again (e.g. after sessions ran on another machine)

The store is ~/.loil (dirs 0700, files 0600). Set LOIL_HOME or loil init --home PATH to keep it elsewhere. Nothing large or sensitive goes inside the repo: it gets .loil/config.toml (commit it; it is the project's id) and two gitignored per-user files.

The store may hold what Claude's own files hold, including MCP environment values from .claude/settings*.json. Nothing in it is ever transmitted: it stays local unless you copy it somewhere yourself. If you point LOIL_HOME at a synced folder (iCloud, Dropbox), that sync is yours, not loil's.

Status

Pre-alpha. Hooks, capture, backfill, ls and verify work for Claude Code. Not yet: importing sessions from a loi store, a periodic capture to bound loss on a crash, Codex.

License

Apache-2.0

Metadata

Release files for loi-light 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for loi-light 0.1.0
File Size Uploaded
loi_light-0.1.0.tar.gz 46.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for loi-light 0.1.0
File Interpreter ABI Platform
loi_light-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 107.1 kB

Release files / loi_light-0.1.0.tar.gz

Download URL loi_light-0.1.0.tar.gz
Size 46.5 kB
Tags Source
SHA-256 checksum
How to use checksums
68aa02044d1a2e2334f1e4beed6fc7290aac172ccc338f2477ced72fe3839daa
BLAKE2b-256 checksum
How to use checksums
9af11256428fcfdeec55bbba2acec9144f2ae3c1c9f2094bcd898016de3898d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / loi_light-0.1.0-py3-none-any.whl

Download URL loi_light-0.1.0-py3-none-any.whl
Size 60.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
22f31a925b916ff74ab38afd5e847520ae630509cabb07ac71223ba7532158cf
BLAKE2b-256 checksum
How to use checksums
9b35af1e67453a8e1ec099fb7100a5dd9a905c7ee2ed0aebf2365d4b3792583e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.2.0

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page