comparison
Lacy Shell vs Warp
A plugin for your terminal vs a replacement for your terminal.
The core difference
Warp is a full terminal replacement — a new app you switch to. Lacy is a shell plugin — it adds AI routing to whatever terminal you already use (iTerm2, Alacritty, Kitty, the default Terminal.app, or yes, even Warp).
| Lacy Shell | Warp | |
|---|---|---|
| Type | ZSH/Bash plugin | Terminal emulator |
| AI routing | Automatic — detects NL vs commands | Requires # prefix or Ctrl+Shift+Space |
| Your terminal | Keep yours | Must switch to Warp |
| AI backend | Your choice (Claude, Gemini, OpenCode, etc.) | Warp AI (proprietary) |
| Real-time indicator | Yes — color changes as you type | No |
| Price | Free, MIT licensed | Free tier + paid plans |
| Open source | Yes | Partially (warpd) |
| Platform | macOS, Linux, WSL | macOS, Linux |
| Install | One line, 30 seconds | Download app |
| Account required | No | Yes |
Plugin vs product: why the distinction matters
Warp is built on the premise that the terminal itself needs to be reimagined. It introduces blocks (each command and output grouped as a discrete unit), a modern input editor, team collaboration features, and its own AI layer. To get any of this, you switch terminal apps and create an account.
Lacy starts from a different premise: your terminal is fine. What’s missing is AI at the input level. So instead of replacing the terminal, Lacy hooks into your shell’s execute function and intercepts input before it runs — detecting whether you typed a shell command or natural language.
This means Lacy works in iTerm2, Alacritty, Kitty, Terminal.app, Ghostty, tmux, or any environment where ZSH or Bash runs. You keep your setup, your keybindings, your color scheme, and your muscle memory.
Side-by-side: AI access in practice
Here’s how the same interaction looks in each tool:
# Warp: ask AI a question $ # what's the difference between SIGTERM and SIGKILL ↑ type # or press Ctrl+Shift+Space first # Lacy: same question, no prefix or mode switch $ what's the difference between SIGTERM and SIGKILL ↑ detected as natural language, routed to your agent
# Warp: generate a command $ # find all processes using port 3000 # Lacy: type naturally at any terminal $ find all processes using port 3000
# Warp: mixed session — command then question $ docker ps ← runs normally $ # why is my container exiting immediately ← requires # prefix # Lacy: same session, no mode-switching needed $ docker ps ← runs normally $ why is my container exiting immediately ← auto-routed
The practical difference: with Warp you’re always making a conscious choice to invoke AI. With Lacy you type, and the routing is automatic.
Real-world scenarios
Remote SSH sessions. Warp’s blocks and AI features run locally in the Warp app — they don’t extend into SSH sessions on remote servers. Lacy operates at the shell level, so if you install it on a remote machine, you get the same automatic detection in that session too.
Existing terminal investment. You’ve spent years tuning iTerm2 with custom profiles, color schemes, tmux integrations, and keyboard shortcuts. Switching to Warp means rebuilding that from scratch. Lacy adds AI routing without touching any of your terminal configuration.
Team environments. Warp has team features — shared runbooks, collaboration notebooks, and team workflows. These are useful for certain orgs. Lacy is a personal shell plugin with none of that. If shared team tooling is the priority, Warp has a clear advantage there.
Choosing your AI. Warp uses its own proprietary AI model. Lacy routes to whatever CLI agent you configure — Claude Code (claude), Gemini CLI (gemini), OpenCode (opencode), or anything else. If you already have a preferred AI and don’t want to switch, Lacy lets you keep using it.
Switching from Warp
If you’ve been using Warp and want to try a different terminal with Lacy, the transition is straightforward. Install your preferred terminal (iTerm2 and Ghostty are popular choices on macOS), add Lacy to your shell config, and configure it to use your preferred AI CLI. Your shell history and ZSH configuration carry over unchanged — Lacy doesn’t touch those.
What you leave behind: Warp’s blocks interface and team features. What you gain: automatic AI routing to the agents you already have installed, without a proprietary intermediary or account requirement.
When to use Lacy
- You like your current terminal and don’t want to switch
- You want to use your own AI backend (Claude Code, Gemini CLI, etc.)
- You want automatic routing without prefixes or hotkeys
- You want a lightweight plugin, not a full app replacement
- You need Bash 4+ support (not just ZSH)
When to use Warp
- You want a modern terminal with built-in IDE-style features (blocks, notebooks)
- You prefer an integrated AI without configuring external CLI tools
- You want team collaboration features in your terminal
- You’re okay switching terminal apps and creating an account
Can you use both?
Yes. Lacy is a shell plugin — it works inside any terminal, including Warp. If you use Warp but prefer automatic NL detection over the # prefix, add Lacy to your ZSH config and get both Warp’s interface and Lacy’s transparent routing.
Further reading
- Why I didn’t use AI to classify AI input — how Lacy decides whether your input is a shell command or natural language, without ML.
- The post-execution reroute pattern — what happens when a natural-language query accidentally runs as a shell command and fails.
Frequently asked questions
Does Lacy work inside Warp?
Yes. Lacy hooks into ZSH/Bash, not the terminal emulator. If you run ZSH inside Warp, Lacy works there too. You can have Warp’s blocks and UI alongside Lacy’s automatic natural-language routing.
Does Lacy have Warp’s blocks feature?
No. Lacy is a pure input router — it detects whether your input is natural language or a shell command and routes accordingly. It doesn’t change how terminal output is displayed or add a blocks-style interface. If you want Warp’s visual command grouping, Warp is the right tool for that.
What terminal should I pair with Lacy?
Any terminal running ZSH or Bash works. iTerm2, Ghostty, Alacritty, Kitty, and Terminal.app are all common choices on macOS. The emulator doesn’t matter — Lacy operates at the shell level, not the terminal level.
Can I get Warp’s AI features in my existing terminal?
Not Warp’s specifically — those are tied to the Warp app. But Lacy gives you automatic AI routing in any terminal, connected to Claude Code, Gemini CLI, or whatever AI CLI you prefer. Whether that’s equivalent depends on which agent you connect.
Is Warp’s AI better than what Lacy routes to?
It depends on your preference. Warp uses its own model. Lacy routes to whichever CLI agent you configure. If you already have claude orgemini installed and use them regularly, Lacy routes to them at full quality — no additional subscription or account needed.
The bottom line
Warp is a genuinely strong terminal. Its blocks interface, modern input editing, and team features represent real innovation in how terminals can work. The tradeoff is commitment — you switch apps, create an account, and accept Warp’s AI model instead of your own.
Lacy takes no position on which terminal is best. It makes whatever terminal you use AI-aware — with automatic routing, real-time visual feedback, and connection to the AI agents you already prefer. If you like your current setup and want AI in it without switching apps, Lacy is the path of least resistance.