Why We Built the Miru CLI (And Why Every SaaS Should Have One)
Most SaaS tools treat the terminal as an afterthought. We built a full CLI because developers deserve better than a browser tab.
I’ll tell you exactly when we decided to build the Miru CLI. It was a Tuesday, 6:30 PM, and I was trying to log four hours of client work before I forgot the details. I had nine terminal tabs open, a browser with 40 tabs, and Miru’s web app was somewhere in there behind Slack, Figma, and three GitHub PRs I was reviewing. I alt-tabbed six times before I found it. By the time I did, I’d already forgotten whether the Acme bug fix took 90 minutes or two hours.
That was the moment. Not a product strategy session. Not a competitive analysis. Just a developer who was sick of leaving his terminal to click buttons in a browser.
The Terminal Is Where Work Happens
If you write code for a living, the terminal is home. Git, Docker, SSH, your editor, your test runner, your deployment scripts — they all live there. The browser is where you go to look at things. The terminal is where you go to do things.
Every time a SaaS tool forces you into a browser tab, it’s asking you to context-switch. And context-switching isn’t free. Cal Newport wrote about this. The research backs it up. Every switch costs you 10-25 minutes of refocused attention. A time tracker that breaks your flow to track your time is a tool working against itself.
So we built miru as a first-class CLI. Not a wrapper around a web API with ugly output. Not a “beta” feature buried in the docs. A real tool with real UX that feels like it belongs next to git and docker in your shell.
curl -fsSL https://miru.so/install.sh | sh
miru login
Two commands. You’re in.
What Changed When We Dogfooded It
Here’s what surprised us: the CLI didn’t just make time logging faster. It changed when and how we logged.
Before the CLI, our team logged time in batches. Friday afternoon. Monday morning. Whenever someone remembered. The entries were vague and often wrong. “Worked on Acme project - 4h.” That tells you nothing when a client disputes a line item three months later.
With the CLI, people started logging right after finishing a task. Still in the terminal. Still in context. The entries got specific: “Fixed N+1 query in invoice PDF generation - 1.5h.” They got accurate because the work was fresh. And they got consistent because the friction dropped to near zero.
Our time capture accuracy went from roughly 70% to over 95%. For a consulting company that bills by the hour, that’s not a quality-of-life improvement. That’s a revenue recovery.
CLI-First Is a Design Philosophy
Building a CLI first forces discipline that web-first development doesn’t. Every command needs to be composable. Output needs to be parseable. Errors need to be clear without a red box and an exclamation icon to help. You can’t hide behind a pretty UI.
This discipline made our API better, too. The CLI is just a consumer of the same API that powers the web app. If the CLI can do it, the API can do it. If the API can do it, anything can do it.
And “anything” increasingly means AI agents. Claude Code, Codex, custom scripts — they all speak the terminal. When we built the CLI, we accidentally built the interface that AI coding assistants use to interact with Miru. A developer can tell Claude Code to log their time, generate an invoice, or pull a report, and the AI agent calls miru commands under the hood. No browser automation. No screen scraping. Just clean CLI calls.
That wasn’t in the original plan. But it’s the most forward-looking thing we’ve shipped.
Every SaaS Should Have One
If your users are developers, you need a CLI. Full stop. Not eventually. Not in v3. Now.
A CLI is an accessibility feature for people whose primary interface is a terminal. It’s an automation enabler for teams that script everything. It’s an AI-readiness layer for a world where agents are doing more of the work. And it’s a trust signal that says “we understand how you actually work.”
Most SaaS companies won’t build one because it’s not sexy. It doesn’t demo well in a sales call. You can’t put a screenshot of a terminal in a Facebook ad. But the developers who find it will never leave, because you respected how they work.
curl -fsSL https://miru.so/install.sh | sh
Want to see the CLI in action? Read 5 CLI Workflows That Save Our Team Hours.
Try it. Log one time entry from your terminal. Then try going back to the browser. You won’t.
Vipul A M
Co-founder at Saeloun. Building Miru. Rails contributor. Shipping from Pune, India.
Read next
How We Track Time with AI Agents and the Miru CLI
A practical guide to automated time tracking for teams using Claude Code, Codex, and other AI coding tools. Real workflows, real scripts, zero browser tabs.
Dark Mode Done Right: Why Most Apps Get It Wrong
CSS invert() is not dark mode. Here's what it actually takes to build a dark theme that doesn't hurt your eyes.
Why We Chose Rails 8 and React 18 for Miru 3.0
In a world obsessed with Next.js and serverless, we bet on Rails 8 and React 18. Here's why boring tech wins.