Capture thoughts in seconds. Organize knowledge for years.
A portable, zero-friction note-taking app with voice capture, automatic Git sync, and Obsidian integration.
Features • Quick Start • Usage • Architecture • Roadmap • Contributing • License
Most note apps make you open an app, navigate menus, create a file, then type. By the time you're ready, the idea is gone.
SnapCodex eliminates that friction:
- < 1 second to open from hotkey — assign to any keyboard shortcut or launcher, the capture window appears instantly
- < 1 second to close — press
ESC(text) orSpace(voice) and the window vanishes. Saving, transcription, and Git sync happen invisibly in background (~3s for text, ~10s for voice) - 0 accounts required — portable
.exe, no sign-up, no cloud lock-in. Works 100% offline as a local notepad. Add a free Gemini API key to unlock voice transcription
Your notes are plain Markdown files in a Git repo. Open them in Obsidian, VS Code, or any text editor. Your data is always yours.
"Strategic generosity builds empires. Stinginess builds walls." "A generosidade estratégica constrói impérios. A mesquinharia constrói muros."
Press a hotkey → a minimal dark window appears instantly → type your thought → press ESC → window closes immediately.
In the background: saved as .md with automatic timestamped filename, committed to Git, and pushed — you never see any of this.
Press a hotkey → window appears with mic ready → press Space to start recording → speak → press Space again → window closes instantly.
In the background: audio is sent to Gemini API, transcribed, polished into structured Markdown, saved as two notes (raw + organized), committed and pushed. Hands-free capture for when you're away from the keyboard.
Note: Voice capture requires a free Gemini API key. Without it, SnapCodex works as a full-featured local notepad with Git sync — no transcription.
A background daemon handles commit + push automatically. Every note is versioned from the moment it's created. Full history, diffs, and rollback — powered by Git.
- API keys encrypted with AES-256-GCM (stored locally, never transmitted)
- No telemetry, no analytics, no cloud accounts
- Portable
.exe(~7MB) — runs from a USB drive if you want
Notes are plain Markdown with YAML frontmatter. Point your Obsidian vault to the same folder and get:
- Graph View — visualize connections between ideas
- Backlinks — bidirectional
[[links]]between notes - Search — full-text + tag-based search across your knowledge base
- Templates — standardized note formats
SnapCodex captures. Obsidian organizes. Both read/write to the same folder.
- Windows 10/11
- Git installed and configured
- (Optional) Gemini API key for voice capture
- Download
snapcodex.exefrom Releases - Place it anywhere (Desktop, USB drive, wherever)
- Run it — no installation required
# Open the full editor
snapcodex.exe
# Quick capture (hotkey mode)
snapcodex.exe --quick
# Voice capture
snapcodex.exe --voiceOn first launch, a setup wizard appears to configure your notes repository, Git settings, and optionally your Gemini API key. No terminal commands needed — everything is done through the interface.
| Mode | Command | What it does |
|---|---|---|
| Full | snapcodex.exe |
Opens the complete editor with sidebar, note management, and settings |
| Quick | snapcodex.exe --quick |
Minimal dark popup → type → ESC → closes instantly, saves in background |
| Voice | snapcodex.exe --voice |
Space to record → Space to stop → closes instantly, transcribes in background |
| Shortcut | Context | Action |
|---|---|---|
ESC |
Quick mode | Save and close — note is saved, Git sync runs in background |
ESC |
Voice mode | Cancel recording and close |
Space |
Voice mode | Toggle recording (start/stop). Stopping closes the window and transcribes in background |
Ctrl+S |
Full mode | Save current note |
- Open SnapCodex in Full mode
- Go to Settings → API Key
- Paste your Gemini API key
- The key is encrypted locally with AES-256-GCM
- Create a private repo on GitHub (or any Git host)
- Configure the remote in SnapCodex Settings
- Sync runs automatically in the background (commit + push)
- Install Obsidian (free)
- Create a vault pointing to the same folder SnapCodex uses for notes
- That's it — every note captured by SnapCodex appears instantly in Obsidian
┌──────────────────────────────────────────────────┐
│ CAPTURE LAYER (zero friction) │
│ │
│ ⚡ --quick → text note in 3 seconds │
│ 🎤 --voice → record → transcribe → save │
│ 📝 Full editor for longer notes │
└──────────────────┬───────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────┐
│ STORAGE LAYER (plain files) │
│ │
│ 📁 Local folder with .md files │
│ 📄 YAML frontmatter (created, source, tags) │
│ 📂 _inbox/ for unprocessed captures │
└──────────────────┬───────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────┐
│ SYNC LAYER (automatic) │
│ │
│ 🔄 Git auto-commit + push (background daemon) │
│ 🐙 GitHub/GitLab/any remote for backup │
│ 📜 Full version history for every note │
└──────────────────────────────────────────────────┘
| Component | Technology |
|---|---|
| Language | Rust |
| GUI | egui (native, no Electron) |
| Transcription | Gemini API (user's own key) |
| Sync | Git (automatic commit + push) |
| Encryption | AES-256-GCM (API keys) |
| Binary | Single .exe, ~7MB, portable |
- Quick Capture (
--quick) —ESCto save & close - Voice Capture (
--voice) —Spaceto record/stop, auto-close - Automatic Git Sync (background daemon)
- API Key Encryption (AES-256-GCM)
- Portable single-binary distribution
- First-run setup wizard (no terminal needed)
- YAML frontmatter on generated notes
- Inbox folder (
_inbox/) for captured notes - Obsidian integration guide & templates
- System tray with quick-access menu
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes
- Open a Pull Request
See CONTRIBUTING.md for detailed guidelines.
This project is licensed under the MIT License — see LICENSE for details.
Built with 🦀 Rust and ❤️ by Marlon Motta
Just a human trying to help other humans learn better.
Apenas um humano tentando ajudar outros humanos a aprender melhor.
