Skip to content
CLI Engineering

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.

Vipul A M Vipul A M · · 3 min read
Tracking
Miru time tracking interface with timers and recent entries
This article is currently written in English. Navigation, dates, and calls to action follow your selected language.

Why We Built the Miru CLI (And Why Every SaaS Should Have One) is simple: if a model hurts customers, we do not copy it.

Most SaaS tools treat the terminal as an afterthought. We built a full CLI because developers deserve better than a browser tab. We write from operating experience, not trend-chasing.

The Terminal Is Where Work Happens

Miru dashboard — the web companion to the CLI

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.

Hard Stop

If you agree, build this way. If you disagree, test the opposite and measure the real cost.

Start with Miru or read the docs.

Share:
Vipul A M

Vipul A M

Co-founder at Saeloun. Building Miru. Rails contributor. Shipping from Pune, India.

Put it to work

Run one cleaner billing cycle in Miru.

If this article is about tracking time, billing clients, comparing tools, or automating work, Miru is the product version of that idea. Start free, invite the team, and send the next invoice from tracked work.

What you get

  • Time tracking, invoices, expenses, and payments in one place.
  • Free for up to 5 users. Pro is $1/member/month.
  • Open source, with CLI, API, MCP, and self-hosting paths.
See Miru

The article is the argument. Miru is the workflow.

Track the work, approve the hours, send the invoice, and get paid without bolting together three separate tools.

Tracking
Miru time tracking interface with timers and recent entries
Time Tracking Miru