mansus GitHub

myself

Your agent remembers people, projects and decisions across sessions. What it learns lands in one file you own.

Tell it on Monday. It knows on Thursday.

Monday

You mention it once. The agent writes it down.

The agent runs these through Bash while it works on storefront. A session last week had already saved the npm fact.

bash
# saved last week: storefront uses npm, alice owns storefront
$ myself remember storefront is project
remembered: storefront is project
$ myself remember storefront uses bun --src "PR #218"
remembered: storefront uses bun
$ myself forget storefront uses npm --reason "moved to bun"
forgot: storefront uses npm
$ myself remember user prefers "short answers, no emoji"
remembered: user prefers "short answers, no emoji"

Thursday

A new session starts with the brief. No re-explaining.

A SessionStart hook runs myself prime, so the agent has this before you type a word. Hook setup is below.

bash
$ myself prime --cwd ~/code/storefront
i am "Coding agent for the storefront repo."
user prefers "short answers, no emoji"
here: storefront
  is project
  uses bun
recent:
  mon  + storefront uses bun
  mon  - storefront uses npm   (moved to bun)

Later

Ask what it knows, and what changed.

You can run these yourself, too.

bash
$ myself describe storefront
storefront
  is project
  uses bun
  ← alice owns
$ myself history storefront uses
fri 16:40  + uses npm
mon 10:02  + uses bun   (PR #218)
mon 10:03  - uses npm   moved to bun
$ myself path bun alice
bun ← uses storefront ← owns alice

The agent does the thinking. myself keeps what it learned.

Install

Available from v0.1. The first release is in progress, so none of this installs yet. Watch the repo on GitHub to hear when it ships.

bash Linux and macOS, or Go
# one line (Linux, macOS): downloads the release binary into ~/.local/bin
$ curl -fsSL https://raw.githubusercontent.com/mansus-org/myself/main/install.sh | sh

# or with Go
$ go install github.com/mansus-org/myself@latest

Use it from Claude Code

  1. 1Install the skill. Copy skill/myself from the repo into ~/.claude/skills/.

    bash from a clone of the repo
    $ cp -r skill/myself ~/.claude/skills/
  2. 2Start every session with the brief. Add a SessionStart hook to ~/.claude/settings.json that runs myself prime.

    ~/.claude/settings.json file
    {
      "env": { "MYSELF_AGENT": "claude-code" },
      "hooks": {
        "SessionStart": [
          { "hooks": [ { "type": "command", "command": "myself prime --cwd \"$CLAUDE_PROJECT_DIR\"" } ] }
        ]
      }
    }
  3. 3Allow Bash(myself:*) so permission prompts do not stop the agent.

    ~/.claude/settings.json file
    {
      "permissions": { "allow": [ "Bash(myself:*)" ] }
    }

Other harnesses: any agent that can run shell commands can use myself. myself prime prints a brief to paste into its system prompt.

What you get

  1. Works with the agent you already run

    The agent does the extracting before it calls myself. So there are no extra LLM calls, no server and no API keys, and it works offline.

  2. One binary, called from Bash

    Claude Code, Codex, pi, or any agent that can run a shell command can call it. Put the binary on your $PATH, add a skill file, and the agent can use it.

  3. Facts carry time

    A correction replaces the old fact going forward, and the old one stays in the history. Add --at to see what was true on a given date.

  4. Molting: the agent rewrites who it is

    The agent keeps one fact, i am "…", and rewrites it when you correct it. myself history i am shows how it changed.

  5. Dreaming tidies up

    myself dream lists duplicate entities and near-duplicate predicates. The agent merges them with ordinary commands.

  6. One file, in git

    The memory is ~/.myself/brain.jsonl. It diffs, it lives in git, and two memories merge like two branches.

  7. See it in Obsidian

    myself export --obsidian <dir> writes one note per entity with [[wikilinks]], and Obsidian's graph view draws the graph. It is a one-way mirror: 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

The design and the command list are public.

Follow along.