100% local
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.
┌──────────────────────┐ │ yaad · reminder │ │ │ │ do some situps │ │ due: in a moment │ └──────────────────────┘
Local embeddings, BM25, RRF fusion, cross-encoder reranking — all behind yaad ask.
All AI runs via Ollama on your machine. No cloud, no accounts, no data leaving your laptop.
Parse "in 30 minutes", "tomorrow 9am", or "Friday 3pm" into real deadlines. Fires inline in your terminal or as a desktop notification.
Ask in plain English. Local embeddings + LLM reasoning find what you saved, even weeks later.
BM25 keyword search + semantic vector search merged via Reciprocal Rank Fusion. Catches exact names and fuzzy semantics in one pass.
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.
AI extracts people, projects, tools, and concepts from every memory. Recall everything related to a person or project — independent of exact wording.
Memories save even when Ollama is down. AI enrichment degrades gracefully, never blocking saves.
Requires Ollama running locally. Everything else is a single binary.
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
go install github.com/kunalsin9h/yaad/cmd/yaad@latest
Creates ~/.yaadrc with sensible defaults. Skip this and yaad will use built-in defaults.
yaad config init
yaad add "staging db is postgres on port 5433"
Also set up reminders — it's yaad's most powerful feature and takes 30 seconds.
Types auto-detected by AI: command · note · url · fact · reminder
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"
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?"
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
Show full details — content, type, tags, working dir, hostname, created time. Accepts 10-char ULID prefix.
yaad get 01JTXK4A3B
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
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
Two lines in your shell config. No app to check, no tab to keep open.
Learn more in the reminders documentation →
One command. All local. MIT licensed.