MyWiki
A shared, git-synced, LLM-maintained wiki — one knowledge base that any agent (Claude Code, Codex, ouro-cli, GoaLoop, …) on any machine reads from and writes to.
Inspired by Andrej Karpathy's LLM-wiki note: instead of re-retrieving raw documents on every query (RAG), an LLM incrementally maintains a structured markdown wiki whose knowledge compounds over time.
Idea in one picture
sources/ immutable snapshots (id = content hash)
│ mywiki ingest → work order
▼
wiki/pages/*.md one concept per page, every claim cited [^src-id]
│ mywiki query → cited answers
▼
git push/pull sync across machines, agents, users
- The CLI does the mechanical work — hashing, routing, indexing, linting, git.
- The calling agent does the reasoning — extract facts, write prose, merge
conflicts — guided by
PLAYBOOK.md. - git is the coordination layer — push to GitHub/GitLab to share.
The split matters: the CLI can't call a model, so the intelligence lives in
markdown (PLAYBOOK.md, exposed via mywiki help) and is executed by whatever
LLM is running. That's what lets every tool share one brain.
Install
Zero-dependency Python 3 (stdlib only). Install from PyPI:
uv tool install my-wiki # or: uv pip install my-wiki / pip install my-wiki
(The distribution is my-wiki; the command it installs is mywiki.)
Then create your first wiki and wire it into Claude:
mywiki init ~/my-wiki # create + register a wiki (becomes default)
mywiki install # deploy the bundled skill into ~/.claude/skills
Use
mywiki help # learn the commands
mywiki ingest notes.md # freeze a source, get a work order
# …agent edits wiki/pages/* per the work order…
mywiki commit-ingest src-1a2b -m "ingest: meeting notes" # commits + auto-pushes
mywiki query raft leader election # cited answers
mywiki lint # broken/stale/uncited check
mywiki sync # pull --rebase + push (reconcile with remote)
Multiple wikis
Each wiki is its own git repo, so you can run several independent ones (e.g. a
work and a personal knowledge base). A per-machine registry
(~/.config/mywiki/registry.json, not synced) gives them stable names:
mywiki init ~/work-wiki work # create + register, first becomes default
mywiki init ~/personal-wiki personal
mywiki use research ~/some/existing # register an existing wiki
mywiki list # show all, marking default + active
mywiki default personal # change the default
mywiki -w work query raft # target a specific wiki on any command
mywiki forget research # drop from registry (files untouched)
Which wiki a command hits, in order: -w <name> → $MYWIKI_HOME → the wiki you
are cd'd into → the registry default.
Make agents aware of it
Each tool just needs a one-line pointer to the CLI (there is no per-tool logic —
the usage lives in mywiki help):
- Claude Code: run
mywiki install(deploys the bundledskills/mywiki/SKILL.mdto~/.claude/skills/). - Codex / others: add to
AGENTS.md: "AmywikiCLI maintains a shared knowledge base; runmywiki helpto use it."
Layout
This repo is the tool's source. Actual wikis are created elsewhere with
mywiki init and have their own sources/, wiki/pages/, wiki/log/,
wiki/index.md, plus a copy of PLAYBOOK.md / .schema.md.
| Path | What |
|---|---|
mywiki/cli.py |
the CLI (mechanical engine + self-docs) |
PLAYBOOK.md |
the workflow/prompts, served by mywiki help (canonical template) |
.schema.md |
what a page looks like (canonical template) |
mywiki/resources/ |
symlinks to the templates + skill, bundled into the wheel |
skills/mywiki/ |
the Claude skill, deployed by mywiki install |
pyproject.toml |
packaging (entry point mywiki = mywiki.cli:main) |
Metadata
Release files for my-wiki 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| my_wiki-0.1.1.tar.gz | 20.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| my_wiki-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.9 kB
Release files / my_wiki-0.1.1.tar.gz
| Download URL | my_wiki-0.1.1.tar.gz |
|---|---|
| Size | 20.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3fa7f6ff17edd850994a648f11cb12abfdc21101c7be94c5b1eb0cb92fc83d5c
|
|
BLAKE2b-256 checksum How to use checksums |
88cd433121f74f50904cfbde8694d115d14556d5d5e50442b55efdd94ae3bcd2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.
Transparency logRelease files / my_wiki-0.1.1-py3-none-any.whl
| Download URL | my_wiki-0.1.1-py3-none-any.whl |
|---|---|
| Size | 24.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bd58bad501df62f410d6938bf25abfcc7b66e52669abcee309e35f2b76a156eb
|
|
BLAKE2b-256 checksum How to use checksums |
4e6c43a5e1636bb015147603d19007c92d7d8d29502a4a2c511cebf47d3bf21c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.
Transparency log