The terminal is back
Something interesting is happening. Apps that were built for graphical interfaces (note-taking tools, design apps, knowledge bases) are shipping command-line interfaces.
Obsidian just did it. Their 1.12.0 release introduced a full CLI that mirrors their GUI. Anything you can do by clicking, you can now do by typing. The Hacker News thread lit up. People want this.
It's not nostalgia. The way we interact with software is changing, and the command line fits what's coming next better than most people expect.
Why a voice app needs a command line
On the surface, a CLI for a voice app sounds contradictory. Talkie's whole point is that you speak instead of type. Why would you want to type commands to access voice data?
Because the CLI isn't for capturing. It's for everything that happens after capture.
When you speak a memo into Talkie, that memo becomes data: a transcript, a summary, extracted tasks, workflow outputs. That data is yours, sitting in a local SQLite database on your Mac. The CLI is how you get at it programmatically.
# What did I capture this week?
talkie memos --since 7d --pretty
# Search across everything
talkie search "product roadmap"
# Check workflow results
talkie workflows --since 24h
These aren't things you'd do with your voice. They're things you do at your desk, in your terminal, often as part of a larger workflow.
Your data, your way out
There's a principle baked into Talkie's architecture: your data should be accessible without our UI. The app could disappear tomorrow, and your memos, transcripts, and workflow outputs would still be there in a standard SQLite file, queryable with any tool.
The CLI makes this concrete. It reads your database directly, in read-only mode, with zero network calls. No API keys, no authentication, no server. Just your files on your disk.
# Point it at any Talkie database
talkie --db ~/path/to/talkie.sqlite memos
# Or let it find the default location
talkie stats --pretty
Not a promise in a privacy policy. A binary on your machine that reads your local files.
The agent layer
CLIs aren't just for humans typing commands anymore. They're for machines.
AI agents work best when they can call structured commands and get predictable output. A GUI is opaque to an agent. A CLI is transparent. Every command has documented inputs and structured outputs.
Talkie's CLI defaults to JSON:
talkie memos --since 7d
# Returns structured JSON, parseable by any script or agent
An AI agent can query your voice memos, search your transcripts, check workflow status, and feed the results into whatever it's doing. Your voice captures become data that any tool on your machine can access.
The Hacker News discussion around Obsidian's CLI echoed this. Commenters immediately saw the potential for connecting agents to their knowledge base. Same logic applies here. Spoken thoughts shouldn't be locked in a GUI.
What the CLI covers
The Talkie CLI is built with Bun and ships as a single binary.
Data commands:
talkie memos— list and retrieve voice memos with transcripts, summaries, and taskstalkie dictations— list recent dictations with metadata about which app received themtalkie search— full-text search across all recordings (uses FTS5 when available)talkie workflows— inspect workflow runs, step-by-step outputs, and errorstalkie stats— usage statistics, streaks, word counts, top apps
Dev commands:
talkie dev status— health check across all Talkie servicestalkie dev start/stop/restart— control TalkieServer and related processestalkie dev logs— tail logs from any servicetalkie dev db— inspect the database schema and run queriestalkie dev build— build the Swift app from sourcetalkie dev clean— reset build artifacts
Every command supports --json (default) for machines and --pretty for humans. Date filters accept relative values like 7d, 24h, or 30m.
The pattern
I think more apps should do this. If your app stores user data locally, give users a CLI. Most people won't use it. But it says something about how you think about their data.
A CLI says: this is yours. Script it, pipe it, feed it to an agent, back it up. We built the GUI for the common case. The CLI is for everything else.
Obsidian gets this. Their vault is just a folder of Markdown files. The CLI extends that to the app's more complex features. We're doing the same with voice data.
The terminal isn't going away. If anything, agents and automation are making it more relevant than it's been in years.