open source

Talk to
your shell

Type commands or natural language. Commands run in your shell. Questions go to AI. No mode switching. No prefixes. You type, it figures it out.

$ curl -fsSL https://lacy.sh/install | bash
$ brew install lacymorrow/tap/lacy
$ npx lacy
$ git clone https://github.com/lacymorrow/lacy.git ~/.lacy$ echo 'source ~/.lacy/lacy.plugin.zsh' >> ~/.zshrc
What it looks like
>ls -lashell
drwxr-xr-x 12 user staff 384 Feb 3 09:21 .
>what files are hereagent
You have 12 files including package.json, src/, ...
>git statusshell
>fix the build error in src/index.tsagent
>cd .. && npm testshell

How it works

Commands run.
Questions route.

Lacy intercepts your input before the shell sees it. If the first word is a valid command, it executes normally. If it looks like natural language, it goes to your AI tool.

Auto-detect

First word is a valid command? Shell. Multi-word and not a command? AI. Single unknown word? Shell (let it error).

Live indicator

A colored bar at your prompt changes as you type. Green means shell. Magenta means AI. You always know.

Preheated

Background servers and session reuse eliminate cold-start. Your AI tool is ready before you finish typing.

No API keys

Each AI CLI handles its own auth. Lacy just routes. Nothing to configure beyond picking a tool.


Supported tools
lash
lash run -c "query"
recommended
claude
claude -p "query"
Claude Code
opencode
opencode run "query"
gemini
gemini -p "query"
Google
codex
codex exec "query"
OpenAI
custom
your-command "query"
anything

Modes

Shell

Everything goes to your shell. Normal terminal.

Ctrl+Space

Agent

Everything goes to AI. Every line is a prompt.

Ctrl+Space

Auto

Smart routing. Commands to shell, questions to AI.

default

Open terminal.
Type naturally.
Ship code.

$ curl -fsSL https://lacy.sh/install | bash