Skip to content

Repository files navigation

>_ peek

Amazon Q-style dropdown autocomplete for Linux. Works in zsh and bash. Free, source-available, no Node required.

Go Platform Commands License Release


peek git subcommand completion

Press space after any known command. A dropdown opens. Type to filter. Arrows to navigate. Enter to pick. Cascades automatically through subcommand levels.


Why?

Amazon Q CLI ships the best terminal autocomplete available - an inline dropdown with descriptions, cascading through subcommand levels. It is macOS-only.

On Linux you get zsh-autosuggestions (single-line ghost text) or your shell's built-in TAB completion (functional but not visual). peek fills the gap: the same dropdown experience, in zsh and bash, as a single static Go binary. No Node, no Electron, no runtime deps. Sub-millisecond latency via a persistent background daemon.


Features

Live completions from your actual environment

git checkout <Tab> lists your real branches. git add <Tab> shows your modified files. kubectl exec <Tab> lists running pods. docker run <Tab> shows local images. Completions run the same shell commands Fig's specs define, in your cwd, at completion time.

Directory drill-down

peek cd directory drill-down

Pick a folder and the dropdown immediately opens inside it. Navigate deep paths without typing a single slash.

Files before flags

peek file completion

For vim, cat, ls, cp, rm, scp and most file commands - real filesystem entries appear at the top of the dropdown, flags below.


Install

One-liner (recommended)

curl -fsSL https://raw.githubusercontent.com/vinbh/peek/main/get.sh | bash

Detects your OS and architecture, downloads the right binary from Releases, and installs everything. No Go required.

Homebrew (macOS / Linux)

brew install vinbh/peek/peek

Via go install (requires Go 1.21+)

go install github.com/vinbh/peek/cmd/peek@latest
peek setup

peek setup extracts the embedded specs and hooks to ~/.config/peek/ and offers to wire your shell rc files automatically.

From source

git clone https://github.com/vinbh/peek.git
cd peek
./install.sh

Enable in your shell

The installer prompts you automatically. To add manually:

zsh — add to ~/.zshrc:

source ~/.config/peek/peek.zsh

bash (4.3+) — add to ~/.bashrc:

source ~/.config/peek/peek.bash

Open a new shell and start typing. ./uninstall.sh removes everything (hand-rolled specs are preserved).


What it covers

Category Commands
Dev tools git, docker, docker-compose, kubectl, helm, terraform, make, gh, podman
Kubernetes kind, minikube, k3d, kubectx, kubens
IaC / infra pulumi, ansible, ansible-playbook, vault
Cloud aws, gcloud, doctl, fly, vercel, netlify
Languages go, cargo, rustc, python, pip, node, npm, yarn, pnpm, ruby, gem, bundle, swift, dotnet, java
Version managers nvm, rbenv, pyenv, asdf
Python packaging poetry, pipenv, conda
Build tools cmake, gradle, mvn, ant, bazel
Shell utils ls, find, grep, sed, xargs, tar, cut, sort, uniq, wc, tee, diff, mv, cp, rm, ln, mkdir, touch, chmod, chown, cd
Viewing cat, less, head, tail, man, bat
Network curl, wget, ssh, scp, rsync, ping, nc, ssh-keygen, nmap, dig, traceroute
System systemctl, apt, brew, ps, kill, top, htop, df, du, lsof, uname, crontab
Databases psql, mysql, sqlite3, mongosh
Data jq, svn
Editors / muxers vim, vi, nvim, emacs, nano, tmux, screen
Dev workflow direnv, pre-commit, goreleaser, act, gpg

121 commands imported from Fig autocomplete (MIT). To add more: edit tools/import-fig/commands.txt and re-run the importer.


Comparison

peek zsh-autosuggestions Amazon Q / Fig inshellisense
Linux native ❌ macOS only
Dropdown with descriptions ❌ ghost text
Live completions (branches, pods)
File/folder completion
Type-to-filter in dropdown n/a
Standalone binary ✅ Go ✅ shell ❌ Node
Source-available ✅ PolyForm-NC ✅ MIT ✅ MIT

No floating overlay. Linux has no universal cursor-pixel API and Wayland blocks the trick. peek renders inline (same as fzf, atuin). No telemetry, no network calls.


What's not there yet

Lands in
fish shell M9+
LLM fallback for unknown commands M9+
AUR / COPR packages M9+

How it works

zsh / bash widget (space or Tab)
      |
      v
  peek client --unix socket--> peek-daemon
      |                              |
      |                              +- load spec for first token
      |                              +- run generators (git branch, kubectl get, ...)
      |                              +- prefix-match remaining input
      <---- []Suggestion JSON -------+
      v
  /dev/tty raw mode -> ANSI dropdown -> pick returned to shell

The daemon lazy-spawns on first use (fork + Setsid, no systemd required). If it can't start, peek answers in-process so you're never left without completions. Generator scripts run with a 5-second timeout in your shell's cwd.


Hacking on it

go build -o ./bin/peek ./cmd/peek
export PATH="$PWD/bin:$PATH"
export PEEK_SPECS_DIR="$PWD/specs"
source ./shell/zsh/peek.zsh   # or: source ./shell/bash/peek.bash
# After rebuilding: pkill -KILL -f 'peek daemon'

To test the go install path locally:

go build -o ./bin/peek ./cmd/peek
./bin/peek setup
go test ./...

To regenerate the demo GIFs (requires vhs, ffmpeg, ttyd):

vhs demo/git.tape
vhs demo/cd.tape
vhs demo/files.tape

Roadmap

  • M0 - scaffold
  • M1 - zsh Tab completion via JSON specs
  • M2 - ANSI dropdown + type-to-filter
  • M3 - long-running daemon (lazy auto-spawn, in-process fallback)
  • M4 - auto-open on space, cascading subcommand levels
  • M5 - 63 commands imported from Fig autocomplete
  • M5.5 - file / folder generators (cd, vim, ls, cp, ...)
  • M6 - live completions via script generators (git branches, kubectl resources, docker containers, aws profiles)
  • M7 - bash shell support (4.3+), unified multi-shell installer
  • M8 - 121-command catalog (2x), go install + embedded specs, peek setup, Homebrew tap, deb/rpm/apk packages
  • M9+ - fish shell, history ranking, LLM fallback, AUR/COPR packages

Contributing

PRs welcome. By submitting you agree to the CLA, which allows future commercial dual-licensing.

To add a spec: drop a specs/<cmd>.json - it overrides anything in specs/fig/. The format is a subset of Fig's spec schema.

License

PolyForm Noncommercial 1.0.0 - free for personal, hobby, research, and educational use.

For commercial use, open an issue or email vinayakbhatt@mit.tc.

Specs from Fig autocomplete remain MIT-licensed; their headers are preserved in specs/fig/.

Credits

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages