It didn't start as a terminal.
I wanted a live log viewer, something that could tail and filter structured JSON logs in real time without making me jump between windows. The kind of thing where you run kubectl logs mypod -f and actually see what's happening, filtered by level, searchable, right there.
I couldn't find exactly what I wanted, so I built it.
Then I thought, why not make it a proper terminal and just add the log viewer as a sidebar? That's the idea that turned into Obsidian.
What It Is
Obsidian is a GTK4 desktop terminal workspace written in Rust. It ships three things in one window:
- A full terminal - tabs, split panes, pane-local multiplexer sessions, tab rename/reorder, clipboard integration, command history, and desktop notifications
- logr - a live JSON log viewer sidebar with level filtering, full-text search, export, and graceful handling of malformed lines
- An embedded web pane - a browser alongside your terminal for quick lookups without switching apps
The Workflow That Drove It
The use case I kept coming back to was this:
kubectl logs mypod -f | obsidian
Pipe any log stream straight in. Filter by error level. Search for a specific field. Export what you need. All while your terminal is right next to it.
You can also launch with filters pre-applied:
obsidian --filter level=error --filter query=request sample-logs.jsonl
The Stack
- Rust - for the core application
- GTK4 + VTE4 - for the terminal and desktop window
- WebKitGTK 6.0 - for the embedded web pane
Where It Stands
This is v0.1.0-beta. It's early but the core workspace is solid. The aesthetic is intentionally opinionated, dark, black and red, no theme system. One clean look.
There's a lot I still want to add, but I wanted to ship something real first rather than keep building in private.
Try It
Repo: [github.com/WilliamSamson/obsidian]
You can install the .deb from the releases page or build from source with cargo build --release.
Feedback welcome - especially if you're someone who lives in logs.


Top comments (0)