# My Memory A low-friction capture app for thoughts, text, and voice. Lives in your system tray and lets you quickly jot down or dictate ideas, then organize them on a kanban board. ## Features - **Text capture** — Type a thought and save it with Ctrl+Enter - **Voice capture** — Record audio, auto-transcribed via Whisper - **Kanban board** — Drag entries through On Docket, In Progress, and Complete - **Collapsible Complete column** — Collapsed by default with count badge; expand to filter by 7 days, 30 days, or all time - **Cancel entries** — Archive notes you no longer need without deleting the file - **System tray** — Stays resident; click the icon to capture, right-click for menu - **Single instance** — Running `my-memory --capture` or `--board` signals the existing instance - **Plain files** — Entries are markdown with YAML frontmatter, stored in `~/.my-memory/entries/` ## Requirements - Python 3.13+ - [uv](https://docs.astral.sh/uv/) for dependency management - A working audio input device (for voice capture) - CUDA toolkit (optional, for GPU-accelerated transcription; falls back to CPU) ## Installation ```bash git clone https://git.manticorum.com/cal/my-memory.git cd my-memory uv sync ``` To pre-download the Whisper model: ```bash uv run my-memory --download-model ``` ## Usage ```bash uv run my-memory # Launch (lives in system tray) uv run my-memory --capture # Open capture window uv run my-memory --board # Open kanban board ``` ### Autostart Copy or symlink the desktop file to autostart at login: ```bash ln -s /path/to/my-memory/my-memory.desktop ~/.config/autostart/ ``` ## Configuration Create `~/.my-memory/config.toml` to override defaults: ```toml [whisper] model_size = "base" # tiny, base, small, medium, large-v3 device = "auto" # auto, cuda, cpu compute_type = "float16" [audio] sample_rate = 16000 channels = 1 ``` ## Data Format Entries are stored as `~/.my-memory/entries/YYYY-MM-DD/{uuid}.md`: ```yaml --- id: "550e8400-e29b-41d4-a716-446655440000" timestamp: "2026-02-11T14:30:00" source: "voice" tags: [] status: "docket" audio_file: "550e8400-...440000.wav" duration_seconds: 12.5 --- The captured thought content here. ``` Voice entries have a paired `.wav` file in the same directory. ## License Private project.