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)
- 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.
- 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.
- 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).
- 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.
- Asks your name — the one required question. Used so meeting notes can
automatically recognize and skip you when matching who attended.
- 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.
- 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.
- 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 →
- 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.
- 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.
- 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 →