How it works

What the install
actually does — nothing hidden.

One line, run once. Here's exactly what happens behind it, and what your vault looks like before you've used it versus after a normal week.

The install, step by step

$ curl -fsSL https://mini.mydori.app/install.sh | sh

 Node.js 24 found (installs it automatically if missing)
 npm dependencies installed (local search model, one-time)
 yt-dlp found (installs it automatically if missing)
 markitdown found (installs it automatically if missing)
? Path to your vault: [Enter = creates one for you]
 vault skeleton created
? Your name: (required — for meeting-attendee matching)
? Fathom API key (optional): [Enter to skip]
? Tavily API key (optional): [Enter to skip]
 wired into Claude Code
? Set up the WhatsApp channel? [y/N] (macOS only, optional)
? Set up a watched inbox folder? [y/N] (macOS only, optional)
? Set up morning/evening digests? [y/N] (macOS only, optional)
? Check for updates once a day automatically? [y/N] (macOS only, optional)
  1. Installs Node.js 24+ if you don't have it — via nvm, brew, apt, or pacman, whichever's available. The one real requirement; everything else is a plain script, nothing to compile.
  2. Installs its dependencies — standard open-source npm libraries, same as any Node project. The only one worth knowing about by size: a local search model (a few hundred MB, downloaded once, runs entirely on your machine — this is what makes "find that thing I was thinking about" work later, even when your wording doesn't match exactly). Search itself uses SQLite, which ships built into Node — nothing extra to install for that part.
  3. Installs yt-dlp and markitdown if missing — for pulling YouTube transcripts and converting documents, via brew, pacman, or pip3, whichever's available (markitdown isn't in Arch's official repos, so that one always falls back to pip3 there).
  4. Asks where your vault lives — press Enter and it creates an empty one for you. This folder is the only thing that matters; everything else is disposable and rebuilds from it.
  5. Asks your name — the one required question. Used so meeting notes can automatically recognize and skip you when matching who attended.
  6. Asks for two optional API keys (Fathom, Tavily) — skip both if you don't have them. Fathom pulls meeting recordings straight from your account instead of you pasting a transcript; Tavily looks up context on a new meeting attendee or contact.
  7. Wires itself into your agent — Claude Code, Codex CLI, Antigravity, or Grok Build, whichever you already have. This is the only reason it needs to touch anything outside its own folder, and it's also the entire "interface" — there is no separate app or website to learn.
  8. Offers to pair the WhatsApp channel (macOS only) — say no and skip it entirely, or say yes and scan a QR code right there in the terminal. Runs on Baileys, an unofficial but widely used library for connecting your own WhatsApp account as a channel — not something built or run by WhatsApp itself. What it needs, and why it's safe →
  9. Offers to watch a folder (macOS only) — point it at Downloads or wherever files already land, and it notices new ones once they stop changing, no pasting or attaching required. Say no and set it up later any time.
  10. Offers to schedule morning/evening digests (macOS only) — a local summary page plus a desktop notification, at times you pick. Say no and run it by hand later any time instead.
  11. Offers to check for updates once a day (macOS only) — a desktop notification only fires when it actually pulled new commits, or when it's blocked and needs you; the common no-op day stays silent. Say no and run ./update.sh by hand whenever you like instead.

Your vault, before and after

Your vault is your local home — five empty folders at first, filling in only as you actually use it.

By default it's created at ~/dori-vault (the ~ just means "your home folder") — open it in Finder or Explorer any time and look around. It's not a database you need this tool to read.

Right after install
dori-vault/ ├── inbox/ ├── entities/ │ ├── people/ │ └── projects/ ├── projects/ ├── yt/ └── references/ └── clippings/
A week of normal use
dori-vault/ ├── inbox/ ├── entities/ │ ├── people/ │ │ └── priya-menon.md │ └── projects/ ├── projects/ │ └── acme-nonprofit/ │ └── meetings/ ├── yt/ │ └── 2026-08-24-the-core-argument.md ├── finances/ │ └── trips/denver-conference.md └── references/ └── clippings/

Every folder on the right came from something you just said in chat — nothing was scaffolded in advance. A new project folder, a new person file, a new trip ledger: each one is created the first time it's actually needed, and only after you'd recognize what it's for. The one exception is inbox/ — it's there from the start, and it's where anything ambiguous lands instead of being filed wrong. Ask "anything in my inbox?" any time to triage it.

What's a Markdown file? A .md file is plain text with a few light symbols for structure (# for a heading, - for a bullet) — it opens in any text editor, and pastes cleanly into Word or Google Docs with formatting intact. It's used here because it's the cheapest format for an AI agent to read: no parsing overhead, no proprietary structure, just words — which is also why it's what most AI assistants already read and write natively. More on Wikipedia →
No lock-in: delete this tool entirely and your vault — every transcript, every minutes doc, every ledger row — is still just a folder of Markdown files on your own disk. Nothing here locks content into a format only it can read. The two open-source tools it leans on for conversion are worth knowing by name, too: markitdown (documents → Markdown) and yt-dlp (YouTube transcripts) — both widely used, both auditable, neither controlled by this project.
Getting updates: the install line above only handles a fresh install — for new scripts and fixes on a machine you've already set up, run ./update.sh from inside wherever it's installed (~/dori by default). It refuses to run over uncommitted local changes rather than overwriting them, and only reinstalls dependencies if one actually changed. Say yes to the optional prompt during install (macOS only) and it checks once a day on its own — a notification only fires when something actually changed, or if it's blocked and needs you, never on the common no-op day.
Ready to actually try it? Quick start has copy-paste lines to say to your agent.
Quick start →