{"id":43906819,"url":"https://github.com/lacymorrow/lacy","last_synced_at":"2026-07-06T16:31:05.144Z","repository":{"id":310684961,"uuid":"1040234690","full_name":"lacymorrow/lacy","owner":"lacymorrow","description":"Talk to your shell — commands run, questions go to AI. No prefixes.","archived":false,"fork":false,"pushed_at":"2026-06-14T20:51:05.000Z","size":44174,"stargazers_count":18,"open_issues_count":6,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-28T22:07:08.715Z","etag":null,"topics":["ai","ai-agent","ai-cli","ai-coding","ai-coding-assistant","ai-shell","ai-terminal","bash","claude","cli","coding-agent","developer-tools","devtools","mcp","productivity","shell","terminal","zsh"],"latest_commit_sha":null,"homepage":"https://lacy.sh","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lacymorrow.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"lacymorrow","patreon":"lacymorrow","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["buymeacoffee.com/lm","lacymorrow.com/donate"]}},"created_at":"2025-08-18T16:54:55.000Z","updated_at":"2026-06-25T00:27:52.000Z","dependencies_parsed_at":"2025-08-21T23:00:53.910Z","dependency_job_id":null,"html_url":"https://github.com/lacymorrow/lacy","commit_stats":null,"previous_names":["lacymorrow/lacy-shell"],"tags_count":56,"template":false,"template_full_name":null,"purl":"pkg:github/lacymorrow/lacy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lacymorrow%2Flacy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lacymorrow%2Flacy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lacymorrow%2Flacy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lacymorrow%2Flacy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lacymorrow","download_url":"https://codeload.github.com/lacymorrow/lacy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lacymorrow%2Flacy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35199358,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-agent","ai-cli","ai-coding","ai-coding-assistant","ai-shell","ai-terminal","bash","claude","cli","coding-agent","developer-tools","devtools","mcp","productivity","shell","terminal","zsh"],"created_at":"2026-02-06T20:03:54.272Z","updated_at":"2026-07-06T16:31:05.131Z","avatar_url":"https://github.com/lacymorrow.png","language":"Shell","funding_links":["https://github.com/sponsors/lacymorrow","https://patreon.com/lacymorrow","buymeacoffee.com/lm","lacymorrow.com/donate"],"categories":["Plugins"],"sub_categories":["ZSH on Windows"],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://lacy.sh\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/lacymorrow/lacy/HEAD/.github/assets/logo-horizontal-dark.svg\"\u003e\n      \u003cimg src=\"https://raw.githubusercontent.com/lacymorrow/lacy/HEAD/.github/assets/logo-horizontal.svg\" alt=\"Lacy\" width=\"220\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eTalk to your shell.\u003c/strong\u003e Commands run. Questions go to AI. No prefixes. No context switching. You just type.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/lacy\"\u003e\u003cimg alt=\"npm version\" src=\"https://img.shields.io/npm/v/lacy?style=flat\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/lacy\"\u003e\u003cimg alt=\"npm downloads\" src=\"https://img.shields.io/npm/dm/lacy?style=flat\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/lacymorrow/lacy/actions/workflows/ci.yml\"\u003e\u003cimg alt=\"CI\" src=\"https://img.shields.io/github/actions/workflow/status/lacymorrow/lacy/ci.yml?style=flat\u0026label=CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/lacymorrow/lacy/stargazers\"\u003e\u003cimg alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/lacymorrow/lacy?style=flat\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://fsl.software\"\u003e\u003cimg alt=\"License: FSL-1.1-MIT\" src=\"https://img.shields.io/badge/License-FSL--1.1--MIT-blue?style=flat\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/lacymorrow/lacy/HEAD/docs/demo-full.gif\" alt=\"Lacy Shell demo — commands run in shell, questions go to AI\" width=\"680\" /\u003e\n\u003c/p\u003e\n\n## Why Lacy?\n\n- **No new tools to learn** — Lacy works with your existing AI CLI (Claude Code, Gemini, OpenCode, Codex, Lash). It's a complement, not a replacement.\n- **Zero friction** — No slash commands, no hotkeys, no separate terminal. Type naturally and Lacy routes it. A real-time color indicator shows you what will happen before you press enter.\n- **Smart detection** — Lacy classifies input using word analysis, not AI. It's instant. Commands like `ls -la` stay green (shell). Questions like `what files are here` turn magenta (AI). If a command fails with natural language patterns, it silently reroutes to AI.\n\n\u003e *Works with ZSH and Bash 4+ on macOS, Linux, and WSL.*\n\n## Install\n\n\u003e Supported installation methods: `npm`, `curl`, `homebrew`, `git`\n\n#### Install using `npx`\n\n```bash\nnpx lacy\n```\n\n#### Install using `curl`\n\n```bash\ncurl -fsSL https://lacy.sh/install | bash\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eOther methods\u003c/summary\u003e\n\n```bash\n# Homebrew\nbrew tap lacymorrow/tap\nbrew install lacy\n\n# Manual\ngit clone https://github.com/lacymorrow/lacy.git ~/.lacy\necho 'source ~/.lacy/lacy.plugin.zsh' \u003e\u003e ~/.zshrc\n```\n\n\u003c/details\u003e\n\n## How It Works\n\nReal-time visual feedback shows what will happen before you hit enter:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/lacymorrow/lacy/HEAD/docs/demo-indicator.gif\" alt=\"Green indicator for shell commands, magenta for AI\" width=\"680\" /\u003e\n\u003c/p\u003e\n\nCommands execute in your shell. Natural language goes to your AI agent. No prefixes, no context switching — you just type.\n\n| Input                          | Routes to  | Why                                         |\n| ------------------------------ | ---------- | ------------------------------------------- |\n| `ls -la`                       | Shell      | Valid command                               |\n| `what files are here`          | AI         | Natural language                            |\n| `git status`                   | Shell      | Valid command                               |\n| `do we have a way to install?` | AI         | Reserved word — never a real command        |\n| `fix the bug`                  | AI         | Multi-word, not a command                   |\n| `kill the process on 3000`     | Shell → AI | Valid command, but fails — rerouted         |\n| `go ahead and fix it`          | Shell → AI | \"go\" is valid, but \"ahead\" triggers reroute |\n| `!rm -rf *`                    | Shell      | `!` prefix forces shell                     |\n\nThe first word of your input is also syntax-highlighted in real-time: **green** for shell commands, **magenta** for AI queries.\n\n**Smart rerouting** (auto mode): When a valid command contains natural language patterns (3+ bare words with articles, pronouns, etc.) and fails, lacy shows a hint and automatically re-sends it to the AI agent. Shell reserved words like `do`, `then`, `in`, `else` are routed directly to the agent — they pass `command -v` but are never standalone commands.\n\n**Terminal context**: When you ask the AI a question, lacy automatically includes your current directory, git branch, recent commands, and exit codes, but only what changed since your last query. In supported terminals (tmux, screen, iTerm2, Terminal.app), it also captures the visible screen output so the agent can see error messages and stack traces.\n\n## Modes\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/lacymorrow/lacy/HEAD/assets/mode-indicators.jpeg\" alt=\"Shell and Agent mode indicators\" width=\"480\" /\u003e\n\u003c/p\u003e\n\n| Mode      | Behavior                | Activate                     |\n| --------- | ----------------------- | ---------------------------- |\n| **Auto**  | Smart routing (default) | `mode auto`                  |\n| **Shell** | Everything to shell     | `mode shell` or `Ctrl+Space` |\n| **Agent** | Everything to AI        | `mode agent` or `Ctrl+Space` |\n\n## Supported Tools\n\nLacy auto-detects your installed AI CLI. All tools handle their own auth — no API keys needed.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/lacymorrow/lacy/HEAD/assets/supported-tools.jpeg\" alt=\"Supported AI CLI tools\" width=\"680\" /\u003e\n\u003c/p\u003e\n\n```bash\ntool set claude    # Use Claude Code\ntool set lash      # Use Lash\ntool set auto      # Auto-detect (first available)\n```\n\nOr edit `~/.lacy/config.yaml`:\n\n```yaml\nagent_tools:\n  active: claude # lash, claude, opencode, gemini, codex, custom, or empty for auto\n```\n\n## Commands\n\n| Command                     | Description          |\n| --------------------------- | -------------------- |\n| `mode`                      | Show current mode    |\n| `mode [shell\\|agent\\|auto]` | Switch mode          |\n| `tool`                      | Show active AI tool  |\n| `tool set \u003cname\u003e`           | Set AI tool          |\n| `ask \"query\"`               | Direct query to AI   |\n| `Ctrl+Space`                | Toggle between modes |\n\n## CLI\n\nAfter installation, the `lacy` command is available (no Node required):\n\n```bash\nlacy setup        # Interactive settings (tool, mode, config)\nlacy status       # Show installation status\nlacy doctor       # Diagnose common issues\nlacy update       # Pull latest changes\nlacy config edit  # Open config in $EDITOR\nlacy uninstall    # Remove Lacy Shell\nlacy help         # Show all commands\n```\n\n## Uninstall\n\n```bash\nlacy uninstall\n# or\nnpx lacy --uninstall\n# or\ncurl -fsSL https://lacy.sh/install | bash -s -- --uninstall\n```\n\n## Configuration\n\nConfig file: `~/.lacy/config.yaml`\n\n```yaml\nagent_tools:\n  active: claude # lash, claude, opencode, gemini, codex, or empty for auto\n\nmodes:\n  default: auto # shell, agent, auto\n\napi_keys:\n  openai: \"sk-...\" # Only needed if no CLI tool installed\n  anthropic: \"sk-ant-...\"\n```\n\n## Troubleshooting\n\n**No AI response** — Check `tool` to see if a tool is detected. Install one: `npm i -g lashcode` or `brew install claude`.\n\n**Colors not showing** — Ensure your terminal supports 256 colors (green=34, magenta=200, blue=75).\n\n**Command rerouted unexpectedly** — In auto mode, commands with natural language patterns that fail are re-sent to the AI. Switch to `mode shell` to disable this, or prefix with `!`.\n\n**Emergency bypass** — Prefix any command with `!` to force shell execution: `!rm -rf node_modules`\n\n## Releasing\n\nRequires [Bun](https://bun.sh), [gh](https://cli.github.com), and `npm login`.\n\n```bash\nbun run release          # interactive — prompts for patch/minor/major\nbun run release patch    # patch bump  (1.5.3 → 1.5.4)\nbun run release minor    # minor bump  (1.5.3 → 1.6.0)\nbun run release major    # major bump  (1.5.3 → 2.0.0)\nbun run release 2.0.0    # explicit version\n```\n\nThe script handles the full release flow:\n\n1. Bumps version in both `package.json` files\n2. Commits with `release: v\u003cversion\u003e` and tags\n3. Pushes to GitHub and creates a GitHub release\n4. Publishes the npm package (prompts for OTP if required)\n\n## Support This Project\n\nLacy Shell is free and open source. If it saves you time, consider sponsoring the project:\n\n[![Sponsor](https://img.shields.io/badge/Sponsor-❤-ea4aaa?style=for-the-badge\u0026logo=github)](https://github.com/sponsors/lacymorrow)\n\nYour support keeps development active and helps cover infrastructure costs.\n\n## Contributors Welcome\n\nLacy is open source and contributions are welcome! Whether you're fixing a typo, adding a feature, or improving docs, we'd love your help.\n\n- **[Good First Issues](https://github.com/lacymorrow/lacy/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)** -- great starting points for new contributors\n- **[Contributing Guide](CONTRIBUTING.md)** -- dev setup, code style, and PR process\n- **[Discussions](https://github.com/lacymorrow/lacy/discussions)** -- questions, ideas, and general chat\n\n## Star History\n\n\u003ca href=\"https://star-history.com/#lacymorrow/lacy\u0026Date\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=lacymorrow/lacy\u0026type=Date\u0026theme=dark\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=lacymorrow/lacy\u0026type=Date\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=lacymorrow/lacy\u0026type=Date\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n\n## License\n\n[FSL-1.1-MIT](LICENSE) — Functional Source License v1.1 with MIT Future License (converts to MIT after 2 years). See [fsl.software](https://fsl.software) for the full text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flacymorrow%2Flacy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flacymorrow%2Flacy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flacymorrow%2Flacy/lists"}