myself
A personal knowledge graph in one command. The agent you already have does the thinking; myself keeps what it learned.
Say it, then ask it.
bash
# save
$ myself remember relay is project
$ myself remember relay uses bun
# query
$ myself describe relay
relay
is project
uses bun
← felipe works-on relay
# molting
$ myself remember i am "Felipe's coding agent. Prefers bun. Answers tersely."
$ myself history i am
One binary written in Go, called through plain Bash. Nothing to host, nothing to log in to.
Seven decisions
-
The agent is already the LLM
Graph-memory systems such as Graphiti, on Neo4j, spend LLM calls extracting entities and deduplicating them. Inside a harness the agent does that work before it calls the tool. So the store stays dumb, deterministic and offline: no server, no Neo4j, no embeddings, no API keys.
-
A CLI, not an MCP server
Every harness has Bash: Claude Code, Paseo workers, pi. One binary on
$PATHplus a skill file that teaches the commands, and any of them can use the brain. -
Triples plus time
A fact is subject, predicate, object. Facts are never overwritten, only superseded, an idea borrowed from Graphiti's bi-temporal edges. So there is history, and
--atasks the graph what it believed on a given day. -
Molting
The agent keeps one fact,
i am "…", and rewrites it whenever it is corrected. The old shells stay inmyself history, so you can read how the agent changed. -
Dreaming
myself dreamreports duplicate entities, near-duplicate predicates and things that have no type. It only reports. The agent decides what to merge and does it with ordinary commands. -
One file
The whole brain is one append-only JSONL file,
~/.myself/brain.jsonl. It diffs, it lives in git, and two brains merge like two branches. -
Obsidian as a mirror
myself export --obsidian <dir>writes one note per entity with[[wikilinks]], and Obsidian's graph view shows the brain. It is one-way: the file is the truth, and edits in the vault do not come back.
Nothing is overwritten.
A correction does not erase the old fact. It stands behind the new one, fainter, and stays readable.
Fourteen commands
- remember
- save a fact or give an entity a type
- forget
- retire a fact; it stays in the history
- alias
- make a second name point at one entity
- describe
- everything known about one entity, both directions
- ls
- list entities, optionally of one type
- predicates
- the verbs in use, with counts
- search
- find entities and facts by text
- path
- how two entities connect
- log
- what was written, newest first
- history
- every past version of a fact
- prime
- a short brief for the start of a session
- dream
- report duplicates and untyped things
- export
- write the brain out, for example
--obsidian - sync
- pull and push the brain file through git
No release yet. The design is on GitHub and the commands above are the plan.
In design.
A Mansus project. The idea started in the living second brain article.