The Tech Pulse

May 16, 20264 min read
Tags
  • obsidian
  • terminal
  • tui
  • React
  • Ink
  • markdown
  • developer-tools
  • markdown-reader
  • terminal-app
Share

A Terminal for Thoughts

Obsidian TUI Reader

I created this project to make it easier to access my Obsidian notes from the terminal.

That sounds trivial until you spend enough time programming.

Most of my day already lives in a terminal. Git is there. Editors are there. Logs are there. Servers are there. Once I’m focused, I don’t want to keep bouncing between windows just to open a note I already know exists somewhere in my vault.

The interruption is small, but small interruptions are expensive. Opening a full GUI app breaks concentration in a way that’s hard to notice until it happens fifty times a day. I wanted something lighter. Something that let me stay where I already was mentally.

So I built a read-only terminal app to browse and read my Obsidian vault.

The “read-only” part was intentional.

Many projects become bloated because the first version tries to solve every future problem immediately. Editing. Syncing. Plugins. Collaboration. Mobile support. Before long, the original reason for the project disappears under layers of architecture.

I didn’t want that.

I wanted to open notes quickly, search them quickly, and follow wiki links without leaving the terminal. That was the whole idea. Browse folders. Read markdown. Search content. Jump between linked notes.

That constraint made the project simpler in a useful way.

The stack probably says a lot about how I think, too. I built it with Node.js, TypeScript, React, Ink, and ESM. Some people from the traditional Unix world would probably look at React in a terminal application and think I’ve lost my mind.

They may not even be wrong.

But tools are easier to build when you already understand the materials well. I didn’t want to spend weeks learning a lower-level terminal framework before I could even experiment with the interface. React let me move quickly enough that the project stayed fun.

That matters more than people admit.

A lot of side projects die during the transition from idea to friction. You hit three unfamiliar systems at once, and the project starts feeling like homework. Familiar tools reduce the activation energy enough that you actually finish things.

Obsidian TUI Reader The search implementation is another example of this. Right now, it’s simple substring matching, not fuzzy search. I still want to improve it eventually, but a simple search works surprisingly well when you’re searching your own notes.

Usually, I remember enough.

Part of a filename. A tag. Some weird phrase I wrote six months ago at 1 am.

People sometimes overengineer search before understanding how they personally retrieve information. My own notes don’t need Google-scale indexing. They just need to stop disappearing into folders.

I also like that the project is local-first by default. Open a local vault. Index markdown recursively. Ignore .obsidian.gitnode_modules, and .trash. No accounts. No cloud layer. No attempt to reinterpret my notes into some social product.

I think a lot of software slowly starts demanding the user's attention instead of serving the user. Especially note-taking software. The software starts wanting structure, categorization, optimization, and synchronization. Eventually, you spend more time managing the system than thinking inside it.

I wanted this project to feel closer to a flashlight than a platform.

The roadmap already hints at the usual temptation, though. Backlinks. Fuzzy search. AI summaries. Editing mode. Git integration. Every useful tool starts generating adjacent ideas once you live inside it long enough.

Some of those ideas are probably worth building.

The hard part is protecting the project's original purpose while improving it. Most software doesn’t become bad because the developers are careless. It becomes bad because every new feature sounds reasonable in isolation.

Then one day, the thing takes ten seconds to start, and nobody remembers why it existed in the first place.

I’m trying to avoid that outcome.

Obsidian TUI Reader Repo: obsidian-tui-reader

At the moment, the project still feels close to the original problem. I need a note. I’m already in the terminal. I want the shortest possible path between those two states.

That’s really all this project is.

Get New Posts

Follow on your preferred channel for new articles, notes, and experiments.

Related Posts