Vibeleaderboard
Index / tool
Visit github.com
Category
Developer Tools
Rank
No. 1818Tools index

Previous survey · No. 1723 ·

Pricing
Open Source
Type
TOOL
Use case
Coding
Interfaces
Host Plugin
GitHub
5 stars
Date

About

A lightweight Zsh plugin that suggests the next terminal command as inline grey text by analyzing the last command, its output, exit status, and project context (git status, files, history). It supports Anthropic, OpenRouter, or a fully local Ollama backend, and never executes commands automatically.

What it does

A single shell script that turns a language model into a Warp-style autocomplete for zsh. When a prompt returns, it gathers what just happened in the terminal, asks a model for one likely follow-up, and paints the answer as a dim suggestion after the cursor. Pausing mid-typing asks the model to finish the partial line instead. Accepting puts the text in the buffer; running it is always left to you. Because a shell cannot see what its child programs print, the plugin restarts your session inside a terminal recorder, or reads the tmux pane, to recover that output.

Why it's ranked here

Small, readable and honest about what it sends. The whole mechanism is roughly 300 lines of zsh with curl as the only dependency, MIT licensed, and it installs through every common plugin manager. It handles the fiddly parts of a shell plugin carefully: it waits for a typing pause, drops stale replies, refuses to display a completion that contradicts what you already typed, and hands Tab back to your previous completion. The cost is privacy: after every command it ships your recent history, directory listing and command output to whichever provider you picked.

What's good

The suggestion only appears if it begins with exactly what you typed, so a model that ignores the prefix shows nothing rather than garbage. It stays quiet after you interrupt with Ctrl-C or Ctrl-Z, and it does not re-ask when the same command gives the same result in the same folder. Tab accepts a suggestion when one is visible and otherwise falls through to whatever Tab did before. It steps aside when zsh-autosuggestions is already showing something. A debug switch logs every request and reply, so you can see exactly what leaves the machine.

Tradeoffs

The request carries your username, hostname, working directory, up to 30 entries of the folder listing, git status, the last 20 history lines and up to 60 lines of output, after every command by default. Outside tmux the plugin records the entire terminal session to a log file in your cache folder, so anything printed there, secrets included, sits on disk until the next shell starts. JSON is built and parsed by hand with pattern matching rather than a real parser. There is no test directory in the repository tree, and a new terminal window is required after install.

How to use it well

Fits someone who lives in zsh, wants next-step hints like a fix for a failed command, and does not want to switch terminals to get them. Point it at a local Ollama model if command output from work machines must not leave the box, or set it to suggest only after failures to cut request volume. Keep it last in your shell config, as the install notes insist, and turn on persistent history so it has context. It does not cover other shells or explain commands; it only proposes the next one.

Technical notes+

aish.plugin.zsh re-execs the interactive shell under script(1) (-qF on darwin, -qf -c elsewhere) with AISH_WRAPPED as a guard, truncating AISH_LOG (default under XDG_CACHE_HOME/aish/session.log) on each start; preexec records the log byte offset and precmd tails from it, stripping ANSI escapes with sed, or uses tmux capture-pane when TMUX is set. _aish_backend builds the body with a hand-written _aish_json_str encoder, calls the Anthropic messages API, OpenRouter chat completions or Ollama on localhost:11434 with curl --max-time 8 and max_tokens 120, and extracts the first matching string with a regex in _aish_json_get. Replies arrive via zle -F on a process-substitution fd; a generation counter (AISH_GEN) plus a sleep-based debounce drop stale results. _aish_line_init skips exit codes 130, 146 and 148 and dedupes on command, status and PWD. install.sh requires zsh, curl and git, shallow-clones, and appends one source line to .zshrc idempotently.

Observed

License
MIT
Language
Zsh shell script, single plugin file plus a POSIX sh installer
Runtime dependencies
zsh 5.3 or newer and curl; installer also needs git
Install surface
curl-piped install.sh, manual clone, oh-my-zsh, zinit, antidote, zplug
Model backends
Anthropic API, OpenRouter API, local Ollama; auto-selected by which API key is set
Platform support
Linux and macOS terminal recorder variants handled in aish.plugin.zsh; tmux supported
Execution model
Suggestions are placed in the edit buffer only; nothing is run automatically
Tests
No test directory in the repository tree

Read from README.md, LICENSE, aish.plugin.zsh, install.sh, demo/setup_demo_env.sh.

What it can do

  • Suggest the next terminal command as inline grey text

    Last command, its output, exit status, and project context → Suggested shell command

  • Analyze project context such as git status, files, and command history

    Git status, file listing, command history → Contextual information for command suggestion

  • Generate command suggestions using Anthropic, OpenRouter, or local Ollama models

    Selected AI backend and command context → Predicted next command

Tags

zshclishellai-autocompleteterminalproductivityllm

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.