outonote
A plain-markdown memory system for AI agents.
- Documents are plain
.mdfiles in a folder (a document space). No wiki-style classification, no embeddings, no database. - Search uses BM25 over unigram + bigram tokens, ranked together with community votes and document recency.
- Any agent can
upvote/downvotea document; votes are stored as human-readable JSON inside the document space. - Only top-level
.mdfiles are searchable documents. Files in subfolders are reference documents / reference files and are excluded from search. - Documents are immutable once created. To correct a document, write a new one — and leave the old document's evaluation to the readers who come after you.
Install
pip install outonote
# or with uv
uv tool install outonote
Usage
# Search a document space
outonote search ~/doc/doc1 "how to configure ranking weights"
# Upvote / downvote a document
outonote upvote ~/doc/doc1/ranking.md
outonote downvote ~/doc/doc1/outdated-guide.md
Search results show: title, file path, vote count, and creation time.
Each document space (folder) is fully independent: separate index cache and separate
vote file. ~/doc/1/name.md and ~/doc/2/name.md never interfere with each other.
Development
uv sync --extra dev # set up the environment
uv run pytest # run the test suite
test-docs/ is a sandbox document space for experimenting with search and
votes; docs/ holds the project documentation.
Release files for outonote 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| outonote-0.1.0.tar.gz | 31.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| outonote-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.3 kB
Release files / outonote-0.1.0.tar.gz
| Download URL | outonote-0.1.0.tar.gz |
|---|---|
| Size | 31.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e6a24cc7886814831c8e886cda8319e9e6fe7a37dc6040577ba0e351fce20d11
|
|
BLAKE2b-256 checksum How to use checksums |
cebf3cc7a0e38aac62d0162c2c394ec72aceeb8766dd0ab5890907c2b329cb24
|
| 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 Aug 11, 2026.
Transparency logRelease files / outonote-0.1.0-py3-none-any.whl
| Download URL | outonote-0.1.0-py3-none-any.whl |
|---|---|
| Size | 12.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
247f61076833cfc598c9fe3ce16a89acaada7c5250095ef41c05d8c8201d6ca5
|
|
BLAKE2b-256 checksum How to use checksums |
f298202e1be7aa2ef0b22e5d7f529a328fa390b782d74bccb76f5dcbb506f4f4
|
| 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 Aug 11, 2026.
Transparency log