Skip to main content

agenote: cross-agent knowledge base

CI License: MIT

One memory, six agents sharing it.

Agents don't share memory. A pitfall you hit in Claude Code has to be hit again in Codex, because every host stores its memory in a private format you can neither read nor maintain. agenote collects those memories into one Org directory that both AI and humans read and write as the same files.

Why Org rather than Markdown

Most memory systems are built for the Markdown ecosystem: .md files, paragraphs for body text, heading levels for structure, front matter for state. agenote takes the other route, and every card is a standard org file.

This isn't a wrapper. Card structure uses org's native mechanisms directly:

  • Property drawers hold structured metadata. CATEGORY, TECH, STATUS, WEIGHT, and USAGE_COUNT are drawer keys, not lines in the body.
  • TODO keywords carry the state machine. The heading is always * DONE, with the real state in the :STATUS: property, and the CLI moves cards through four states (done, stable, stale, archived).
  • Sections and inline markers keep org syntax. ** 场景 is an org subsection, ~orgfmt --check~ is an org code marker rather than a backtick.

You get three things a Markdown design can't offer:

Humans can edit directly. Open Emacs and M-x org agenda lists the cards by state; org-refile moves them; [[card][description]] links are clickable. Maintaining the knowledge base needs no agent and no separate interface.

Zero learning cost for Emacs users. If you already take notes in org mode, recording an agent's lessons is just more entries in the same drawers.

Readable Git diffs. Which sentence changed in a card is visible at a glance in org. Large Markdown files are mostly reflowing in a diff.

The cost is explicit: it assumes you have Emacs or at least an editor that understands org syntax. Even without one, the files are plain text and nothing is lost, you just lose agenda and refile.

What it stores

Two kinds of content, with a clear boundary:

  • Experience cards in experiences/. One reusable lesson each, with a title, category, tech stack, body, and status. This is the knowledge base's atom.
  • Memory entries in MEMORY.org. Long-lived constraints that cut across cards, such as your preferences, a project's build commands, or gotchas specific to one machine. Lighter than cards, and injected into sessions first when you search.

Cards you write by hand and cards written by agents live in separate subdirectories and don't contaminate each other. Search spans both domains by default, weighting what you wrote higher.

Core capabilities

Write safety. Mutating commands hold a flock process lock, writes go through tmp + rename atomically, and same-second writes get an ID suffix appended. Several agents writing to one knowledge base don't collide.

Mixed Chinese-English search. BM25 ranking with CJK 1/2/3-gram tokenization, so an English command name embedded in a Chinese sentence still matches.

Write gating. Secret scanning is on by default and rejects key-shaped content. Sensitive memory entries carry a marker and stay local, never injected into a session or projected to a host.

Trace back to the source. Every experience links back to the original full conversation, tool calls and reasoning included, rather than to a summary.

A curation loop. Health reports, dedup, status downgrade, archive, and weight recompute are all atomic commands. The agent decides what to keep based on the spec; the CLI only surfaces candidates and the evidence behind them.

Visualization. agenote viz renders the whole knowledge base into a single searchable HTML file.

Six hosts

zcode, Claude Code, Codex, oh-my-pi, opencode, and Hermes each have a plugin or injector wired to agenote context. A brief is injected at session start, and task completion triggers experience capture, with the exact behavior defined by shared skills. Each host's built-in memory write side must be turned off by hand; agenote doctor checks them one by one.

The knowledge base itself is a set of org files, and a Python CLI handles cards, search, curation, and health. 37 subcommands, 460 tests, Python ≥ 3.10, no database.

Versus built-in host memory

Dimension Built-in host memory agenote
Scope Private to one host Six hosts share one knowledge base
Storage Per-host private formats (Markdown fragments, SQLite, JSONL) Unified org files, human-readable
Write side Each host writes independently Host writes disabled; the CLI is the sole writer
Search Local, per-host matching Global BM25 with CJK n-gram
Curation None Health, dedup, downgrade, archive, weight recompute
Visualization None HTML visualization and an Emacs dashboard panel

Quick start

uv tool install git+https://github.com/ShineBreaker/agenote.git

agenote init                    # set up the knowledge base, default ~/Documents/Org

agenote add --title "concurrent write test" --category testing --tech Python

The full command set, configuration, and architecture are in the usage guide.

Who shouldn't use this

  • One person, one agent. Host built-in memory is enough.
  • You already have a note system that works and don't intend to let AI read or write it.
  • You need team sharing, multi-user permissions, or real-time collaboration. agenote is a single-machine file store versioned with Git.

Ecosystem

Read more

License

MIT, see LICENSE.

Metadata

Release files for agenote 0.2.2

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

Source distribution (sdist)

Source distribution for agenote 0.2.2
File Size Uploaded Provenance
agenote-0.2.2.tar.gz 362.5 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for agenote 0.2.2
File Interpreter ABI Platform
agenote-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 629.2 kB

Release files / agenote-0.2.2.tar.gz

Download URL agenote-0.2.2.tar.gz
Size 362.5 kB
Tags Source
SHA-256 checksum
How to use checksums
53610973d3421a2e6300137cf780f0185e73cb6f9e82633aed7e44de6fe3f9df
BLAKE2b-256 checksum
How to use checksums
ff80faa912bd07d0d278c3d31b16f978ed6c2f234d8502f003b2b1d3d3afbcbb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 20, 2026.

Transparency log

Release files / agenote-0.2.2-py3-none-any.whl

Download URL agenote-0.2.2-py3-none-any.whl
Size 266.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
edbfd879785f8a483bf8c2f3ddd98d7151cd94e1c0e45e80d1ca2f0146c54a23
BLAKE2b-256 checksum
How to use checksums
e8fe62ea081ee8a162cf307799f9d4fa366f88f90ec5c0d73a8ac4176c703f54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 20, 2026.

Transparency log

Security for agenote 0.2.2

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for agenote-0.2.2.tar.gz

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 Oct 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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