> INIT: Why I Built This
I’ve been searching for the "perfect" todo system for what feels like forever. You know the drill—I've tried everything.
- Over-engineered apps: Too many buttons, subscription fees, and cloud lock-in.
- Simple text files: Great for portability, but a pain to manage manually on a phone.
I wanted something different. I wanted a system that I could control with my voice while walking down the street, processed by an LLM, but stored in a way that I—not some corporation—own completely.
I'm pretty happy with what I've hacked together. It combines the raw simplicity of Markdown with the intelligence of AI agents. It feels like talking to a dedicated secretary who lives in my terminal.
If you like control, simplicity, and a bit of cyberpunk flair, you should give this a try.
> THE_STACK: How It Works
This isn't a SaaS. It's a workflow. Here is the exact setup I'm running to keep this cheap, private, and cool.
The Brain (AI)
I'm currently using GLM-4.7. It's incredibly capable for this kind of file manipulation and text parsing, and it allows me to run this whole setup on the cheap.
Note: In theory, you could easily swap this out for a locally hosted model (like Llama 3 or Mistral) if you have the hardware, making the system 100% offline and private.
The Rig (Infrastructure)
I'm a Linux user, so I've built a tunnel from my phone to my home rig:
- Server: My desktop running NixOS.
- Connection: Wireguard VPN tunneling me into my home network.
- Mobile Interface: Termux on Android to access the environment.
- Editor: Opencode (or any CLI editor like Neovim) bridged with the AI.
- Input: I use the standard Android voice keyboard to dictate commands.
The Workflow
I open Termux, dictate: "Add a task to check the server logs by Friday," and the AI edits the markdown file, commits the change to Git, and syncs it.
Current friction point: I'm actively looking for a Whisper-based voice-to-text implementation to replace the Android keyboard for a smoother, more private experience. If you have suggestions, let me know.
> PROTOCOL: The File Structure
I wanted the file structure to look good in plain text. I don't write this manually; I just tell the AI what I want, and it formats it like this:
The todos.md Blueprint
*Last_Sync: 2026-02-05* --- ## >> CATEGORY: WORK ### [Project: Backend] - 🟡 [ ] Refactor API endpoints [med] [assignee: me] [added: 2026-02-05] - 🔴 [ ] Fix critical auth bug [high] [due: 2026-02-07] [assignee: me] --- ## >> CATEGORY: PERSONAL ### [Project: Home_Lab] - 🟢 [ ] Config Wireguard peers [low] [assignee: me] [added: 2026-02-01] - ⚪ [ ] Buy more ethernet cables [none] [due: Saturday] --- ## >> ARCHIVE (COMPLETED) - ✅ Setup NixOS config [done: 2026-01-28]
> INPUT: Natural Language Commands
The beauty of this is that I don't have to worry about the brackets or the dates. I just speak naturally.
Adding Tasks:
"Add a high priority work task to fix the login bug by Friday."
The AI translates this to:
- 🔴 [ ] Fix login bug [high] [due: Friday] [category: Work]
Querying the List:
"What do I have due this week?" "Show me all tasks tagged with Home_Lab."
Managing State:
"Mark the auth bug as done." "Move the wiring task to next week."
> VERSION_CONTROL: Git Integration
Because this is just a text file, I have it wrapped in a Git repository. Every time the AI modifies the file, it auto-generates a commit message.
[main a1b2c3d] Add task: Fix login bug (high priority) 1 file changed, 1 insertion(+)
Why this rocks: 1. Time Travel: I can revert mistakes instantly. 2. Backup: It pushes to my private repo automatically. 3. No Internet? No Problem: I can edit locally and sync when I reconnect to the Wireguard tunnel.
> VISUAL_GUIDE: The Syntax
I use a simple emoji-based priority system that pops even in a monochromatic terminal.
| Signal | Meaning | Use Case |
|---|---|---|
| 🔴 | CRITICAL | Drop everything and do this. |
| 🟡 | WARNING | Standard tasks, regular flow. |
| 🟢 | OPTIMAL | Nice to have, low stress. |
| ⚪ | NULL | No priority / Inbox. |
| ✅ | DONE | Dopamine hit. |
> EXECUTE: Getting Started
If you want to replicate my setup, you don't need my exact NixOS config. You just need:
- A Git repository.
- An AI Assistant capable of file I/O (Opencode, Cursor, or a Python script calling an API).
- A Markdown file.
Step 1: Initialize
git clone git@your-repo.com:todos.git ~/todos touch todos.md
Step 2: Prompt the AI
Tell your agent: "You are my Todo Manager. Manage 'todos.md' based on my natural language requests. Use the following format..."
Step 3: Speak
Start dictating.
> END_OF_LINE
This system isn't revolutionary technology—it's revolutionary simplicity.
It strips away the UI bloat and leaves you with just your data and an intelligent agent to manage it. It works over SSH, it works on my phone, and it looks great in monospace.