The problem with memorising commands
I've been writing terminal commands for years and I still blank on things like tar flags, find syntax with -exec, or the exact order of arguments for rsync with a remote host. Every time I forget one, I either Google it, man-page it, or — if I'm being honest — paste something in from Stack Overflow and hope it's not 2014 vintage.
That friction adds up. Not in a dramatic way. Just in a "I've been sitting here for four minutes trying to remember how to recursively find files modified in the last 24 hours" kind of way.
lac shell fixes that. Not by giving you a chatbot to talk to. By sitting inside your terminal and translating what you actually mean into what you need to type.
What lac shell actually is
It's an AI-powered interactive shell that replaces your normal terminal session for as long as you want it running. You install lac-cli and then launch it with:
lac shell
That's it. You're in. It looks like a regular prompt. But now you can type plain English and it understands you.
Say you want to find all .log files larger than 10MB that haven't been touched in 7 days. Instead of assembling the find command from memory, you just type:
find log files bigger than 10mb not modified in the last 7 days
Ghost text appears beside your cursor with the complete command. Something like:
find . -name "*.log" -size +10M -mtime +7
Hit Tab to accept it. The shell drops the translated command into your prompt, ready to run. You confirm, it runs. You never had to remember a flag.
The confirm step matters more than you'd think
One thing I appreciate about the design: you always see the command before it executes. There's no magic black box that just runs things on your behalf. Ghost text shows you what's about to happen. Tab accepts it into the prompt. You still press Enter yourself.
That might sound like an extra step, but it's the right call. If you're working in a production directory or running something destructive, you want that moment to read the command. A lot of AI terminal tools skip this and it makes me nervous. lac shell keeps you in control.
Tab autocomplete on top of AI translation
The ghost text autocomplete isn't just for English-to-command translation. It also works as you build out regular commands. Start typing git push origin and it'll suggest the branch you're probably pushing to based on context. Start a docker command and it surfaces relevant flags.
It's smart enough to distinguish between "I want to run a regular command and need a hint" versus "I typed something that isn't a shell command at all, translate this." You don't have to signal which mode you're in.
First time setup: --setup
When you run lac shell for the first time, it walks you through connecting a provider. That's your choice of Claude, OpenAI, Ollama, or any OpenAI-compatible endpoint. If you ever want to swap providers or reconfigure, just run:
lac shell --setup
It re-runs the wizard without wiping your history or anything else. Takes about 30 seconds.
If you want to work completely offline with a local model, there's also:
lac shell --offline
That routes everything through Ollama on your machine. No API key, no outbound requests, no cost per token. I covered the full offline setup in an earlier post if you want the details.
Where it fits alongside lac agent
A lot of recent posts here have been about lac agent — the agentic coding assistant that reads and writes files, tracks tasks, and has project memory. That's a different tool for a different job. lac agent is for multi-step coding work where you want the AI to do things across your codebase.
lac shell is for the moment you're already in the terminal doing something and you just want the right command without switching context. They're not competing. I use both in the same session regularly — lac shell for navigation and one-off commands, lac agent when I'm about to ask it to actually touch files.
Real examples I use it for constantly
Here are the kinds of things I actually type into lac shell instead of looking them up:
- "show all processes using port 3000" — gets me
lsof -i :3000every time - "compress this folder into a tar.gz excluding node_modules" — I will never remember that flag order on my own
- "list the 10 biggest directories in the current folder" —
du -sh */ | sort -rh | head -10 - "show git log for this file with diffs" —
git log -p -- filename - "kill the process on port 8080" — it knows to find the PID first and then kill it
- "recursively replace 'localhost' with '0.0.0.0' in all .env files" — this one would have cost me ten minutes of sed research
None of these are exotic. They're the kind of commands you need a few times a week and never quite commit to memory. lac shell just removes the lookup step entirely.
A few things worth knowing
Config lives at ~/.lac/config.json if you ever want to inspect or edit your provider settings directly. The shell respects your current working directory, so commands involving paths work relative to wherever you are, exactly as expected.
If you want to switch providers on the fly — say, test the same command with a local Ollama model versus Claude — you can run lac shell --setup, swap the provider, and you're on the new one immediately. The setup wizard is light enough that this takes under a minute.
Try it today
Install with:
pip install lac-cli
Or if you prefer the install script:
curl -fsSL https://lacai.io/install.sh | bash
Then just run lac shell, connect a provider, and try typing the next thing you'd normally Google. The first time it surfaces the exact command you needed in under a second, you'll stop going back to the old way.
More on everything lac-cli can do over at the lac-cli page.