Frontend is dead. Long live CLI.
The best interface to offer your users might just surprise you.
Simpler is Better
Ok, the title may be a bit reductive, but seriously, simpler is (usually) better. Let’s talk about the underdog of interfaces: the Command Line Interface (CLI).
Let me guess, you’ve got a small team (or are part of one), with a short deadline and a brilliant product idea. What do you do?
Spin up a backend and design a REST API. Oh users need something to see and control so throw in a shiny React frontend. REST API getting complicated? Split it into backend API and Backend For Frontend (BFF) API. Great, two months go by and the product is still not ready. In fact, I’d probably spend 3 weeks just debugging CORS issues and arguing over UI layout in Figma.
Or…do you start with a CLI that solves the problem in a few days?
I know this is brazen, and one size never fits all. I’ll get to that, too. The point is that we’re so sold on the idea that “real software products” need a polished web UI and/or desktop applications that we forget the humble CLI.
In fact, CLI is making a comeback (or maybe it was never quite lost, just forgotten). **Especially** with the rise of AI agents and standards like Model Context Protocol (MCP).
Interface Trade-off: Frontend vs CLI
I love pro/con lists, so let’s do that.
Frontend (UI)
✅ Looks great (hopefully)
✅ Great for all users, even non-technical
✅ Web applications keep users on latest version easily
❌ Good UI/UX is hard and time-consuming. Most of us suck at it.
❌ Highest development and QA time of all. Slowest velocity.
❌ Yet another layer that can break/have bugs
❌ Compatibility can be a nightmare
❌ Hard for AI to integrate well with
For most teams, even highly skilled ones, UIs where ideas go to die a slow, expensive death.
CLI
✅ Straightforward architecture. Some don’t even need an API to talk to.
✅ Easy to test
✅ Scriptable, automatable, easy to integrate with AI
✅ Highest velocity to develop and maintain
❌ User must know their way around a terminal
❌ Limited visual capabilities. TUI libraries exist but are niche. Note: some of us consider this a ✅ too.
To be clear, data and security are the common thread between these. You’re (almost) always going to start with an API to secure client/server access to some data, unless your CLI is static or client-side-only. In more mature organizations, the API is usually first, and CLI and/or SDKs use code-generation to automate development or make it consistent with the API.
Why Velocity Matters?
Shipping fast matters. Not just in startups, and not just at the onset of a new project.
Every extra interface layer is a recurring tax on your design, development, QA, and release times.
I’ve seen really innovative product ideas fail because they took too long to build, or because the second a significant feature was needed, it took too long to work cross-functionally to make it a reality.
Starting with a CLI when practical can reduce your time-to-value from months to mere days, or hell, even hours. You can always add a UI later if the demand justifies it.
Agentic AI: zero-code integration with CLIs
Let’s talk about how AI is reshaping interfaces.
The world is drooling over Function Calling, Model Context Protocol (MCP), A2A, and probably more protocols by next week. They all rely on invoking structured, deterministic behavior.
That’s CLI 101.
AI agents need predictable inputs, consistent outputs, and knowledge of available tasks. This is trivial with CLIs, especially with many CLI frameworks, like clap and cobra, offering built-in shell auto-completion and robust help outputs.
Check out this ~1 minute demo by Block, giving their AI Agent (Goose) the power to integrate with Databricks simply by giving it the Databricks CLI 🤯
That’s crazy; they didn’t write a custom MCP server or have to use some janky “accessibility” AI to control the browser, keyboard, and mouse. They just used the existing CLI. Simple.
Final Thoughts: Less Chrome, More Commands
If you’re launching something soon, ask yourself:
Could this be a CLI first?
Will AI tools need to interact with this later?
Or maybe you already have an API you’re proud of, you might consider adding a CLI to make it easier to script or integrate with AI tools.
Not sure where to start? If you have a client/server pattern, start with the API, full stop.
When you’re ready to code a CLI, I highly recommend Go. Rust is also really popular for building CLIs, but I’m currently re-learning Rust for the 4th time, so the learning curve is steep.