100% local

Your terminal,
finally has memory.

You've already solved this problem. You just can't remember where. Save anything from your terminal and recall it later in plain English — fully local with Ollama.

Get started → View on GitHub
memory — zsh
── save once ────────────────────────
yaad add "claude --resume 3fa2c891-7b4e-4d1a-9f3c-2e8b5a6d0c19" --for "yaad CLI hybrid retrieval refactor"
saved  [command]
yaad add "payments-api prod: rds.internal:5432/payments"
saved  [fact]
── weeks later, ask indirectly ──────
yaad ask "where was I with the yaad work?"
claude --resume 3fa2c891-7b4e-4d1a-9f3c-2e8b5a6d0c19
↳ yaad CLI hybrid retrieval refactor
where you work — zsh
── you set a reminder earlier ────────
yaad add "do some situps" --remind "in 10 minutes"
saved  [reminder]  due in 10 minutes
── 10 minutes later, mid-work ────────
git push origin main
Everything up-to-date
  ┌──────────────────────┐
  │ yaad · reminder       │
  │                      │
  │ do some situps       │
  │ due: in a moment     │
  └──────────────────────┘
yaad ask "where was I with the auth refactor?" · yaad add "claude --resume 3fa2c891..." --for "payments-api session" · yaad ask "everything I know about payments-api" · yaad add "deploy prod at 3pm" --remind "in 2h" · yaad ask "how do I get into the prod database?" · yaad add "submit PR for review" --remind "tomorrow 9am" · yaad ask "that nginx config I saved last week" · yaad list --remind · yaad ask "where was I with the auth refactor?" · yaad add "claude --resume 3fa2c891..." --for "payments-api session" · yaad ask "everything I know about payments-api" · yaad add "deploy prod at 3pm" --remind "in 2h" · yaad ask "how do I get into the prod database?" · yaad add "submit PR for review" --remind "tomorrow 9am" · yaad ask "that nginx config I saved last week" · yaad list --remind ·
features

The retrieval is serious.
The interface is two words.

Local embeddings, BM25, RRF fusion, cross-encoder reranking — all behind yaad ask.

privacy

Fully local & private

All AI runs via Ollama on your machine. No cloud, no accounts, no data leaving your laptop.

reminders

Smart reminders

Parse "in 30 minutes", "tomorrow 9am", or "Friday 3pm" into real deadlines. Fires inline in your terminal or as a desktop notification.

recall

Query-first memory

Ask in plain English. Local embeddings + LLM reasoning find what you saved, even weeks later.

hybrid retrieval

Hybrid retrieval

BM25 keyword search + semantic vector search merged via Reciprocal Rank Fusion. Catches exact names and fuzzy semantics in one pass.

hyde

HyDE query expansion

Embeds a hypothetical answer instead of your raw question — placing the query in the same space as stored memories for 10–30% better semantic recall.

entity graph

Entity knowledge graph

AI extracts people, projects, tools, and concepts from every memory. Recall everything related to a person or project — independent of exact wording.

resilience

Offline-safe

Memories save even when Ollama is down. AI enrichment degrades gracefully, never blocking saves.

installation

Four commands and you're done.

Requires Ollama running locally. Everything else is a single binary.

1

Install Ollama and pull models

Get Ollama from ollama.com, then pull the required models.

# embeddings model
ollama pull nomic-embed-text
# chat / reasoning model (swap for any compatible one)
ollama pull llama3.2:3b
# optional: cross-encoder reranker for higher recall quality
ollama pull dengcao/Qwen3-Reranker-0.6B
2

Install yaad

go install github.com/kunalsin9h/yaad/cmd/yaad@latest
3

Initialise config

Creates ~/.yaadrc with sensible defaults. Skip this and yaad will use built-in defaults.

yaad config init
4

Save your first memory

yaad add "staging db is postgres on port 5433"

Also set up reminders — it's yaad's most powerful feature and takes 30 seconds.

usage

Six commands.
That's the whole tool.

Types auto-detected by AI: command · note · url · fact · reminder

yaad add

Save anything. --for adds a label, --remind sets a deadline, --tag for filtering later.

yaad add "staging db port is 5433"
yaad add "submit PR" --remind "tomorrow 9am"
yaad add "https://api.docs.com" --tag reference
yaad add "ssh -i ~/.ssh/id_rsa user@prod" --for "prod login"
yaad ask

Query in plain English. HyDE expansion → hybrid BM25/vector retrieval → optional reranking → LLM synthesises a direct answer.

yaad ask "where was I with the payments-api work?"
yaad ask "how do I get into prod?"
yaad ask "everything I saved about Alice"
yaad ask "do I have anything due today?"
yaad list

Browse recent memories. Filter by type, tag, or show only pending reminders.

yaad list
yaad list --type reminder
yaad list --tag staging
yaad list --remind          # only due reminders
yaad get <id>

Show full details — content, type, tags, working dir, hostname, created time. Accepts 10-char ULID prefix.

yaad get 01JTXK4A3B
yaad delete / clean

Remove one memory by ID, or wipe everything at once. Both prompt for confirmation; skip with -y.

yaad delete 01JTXK4A3B
yaad delete 01JTXK4A3B -y   # skip prompt
yaad clean                  # delete all
yaad config

Manage ~/.yaadrc. Override Ollama URL, models, notifier, and reminder poll interval.

yaad config init
yaad config set ollama.chat_model llama3.2:3b
yaad config set ollama.rerank_model dengcao/Qwen3-Reranker-0.6B
yaad config list
reminders

Reminders that find you,
not the other way around.

Two lines in your shell config. No app to check, no tab to keep open.

recommended

Inline — PROMPT_COMMAND

Reminders surface in your terminal on every prompt. No background process needed.

# ~/.bashrc
export PROMPT_COMMAND="yaad check; $PROMPT_COMMAND"

# ~/.zshrc
precmd() { yaad check }
systemd

Background daemon

Install as a systemd user service. Desktop notifications via notify-send.

yaad daemon install
systemctl --user enable --now yaad

# check status
systemctl --user status yaad

Learn more in the reminders documentation →

open source

Your past self is trying
to tell you something.

One command. All local. MIT licensed.

$ go install github.com/kunalsin9h/yaad/cmd/yaad@latest