Samuraizer
Turn meeting recordings into transcripts, summaries, action items, and decisions — entirely on your machine. No cloud, no subscriptions, no data leaving your network.

Why Samuraizer
- Fully local. Your recordings never leave your machine.
- CLI-first. Scriptable, automatable, integrates with cron, Git hooks, Obsidian workflows.
- Resumable. Crashed mid-pipeline? Re-run picks up where it left off.
- Model-agnostic. Works with any Ollama-compatible LLM — pick what fits your hardware.
- Free. No subscriptions, no per-minute pricing.
💻 System Requirements
| 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:
Start Ollama and pull a model:
ollama serve
ollama pull qwen2.5:14b
📦 Installation
npm install -g samuraizer
🚀 Quick Start
samuraizer init
samuraizer process meeting.m4a
On 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
samuraizer process meeting.m4a --verbose
samuraizer process meeting.m4a --force
samuraizer process meeting.m4a --verbose --force
Run individual steps
samuraizer normalize input.m4a output.wav
samuraizer summarize transcript.txt
samuraizer actions transcript.txt
samuraizer decisions transcript.txt
Configuration
samuraizer init
samuraizer config path
samuraizer config get
Other
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
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 serve
Ollama 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:7b
Then 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 ffmpeg
Linux:
sudo apt install ffmpeg
sudo pacman -S ffmpeg
sudo dnf install ffmpeg
Windows:
winget install Gyan.FFmpeg
📝 Changelog
See CHANGELOG.md for release history.
📄 License
MIT — see LICENSE.
🔗 Source code
Available on GitHub: github.com/UladzKha/samuraizer-cli