@samuraizer/cli
v0.4.1
Published
Local-first CLI that turns meeting recordings into transcripts, summaries, action items, and decisions
Maintainers
Readme
@samuraizer/cli
Local-first CLI that turns meeting recordings into transcripts, summaries, action items, and decisions — entirely on your machine. No cloud, no subscriptions, no data leaving your network.

Reference implementation of the memnex specification. All outputs conform to memnex v0.2, including a full provenance chain.
💻 System Requirements
| RAM | Recommended model |
| ------ | ----------------------- |
| 8 GB | qwen2.5:3b |
| 16 GB | qwen2.5:7b |
| 32 GB+ | qwen2.5:14b (default) |
Apple Silicon (M1/M2/M3/M4) and recent x86 CPUs with AVX2 are recommended. Whisper transcription is CPU/Metal-accelerated; LLM inference uses Ollama's defaults.
⚙️ Prerequisites
Install the required tools:
- Node.js ≥ 20 — nodejs.org
- ffmpeg — for audio processing
- whisper-cli — from whisper.cpp
- Ollama — ollama.com
Start Ollama and pull a model:
ollama serve
ollama pull qwen2.5:14b📦 Installation
npm install -g @samuraizer/cliMigrating from the legacy
samuraizerpackage? Versions ≤ 0.2.0 of the unscopedsamuraizerpackage on npm are deprecated. Runnpm uninstall -g samuraizer && npm install -g @samuraizer/clito migrate. The CLI binary on your PATH is still calledsamuraizer.
🚀 Quick Start
samuraizer init
samuraizer process meeting.m4aOn a 30-minute recording this typically takes 3–5 minutes on Apple Silicon and 8–15 minutes on x86 CPUs, depending on the model.
🧪 Commands
Process an audio file
samuraizer process meeting.m4a # full pipeline
samuraizer process meeting.m4a --verbose # show detailed metadata
samuraizer process meeting.m4a --force # recompute all steps
samuraizer process meeting.m4a --verbose --forceRun individual steps
samuraizer normalize input.m4a output.wav # normalize audio for Whisper
samuraizer summarize transcript.txt # generate summary from transcript
samuraizer actions transcript.txt # extract action items
samuraizer decisions transcript.txt # extract decisionsConfiguration
samuraizer init # create default config file
samuraizer config path # show config file location
samuraizer config get # print resolved config as JSONOther
samuraizer --help
samuraizer --version⚙️ Configuration
Samuraizer uses a global JSON config file.
Config location
- macOS:
~/Library/Application Support/samuraizer/config.json - Linux:
~/.config/samuraizer/config.json - Windows:
%AppData%/samuraizer/config.json
Example config
{
"model": "qwen2.5:14b",
"ollamaBaseUrl": "http://127.0.0.1:11434",
"whisperCommand": "whisper-cli",
"ffmpegCommand": "ffmpeg",
"ffprobeCommand": "ffprobe"
}Config fields
- model — LLM model used for analysis (summary, action items, decisions)
- ollamaBaseUrl — URL where Ollama is running
- whisperCommand — Command used to run Whisper
- ffmpegCommand — Command used for audio processing
- ffprobeCommand — Command used for audio inspection
📂 Example output
After processing, you'll find structured files in output/<recording-name>/:
output/meeting/
transcript.txt
summary.txt
action-items.json
decisions.json
report.txt
meeting.jsonThe meeting.json file is a memnex v0.2-conforming document combining all outputs with a full provenance chain.
summary.txt
Team standup focused on Q2 roadmap and infrastructure migration.
The frontend team will start the Next.js upgrade next week...action-items.json
[
{
"owner": "Alice",
"task": "Set up staging environment for migration testing",
"deadline": "by end of week"
},
{
"owner": "Bob",
"task": "Review the auth refactor PR",
"deadline": null
}
]decisions.json
[
{
"decision": "Adopt Next.js 15 for the new dashboard",
"rationale": "Better SSR and built-in App Router support"
}
]🔁 Resume behavior
Samuraizer skips steps whose output files already exist. If processing crashes or you stop it mid-pipeline, just re-run the same command — completed steps are reused.
Use --force to recompute everything from scratch.
⚠️ Troubleshooting
Ollama not running
ollama serveOllama on a non-default port
Update ollamaBaseUrl in your config:
{
"ollamaBaseUrl": "http://127.0.0.1:11500"
}Out of memory during analysis
Switch to a smaller model:
ollama pull qwen2.5:7bThen update model in your config to qwen2.5:7b (or qwen2.5:3b on machines with 8 GB RAM).
Model not found
Make sure the model in your config is actually pulled:
ollama list
ollama pull <model-name>whisper-cli not in PATH
Build whisper.cpp and ensure the binary is on your PATH, or set the absolute path in whisperCommand in your config.
ffmpeg not found
macOS:
brew install ffmpegLinux:
# Debian / Ubuntu
sudo apt install ffmpeg
# Arch / CachyOS
sudo pacman -S ffmpeg
# Fedora
sudo dnf install ffmpegWindows:
winget install Gyan.FFmpeg🤖 AI agent access (MCP)
Samuraizer also ships with a companion MCP server, @samuraizer/mcp-server, that lets AI agents (Claude Desktop, Claude Code, MCP Inspector) query your processed meetings and run the pipeline on demand.
📝 Changelog
See CHANGELOG.md for release history.
📄 License
MIT — see LICENSE.
🔗 Source code
Part of the Samuraizer monorepo: github.com/UladzKha/samuraizer-cli.
