Docs · 10 of 13
Command line
everpaper-cli is a companion tool that shares the app's database — list and export meetings, transcribe files on-device, manage speech models, inspect Memory, connect other AI apps (MCP), and run LLM tasks from the terminal.
Everpaper ships with a companion command-line tool, everpaper-cli, that talks
to the same database as the app. Anything you record, transcribe, or learn in
the app is visible from the terminal, and anything the CLI writes shows up in
the app. It is handy for scripting, exporting, and feeding your transcripts into
other tools.
Most commands accept --json for machine-readable output (for a transcript as
JSON, use meetings export <id> --format json --stdout). Progress and status
messages go to standard error, so the JSON on standard output stays pipeable.
everpaper-cli --help # list every command
everpaper-cli <command> --help # options for one command
everpaper-cli --version # the CLI's own version (3.0.0), not the app'sBy default the CLI uses the app's shared database. Pass --database <path> on
most commands to point at a different one.
Where the binary lives
everpaper-cli lives inside the app at
/Applications/Everpaper.app/Contents/MacOS/everpaper-cli (a hindsight-cli
alias sits next to it for old scripts). To run it as a bare command, link it
onto your PATH:
sudo mkdir -p /usr/local/bin
sudo ln -sf /Applications/Everpaper.app/Contents/MacOS/everpaper-cli /usr/local/bin/everpaper-cliThe link keeps working when you install a newer build over the old one.
Meetings
Work with your saved meeting recordings and their transcripts.
# List recent meetings (default 20)
everpaper-cli meetings list
everpaper-cli meetings list --limit 50 --json
# Show one meeting's metadata
everpaper-cli meetings show <id>
# Print the transcript
everpaper-cli meetings transcript <id>
# Export a transcript to a file
everpaper-cli meetings export <id> --format markdownYou can refer to a meeting by its full ID, a unique ID prefix (at least four hex characters), or its exact title (letter case doesn't matter).
Export supports several formats with --format: txt (default),
markdown, srt, vtt, and json. By default the file is written as
<title>.<ext> in the current directory; use --output <path> to choose the
name, or --stdout to print instead of writing a file.
Each meeting also keeps notes and saved results (the output of prompts you ran on it):
everpaper-cli meetings notes get <id>
everpaper-cli meetings notes set <id> "Recap to send out"
everpaper-cli meetings notes append <id> "Follow up Friday"
everpaper-cli meetings notes clear <id>
everpaper-cli meetings results list <id>
everpaper-cli meetings results add <id> "Action items" - # text from stdinFor notes set and results add, pass - instead of the text to read it from
standard input.
Have a transcript from somewhere else? Import a WebVTT file as a meeting with no audio:
everpaper-cli meetings import call.vttTranscribe
Transcribe any audio or video file with the on-device speech engines. The file is decoded to audio and recognized locally — nothing leaves your Mac.
everpaper-cli transcribe meeting.m4a
everpaper-cli transcribe lecture.mp4 --engine whisper --language en
everpaper-cli transcribe call.wav --diarize --format transcriptKey options:
--engine:app-default(default; the Transcription model chosen in Settings → Speech, which is Parakeet unless you changed it),parakeet,nemotron,whisper, ormoss(the Detailed model; about 2 GB to download the first time).--language: a language hint fornemotronorwhisper, e.g.en,it. Without it, Whisper uses the language set in the app.--format:text(default),transcript(timestamped lines), orjson.--processing:rawkeeps the engine's text;cleanrebuilds punctuation and applies your Word corrections (Settings → Speech → Your words & phrases), as the app does for meetings. The default,app-default, uses a preference older versions stored and otherwise behaves likeraw. Passcleanto match the app. With--diarize, the output is speaker-labeled text and this option is ignored.--diarize: separate speakers and label each turn (Speaker 1, Speaker 2, …). Withnemotronit uses Nemotron's speaker labels, and withmossthe model's own. The acoustic diarizer (used by the other engines, and as Nemotron's fallback) is tuned with--diar-max-distance(default0.775; higher merges more voices into fewer speakers),--diar-merge-similarity(default0.85),--diar-min-speaker-ms(default2000) and, optionally,--diar-max-speakers(no limit by default).--no-save: transcribe without adding the result to your library.
By default the result is saved to your library so it appears in the app.
Models
Manage the on-device speech models.
everpaper-cli models list # engines and whether each is cached
everpaper-cli models status # cache status (never downloads)
everpaper-cli models download whisper
everpaper-cli models warm-up
everpaper-cli models clear # delete cached modelsmodels download fetches nemotron, whisper or moss ahead of time;
Parakeet downloads itself on first use. models warm-up loads an engine so the
first transcription starts fast (--engine defaults to nemotron; it may
download first). models clear deletes the speech models Everpaper downloaded
for transcription, including the ones it uses for meetings (Parakeet, Nemotron
and the Detailed model). The app downloads them again when it next needs them,
so your next meeting may start with a download.
Memory (Second Brain)
Inspect what Everpaper has learned about you (the Memory page in the app) and verify it against the same guard the app uses, without opening the app.
everpaper-cli second-brain
everpaper-cli second-brain --include-inactive --jsonThe output lists each belief with its salience, confidence, and evidence count,
and reports how many would be kept versus dropped by the current guard. Add
--include-inactive to also show dormant or retired beliefs.
LLM
Run language-model tasks from the terminal. Unlike the app, the CLI is configured per call — you pass the provider and key on each invocation; nothing is stored.
# Check the connection
everpaper-cli llm test-connection --provider anthropic --api-key-env ANTHROPIC_API_KEY
# Summarize a file or stdin
everpaper-cli llm summarize notes.txt --provider anthropic --api-key-env ANTHROPIC_API_KEY
cat notes.txt | everpaper-cli llm summarize - --provider openai --api-key-env OPENAI_API_KEY
# Ask a question about a saved meeting transcript
everpaper-cli llm chat <meeting-id> "What did we decide about pricing?" --provider anthropic --api-key-env ANTHROPIC_API_KEY
# Apply a custom instruction to a file or stdin
everpaper-cli llm transform "Turn this into bullet points" notes.txt --provider anthropic --api-key-env ANTHROPIC_API_KEYSupported providers: anthropic, openai, openaiCompatible, gemini,
openrouter, ollama, lmstudio, omlx, and nativ (the separate Nativ
server app). Everpaper Native isn't one of them; to test it from the terminal, use native check.
How the key is resolved, in order: --api-key (a literal — discouraged), then
--api-key-env (the name of an environment variable holding the key), then the
conventional variable for the provider (for example ANTHROPIC_API_KEY,
OPENAI_API_KEY, GEMINI_API_KEY, OPENROUTER_API_KEY). ollama, lmstudio,
omlx and nativ need no key; if your LM Studio, oMLX or Nativ server uses a
token, set LM_API_TOKEN, OMLX_API_TOKEN or NATIV_API_TOKEN.
Other useful options:
--model: pick a model. Required foropenaiCompatible,lmstudio,omlxandnativ; other providers fall back to a conservative default.--base-url: an absolutehttp(s)URL for self-hosted endpoints.--allow-insecure-http: permits plainhttpto a remote cloud-style endpoint (your key travels unencrypted).--local: uses the smaller context budget meant for local models.
Everpaper Native
On macOS 27, you can check Everpaper Native without opening the app:
everpaper-cli native check
everpaper-cli native modelsnative check sends one prompt through Everpaper Native and prints the model,
the reply, token counts and latency. native models lists the installed models.
Connect another AI app (MCP)
Other AI apps can read from your journal through the Model Context Protocol (MCP). It's off until you turn it on:
- In Everpaper, turn on Settings → AI & summaries → Access from other AI apps → Allow external agents (MCP).
- In your AI app's MCP settings, add a server that runs the command
/Applications/Everpaper.app/Contents/MacOS/everpaper-cliwith the argumentmcp.
In apps configured with JSON, the entry usually looks like this:
{
"mcpServers": {
"everpaper": {
"command": "/Applications/Everpaper.app/Contents/MacOS/everpaper-cli",
"args": ["mcp"]
}
}
}Agents get people, files, links and connections from your journal, with secrets removed (names, email addresses and phone numbers are kept), and never screenshots. Full-text search of your screen text needs a second switch, …including raw screen text (full-text search), which appears once the first one is on.
What an agent reads is then handled by that app and the AI it uses, which may be a cloud service. Allow cloud AI to analyze your journal doesn't apply to it, so turn MCP on only for apps you trust.
If your agent reports Enable it in Everpaper → Settings → Journal, the switch is at Settings → AI & summaries → Access from other AI apps → Allow external agents (MCP).
Other commands
prompts run "Meeting Memo" <meeting> --provider …runs a template and saves the result to the meeting (prompts list|show|add|set|delete|restore-defaultsmanage them).calendar upcominglists the events your calendar rules match in the next 7 days.healthchecks paths, the database, models and calendar access.vocabmanages word corrections and saved phrases.historylists and searches saved transcriptions.configreads and writes settings.
Import
Bring data over from the old Hindsight app (the same import as Settings →
General → Setup & data → Import from Hindsight (legacy)). Quit Hindsight first. Your
originals are never changed, and nothing imports on its own. Use
--legacy-root <folder> if Hindsight's data isn't in its usual place.
everpaper-cli import --dry-run # report what would be imported, write nothing
everpaper-cli import # actually import--dry-run shows the per-table counts (imported, skipped, unsupported) without
writing anything. Add --json for a structured report.
JSON output
Pass --json to get stable, pretty-printed JSON with sorted keys and ISO-8601
dates. Status text is kept off standard output, so you can pipe results
straight into other tools:
everpaper-cli meetings list --json | jq '.[].title'On failure in --json mode, the tool prints an error envelope instead of the
normal payload:
{
"ok": false,
"error": "Provider anthropic needs an API key (--api-key-env or ANTHROPIC_API_KEY).",
"errorType": "validation"
}Parsing errors (exit 64) are not wrapped in the envelope.
The errorType field comes from a small, stable vocabulary, so scripts can
branch on the kind of failure: auth, config, connection, context,
import_schema, input_empty, input_missing, invalid_response, lookup,
model, provider, rate_limit, runtime, streaming, truncated, and
validation.
Exit codes
0: success.1: a runtime failure (network, provider, transcription), including a meeting ID or title that matches nothing.2: an invalid value (unknown engine, format or provider, a missing--model), a missing or empty input file, or an ID prefix or title that is ambiguous or too short.64: the command line itself couldn't be parsed (an unknown option or a missing argument). These errors are printed as plain text, even with--json.