$ drip run make testa green card: make test finished, and how long it took
01Wrap a command
drip run runs it, times it and shows how it went: green on exit 0, red with the exit code otherwise. drip then exits with the command's status.
drip is a free, open-source command-line tool for macOS that shows a native card from your MacBook's notch when a build, deploy, test run or coding agent (Claude Code, Codex, Gemini CLI) finishes or needs you. It is not Notification Center, so it needs no permissions.
brew install jrnxf/tap/drip--wait holds until the card has gone$ drip ok "Build finished" -d "make test: 246 passed in 3.2s"a green card from the notch: Build finished
Each module below runs the same engine as the one above. It plays once when it scrolls into view; press PLAY to run it again.
$ drip run make testa green card: make test finished, and how long it took
drip run runs it, times it and shows how it went: green on exit 0, red with the exit code otherwise. drip then exits with the command's status.
$ drip setup claudemy-app needs you, then my-app is done
drip setup claude, codex or gemini points the agent's hooks at drip. A card names the project and what the agent needs, then says when it has finished.
$ drip ok "Deployed" --id deploythe Deploying card turns into Deployed
Cards with the same --id replace each other. When the older card is on screen, it springs to the new card's size instead of queueing a second one.
$ drip ok "Merge drip #23?" --yes Merge --no Latera card with Merge and Later buttons
--yes and --no ask a question and wait for the answer. drip exits 0 on yes and 1 on no, so && runs the next step only on yes. Answer it here.
$ git log -1 --format='%s%n%an' | drip okthe last commit's subject and author
With no title, drip reads stdin: the first line is the title and the rest is the detail. That suits git hooks and cron jobs.
$ drip deploy "Shipped to prod"a card in the deploy preset's icon and color
Icons, colors, sounds and timing go in ~/.config/drip/config.toml. This module defines a deploy preset.
Cards that arrive while one shows stack below it. In chain mode, the default, each new card drops out of the last one. In push mode it drops out of the notch and moves the others down. Cards past the most it shows wait in a drop under the last card, or in push mode in a pill under the notch, which counts them and lists them under the pointer; each grows out of it as room opens. This module runs DripCore's CardStack: pick a mode, or press PLAY.
| kinds | ok, warn, fail, info, and presets from your config: the kind is the look |
|---|---|
| text | a title of up to 2 lines and a detail of up to 3, wrapped by the engine; a card is at most 640 pt wide |
| time | 4.5 s by default; --seconds takes 0.5 to 60; --stay keeps a card until it is clicked |
| buttons | --open opens a URL or a file; --yes and --no ask, then exit 0 on yes, 1 on no and 5 without an answer |
| icons | SF Symbols, image files, app icons, and marks for Claude, Codex and Gemini |
| agents | drip setup claude, codex or gemini adds drip to the agent's own hooks |
| replace | --id: a newer card with the same id takes the older one's place |
| dismiss | a click brings the sender forward; the × on hover, a right-click or drip dismiss takes a card away without that |
| history | drip history lists past cards; --missed, the ones held while the screen was locked |
$ drip ok; drip warn; drip fail; drip info; drip okthree cards stack under the notch, and a drop under them counts the two waiting for room
DripCore, drip's engine, is compiled from the same Swift sources to WebAssembly and loaded by this page. It parses each command line, resolves the card, wraps the text and runs the springs that drop it out of the notch. The page paints what it computes.
--helpconfig.tomldrip run's title and timing, and drip hook's reading of the payloadCardStack places and times themdrip run wraps: they only pretend to run, and drip times themHomebrew installs drip as a prebuilt universal binary, for Apple silicon and Intel Macs. Nothing compiles, and Xcode is not needed. The README covers building from source.
$ brew install jrnxf/tap/drip$ drip ok "drip works"$ drip run make test # wrap any command