Make your AI coding tool's local auto-memory travel with the repo, via git.
Project description
memport
Your AI coding tool learns your project across sessions — then traps that knowledge on one developer's disk. memport sets it free, so it travels with the repo via git.
Claude Code accumulates auto-memory as it works: verified build commands,
architecture notes, known issues, conventions. It lives at
~/.claude/projects/<encoded-git-root>/memory/ as clean markdown —
machine-local, never synced. Clone a colleague's repo and you inherit
CLAUDE.md and git history, but none of the tacit knowledge their Claude
built up. memport closes that gap. It's a git subcommand.
Status: proof-of-concept, Claude Code only. Output is tool-agnostic; Cursor/Codex readers can be added later. Name is a placeholder (rename via the
APP_NAMEconstant inconfig.py).
What it does (and doesn't)
Claude Code's memory files are already excellent structured markdown, so
memport preserves them faithfully rather than distilling them into a
lossy schema. The pipeline is:
~/.claude/.../memory/*.md (per dev, per machine, never synced)
│ git memport pull
▼
strip frontmatter (drops local session ids)
scrub (redacts secrets / real home paths; relative paths untouched)
▼
.memport/memory/*.md ← clean, committed, faithful
.memport/review/*.md ← anything scrub flagged, awaiting human sign-off
│ git memport build
▼
MEMPORT.md ← @-imported by CLAUDE.md / AGENTS.md via marker block
Everything committed rides git's normal review/merge flow. Git is the sync layer — no server, no infra.
Install & use
pip install memport # puts `git-memport` on PATH → `git memport`
# no-packaging path: chmod +x bin/git-memport && add bin/ to PATH
# or run directly: PYTHONPATH=src python3 -m memport <cmd>
git memport init # scaffold .memport/, hook, wire adapters
git memport pull # preserve + scrub local auto-memory
git memport status # list anything flagged for review
git memport build # regenerate MEMPORT.md (idempotent)
git add .memport MEMPORT.md CLAUDE.md && git commit
A post-merge hook re-runs build so teammates get updated memory on pull.
Design decisions
- Preserve, don't distill — real memory files are already well-formed.
- Derived index, never committed — no merge-conflict magnet.
- Own file (
MEMPORT.md), imported via markers — never clobbers CLAUDE.md. - Scrub is mandatory; findings route to
review/for a human gate. - Frontmatter stripped — drops machine-local session ids.
Related
Anthropic issue #28276
requests native in-repo memory storage. If shipped it gives memport a clean
redirect target; the scrub / cross-tool / curation value is unaffected.
License
Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file memport-0.1.0.tar.gz.
File metadata
- Download URL: memport-0.1.0.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
964a204bfb1a4f1e9ab6675d2121ca545735b022935f14782fce8f5c7e3e2f2d
|
|
| MD5 |
4e7c0a310a743467ffcaeb741bf8a352
|
|
| BLAKE2b-256 |
79a60a8447ccdbdbbfc50bef9c1c154c731b4633ed05ab15a8d8f36f795db4e3
|
Provenance
The following attestation bundles were made for memport-0.1.0.tar.gz:
Publisher:
publish.yml on bry1ni/git-memport
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
memport-0.1.0.tar.gz -
Subject digest:
964a204bfb1a4f1e9ab6675d2121ca545735b022935f14782fce8f5c7e3e2f2d - Sigstore transparency entry: 2135007289
- Sigstore integration time:
-
Permalink:
bry1ni/git-memport@04a315f221bddfe434e4e98b51a6fc87d92ee5db -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/bry1ni
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@04a315f221bddfe434e4e98b51a6fc87d92ee5db -
Trigger Event:
release
-
Statement type:
File details
Details for the file memport-0.1.0-py3-none-any.whl.
File metadata
- Download URL: memport-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ef5e95803bbd0014c7f7fb10206962958abd7974583da93451b742ed7eebff2
|
|
| MD5 |
0bcea2cc5d51cee4fd94b140694fc41b
|
|
| BLAKE2b-256 |
f452df734f8c3c962788f590ebc9e1623f51042f0e669f8920a5982baa5fe2ba
|
Provenance
The following attestation bundles were made for memport-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on bry1ni/git-memport
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
memport-0.1.0-py3-none-any.whl -
Subject digest:
9ef5e95803bbd0014c7f7fb10206962958abd7974583da93451b742ed7eebff2 - Sigstore transparency entry: 2135007300
- Sigstore integration time:
-
Permalink:
bry1ni/git-memport@04a315f221bddfe434e4e98b51a6fc87d92ee5db -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/bry1ni
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@04a315f221bddfe434e4e98b51a6fc87d92ee5db -
Trigger Event:
release
-
Statement type: