Terminal first
Planted 02025-07-08
This is an active WIP.
A terminal-first approach makes it simple to 1) make custom workflows/GUIs, and 2) have AI agents interact with the data.
With local LLMs and command line utilities for AI agents, I am rethinking how I want to interface with data.
- Local data in spite of the cloud
- CLI-first interaction
- Flexible GUIs
Archive directory
Archive is everything. The data in archive powers applications, custom AI agents, and more.
- apps/
- archive/
-
.dotfiles/
-
config/
Config files for dotfiles -
cli/
command line utilities for archive
-
-
bookmarks/
Offline link archive -
contacts/
- people/
- calendar/
- mail/
- music/
-
ledger/
Double-entry accounting - notes/
- rss/
- scrapbooks/
- pictures/
- videos/
-
txt/
- now.md
- todo.md
- links.md
- wtl.md
- futurebound.md
- til.md
- writing/
-
Principles
- Pipeable. Being able to pipe output into another tool is important.
- Minimal. Only does what I actually do, not what I might do.
- Context: Searchable, filterable.
- Reproducible: Spinning up a new mac should be easy.
- Offline: usable offline.
Consequences
- Pipeable: CLI-first interfaces. GUI optional.
- Minimal: choose the lighter tool.
- Context: indexed with search engine features.
- Reproducible: keychain/1Password
- Offline: sync
Data tools
- Offline: rclone, git, syncthing
- Email: mbsync, notmuch
- RSS: (WIP) newsboat? rsstail? custom?
- Web browser: lynx, Browsh
- Music: cmus
- Accounting: ledger
Interaction tools
- Media player: MPV
- LLM: Ollama, opencode
- opencode CLI
- claude code CLI
Email workflow
I have a read heavy email workflow.
- isync (mbsync): sync mail locally
- notmuch: enhanced search capabilities
Workflow
- Pull latest emails
- Show latest unread
- Commands: mark read and show next unread, move to prev
notmuch search tag:unread
notmuch show <thread_id>
For sending
- msmtp: send outgoing emails via SMTP
- aerc: terminal email client interface