Your package manager,
as you type.
A frame appears under your prompt and follows every keystroke. And across Homebrew, winget and scoop, one syntax instead of three.
❯ brew install fire ╭──────────────────────────────────────────────────────╮ │❯ brew install jigger 0.9.0│ │ ▣ firealpaca │ │ ▣ firebase-admin │ │ ◆ firebase-cli │ │ ▣ firebird-emu │ │ ▣ firecamp │ │ │ │ ⇥ insert ↓ browse ^G close │ ╰──────────────────────────────────────────────────────╯
It follows your typing.
Type a package-manager command and the frame appears on its own, narrowing down with every letter. Nothing to trigger, nothing to remember.
- ⇥ inserts the current candidate
- ↓ enters the list
- ↑ moves up, then hands the keyboard back to the shell
- ^G closes it for this line
Your arrow keys are never taken over. Until the popup holds the keyboard, ↑ and ↓ stay your shell history — where they belong.
Three managers, one vocabulary.
jg install fd reaches whichever of Homebrew, winget or scoop knows fd — without you having to know which.
❯ jg ╭──────────────────────────────────────────────────────╮ │❯ jigger jigger 0.9.0│ │ • cleanup │ │ • doctor │ │ • info │ │ • install │ │ │ │ ⇥ insert ↓ browse ^G close │ ╰──────────────────────────────────────────────────────╯
- install
- uninstall
- upgrade
- list
- outdated
- search
- info
- source
- pin
- unpin
- cleanup
- doctor
The first seven work everywhere. The others exist only where the manager does — asking winget for cleanup fails cleanly, naming who would know how to do it.
Never an automatic choice. When a single manager knows the name, it wins silently. When several do, the picker opens and you decide — two packages sharing a name are not necessarily the same software. No setting changes that; --pm is the way to settle it in a script.
It stays out of the way.
-
Nothing slow while you type
Catalogs are cached and read from disk. A keystroke never waits on a package manager.
-
Your manager's output, untouched
Prompts, progress bars, elevation dialogs — jigger relays them as they are instead of parsing them away.
-
Made for pipes too
Every listing verb takes --json, so a script never has to read a table meant for humans.
A Homebrew block, if you want one.
Ready-made segments for oh-my-posh and starship: the brew version, and how many formulae and casks are waiting.
~ via 🐍 v3.14.7 🍺 6.0.17 🧪 5 📦 2 ❯
Set JIGGER_PROMPT=1 before loading the plugin, then paste the segment for your prompt — both ship with jigger.
And when you'd rather see than type.
Cocktails is the macOS app of the same family: your packages, their dependencies and your updates, at a glance. jigger works perfectly well without it — they are independent.
Visit the Cocktails site →Three lines, on any of the three.
macOS and Linux — Homebrew
brew tap yves/cocktails https://gitlab.yg-devworks.com/yves/homebrew-cocktails.git
brew install jigger
Windows — from the clone
pwsh -NoProfile -File install-windows.ps1
It builds, then puts jigger within reach: a scoop shim when scoop is around, a copy into your user directory otherwise. There is no winget or scoop package for jigger yet.
Any platform — Go
go install gitlab.yg-devworks.com/yves/jigger@latest
Then wire the plugin into your shell — one source line in ~/.zshrc, one Import-Module in your PowerShell profile. The guide walks through both, and through what to do when nothing shows up.
Read the getting-started guide →