macOS · Windows · Linux

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                  │
╰──────────────────────────────────────────────────────╯
One syntax

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.

What it guarantees

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.

In your prompt

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.

Nearby

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
Install

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