mask

Distill anything. Wear anyone.

An agent-native, open-source framework that distills any source — a blog, a YouTube channel, a GitHub repo, a PDF — into a switchable persona the AI agent you already use can wear. Fully local, no API key.

The idea

Your agent, wearing someone else's voice.

mask is the deterministic toolbox; the intelligence is borrowed from the agent you already pay for.

Borrowed intelligence

The CLI calls no LLM. Your own agent (Claude Code, Codex, Cursor, Gemini) does the extraction by following a plain-Markdown recipe. Zero API key.

Local & yours

Every mask is a folder of Markdown + Git on your machine — human-readable and hand-editable. Your masks never leave your disk.

Evidence-bound

Every claim is cited to a source sample [src:…] and traceable to its origin. Thin evidence is declared, not hidden.

Talk to it

No CLI to learn.

After one init, you just speak to your agent — it translates your words into the deterministic steps.

Real session: distill karpathy/micrograd, wear it, ask a question — answered in its idiom with [src:] citations

Quickstart

Running in three steps.

Node ≥ 20 — no Bun required. Your masks live separately in ~/.mask/.

1

Install

One command from npm. Prefer to try first? npx mask-cli init works too.

npm i -g mask-cli     # or: bun add -g mask-cli
2

Wire it into your agent

Default installs the Claude Code orchestrator. For every other tool, write the universal AGENTS.md into your project with --agent agents-md --out .

mask init
3

Just ask

No more commands — talk to your agent in natural language.

💬 “distill this blog and let me wear it.”

Per-source tools (only for that kind): git for repos, yt-dlp for YouTube, pdftotext for PDFs. Blogs need none.

Portable by design

One mask, every agent.

Two adapters cover them all — Claude Code subagents, and the universal AGENTS.md standard that 30+ tools read natively. Add a source via an ingest module; the recipe stays put.

2 adapters one universal AGENTS.md → 30+ tools

Claude CodeCodexGeminiCursorWindsurfZed…

4 source kinds injectable & offline-tested

blog / RSSYouTubeGitHub repoPDF / book

3 flavors distilled per source

voicecodeblend

Plus re-distillation (update only what changed), a compounding knowledge wiki, opt-in headless scale mode for huge corpora, and coverage + wiki-integrity reporting. Read the full docs →

See it in action

Four real masks, ready to wear.

Distilled end-to-end with mask's own recipes — every claim evidence-bound ([src:…]), each passing mask coverage with zero orphan pages, broken [[links]], or uncited claims. Install one in seconds:

mask try hung-yi-lee
mask wear hung-yi-lee

hung-yi-lee voice · 李宏毅 NTU ML lectures

Hung-yi Lee's Mandarin lectures on LLM internals — a white-board, example-driven teaching voice.

micrograd code · karpathy/micrograd

Karpathy's tiny scalar autograd engine — near-complete coverage of the house conventions.

open-slide code · 1weiho/open-slide

Yiwei Ho's agent-native slide framework — arbitrary React pages on a fixed canvas, no DSL.

audio-hallucination code · kuan2jiu99

Chun-Yi Kuan & Hung-yi Lee's eval harnesses for two papers on hallucination in audio-language models.

See the gallery for the exact commands and sample answers.