The problem with muscle memory
There's a specific kind of frustration that comes from knowing exactly what you want to do in the terminal but blanking on the exact flag or subcommand to do it. You know find can search by modification date. You've done it before. But the syntax? Gone. So you tab out, search, read a man page, come back, type it wrong anyway.
I hit this three or four times a day. File manipulation, git flags, Docker commands, ffmpeg — all of them have that one option I can never remember cold. I used to keep a notes file of commands I always forgot. That's embarrassing in retrospect.
lac shell mostly killed that habit for me.
What lac shell actually is
lac shell is an AI-powered interactive shell that ships as part of lac-cli. You run it once and you're inside a shell session that understands plain English. Instead of recalling exact syntax, you just describe what you want.
It's not a chatbot sitting next to your terminal. It is the terminal prompt. Type your intent, get the command, confirm, it runs. That's the whole loop.
To start it:
lac shell
First time? Run it with --setup to pick your AI provider (Claude, OpenAI, or a local Ollama model). After that, just lac shell drops you straight in.
Ghost text in practice
The part I actually use most isn't even the full natural language queries — it's the ghost text autocomplete. As you type, the shell suggests a completion in faded text. Hit Tab to accept it.
It's similar to what you get in modern code editors, but for shell commands. So if I start typing:
find . -name "*.log" -m
It'll ghost in the rest — -mtime -7 or whatever makes sense in context — before I've finished the thought. Most of the time that's all I need. I'm not even writing a full English sentence, I'm just letting it fill in the part I've forgotten.
For the cases where I genuinely don't know where to start, I'll write something like:
show me all processes using more than 200MB of memory, sorted by usage
And it translates that into the actual ps command with the right flags. The confirm prompt shows me what it's about to run before anything happens — which matters a lot when the command involves deleting files or changing permissions.
The confirm step is not optional and that's good
Every command goes through a confirmation before it executes. Some tools in this space just run the command immediately, which is a bad idea. One misread intent on a destructive operation and you've got a problem.
With lac shell you see the exact command, you read it, you press Enter (or decline it). That pause also teaches you — after a few weeks of confirming commands, I actually started remembering the flags I used to forget because I was reading them every time they came up.
Offline mode with Ollama
If you're on a plane or just don't want your shell queries going to an external API, lac shell --offline routes everything through a local Ollama model instead. The suggestions are a bit slower depending on your machine, but they work without a network connection and nothing leaves your computer.
This is one of those features that's easy to overlook because you don't need it until you really need it. I used it on a long flight and was genuinely glad it existed.
How it fits with the rest of lac-cli
lac shell and lac agent solve different problems. lac shell is for getting the right command fast — one-off tasks, quick lookups, stuff you do at the prompt. lac agent is for multi-step work that touches your codebase, reads files, tracks context across a session.
My usual flow: I'm in lac shell for most of my terminal time. When I need to do something bigger — refactor a module, write a script that touches a few files — I drop into lac agent. The two complement each other cleanly.
lac mind is separate again — that's for when I want multiple models to actually debate a decision, which I mostly use for architecture questions, not shell work.
Setup takes two minutes
If you haven't installed lac-cli yet:
pip install lac-cli
Or use the shell installer:
curl -fsSL https://lacai.io/install.sh | bash
Then run lac shell --setup, pick your provider, add your API key, and you're in. The config lives at ~/.lac/config.json so you can edit it by hand if you want to swap models later without running setup again.
One practical tip: if you're already using Claude or OpenAI through LacPointer, you likely have an API key sitting around. Drop that same key into lac shell --setup and you're not paying for anything extra — you're just using the same key in a different context.
Worth trying even if you're comfortable in the terminal
I want to push back on the idea that this is just for beginners who don't know their way around a shell. I've been in the terminal daily for years and I still find lac shell useful, specifically because the ghost text catches the flags I'd otherwise have to look up. Reducing that friction — even for one or two commands a day — adds up over a week.
The confirm-before-run model also means there's no real downside to trying it. If the suggestion is wrong, you just decline and type it yourself. You lose nothing.
Start with lac shell and just use it for a day instead of your regular shell. See how often you actually reach for a command lookup that it covers. My guess is it's more than you'd expect.