At the desk while you code
Meet Pix.
A tiny pixel robot that lives on your MacBook Pro’s Touch Bar.
brew install eslamalii/tap/pix
Then run open $(brew --prefix)/opt/pix/Pix.app. After that, it starts at login by itself.
Daily Routine
It lives your day with you
Pix goes about its routine in step with yours, reading subtle system cues without ever looking at your screen.
On the couch while you watch
With a headset on during calls
Sleepy late at night
Grumpy when you jump between too many apps
For Developers
Your AI agent’s status light
$ claude "add a hat that unlocks after 10 focus sessions"
While Claude Code, Codex or Cursor works, Pix types along. ! ASKING when it needs you, ★ DONE when it finishes, ! OOPS when a turn fails.
{
"hooks": {
"UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "open -g \"pix://agent/working?session=$(plutil -extract session_id raw -o - -)\"" }] }],
"PreToolUse": [{ "matcher": "*", "hooks": [{ "type": "command", "command": "open -g \"pix://agent/working?session=$(plutil -extract session_id raw -o - -)\"" }] }],
"PostToolUse": [{ "matcher": "*", "hooks": [{ "type": "command", "command": "open -g \"pix://agent/working?session=$(plutil -extract session_id raw -o - -)\"" }] }],
"Notification": [{ "matcher": "permission_prompt|elicitation_dialog|agent_needs_input", "hooks": [{ "type": "command", "command": "open -g \"pix://agent/waiting?session=$(plutil -extract session_id raw -o - -)\"" }] }],
"Stop": [{ "hooks": [{ "type": "command", "command": "open -g \"pix://agent/done?session=$(plutil -extract session_id raw -o - -)\"" }] }],
"StopFailure": [{ "hooks": [{ "type": "command", "command": "open -g \"pix://agent/failed?session=$(plutil -extract session_id raw -o - -)\"" }] }]
}
}
{
"version": 1,
"hooks": {
"beforeSubmitPrompt": [{ "command": "open -g \"pix://agent/working?session=$(plutil -extract conversation_id raw -o - -)\"; echo '{\"continue\":true}'" }],
"stop": [{ "command": "j=$(cat); s=done; [ \"$(printf %s \"$j\" | plutil -extract status raw -o - -)\" = error ] && s=failed; open -g \"pix://agent/$s?session=$(printf %s \"$j\" | plutil -extract conversation_id raw -o - -)\"" }]
}
}
{
"hooks": {
"UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "open -g \"pix://agent/working?session=$(plutil -extract session_id raw -o - -)\"" }] }],
"PostToolUse": [{ "hooks": [{ "type": "command", "command": "open -g \"pix://agent/working?session=$(plutil -extract session_id raw -o - -)\"" }] }],
"PermissionRequest": [{ "hooks": [{ "type": "command", "command": "open -g \"pix://agent/waiting?session=$(plutil -extract session_id raw -o - -)\"" }] }],
"Stop": [{ "hooks": [{ "type": "command", "command": "open -g \"pix://agent/done?session=$(plutil -extract session_id raw -o - -)\"" }] }]
}
}
# Trigger Pix states via macOS URL scheme:
open -g "pix://agent/working?session=task-1"
open -g "pix://agent/waiting?session=task-1"
open -g "pix://agent/done?session=task-1"
open -g "pix://agent/failed?session=task-1"
Companion
A friend, not a widget
Pix has a little personality, its own memories, and things to celebrate together over the seasons.
Pets and reactions
Tap Pix on the Touch Bar to see how it feels. Double-tap to pet it for a heart, or tap five times quickly to make it dizzy.
Memory
It notices when you’re early, greets you when you return after a few days away, and remembers your shared workdays.
Hats earned over time
Unlock beanies, flower crowns, and crowns as you spend time together and finish focus sessions. Nothing to buy or trade.
Occasions
Witch hats on Halloween, Santa hats for the holidays, and top hats for New Year's Day. Snow drifts past the window in December and January.
Focus with Pix
Start a 25-minute focus session from the menu bar. Pix works quietly beside you at its desk and stretches when the timer rings.
Skins
Drop your own PNG drawings into the skins folder or choose sample colorways like Rose, Midnight and Mint to customize Pix’s style.
Efficiency
Light as a feather
Drawing Pix adds nothing measurable to the Touch Bar’s own cost.
| Scene | Pix CPU | Peak CPU | Pix Memory | Energy Impact | Idle Wakeups/s | TouchBarServer CPU |
|---|---|---|---|---|---|---|
| On battery | 0.01% | 0.5% | 21 MB | 0.01 | 0.01 | 4.45% |
| On charger | 0.02% | 0.5% | 21 MB | 0.02 | 0.00 | 4.40% |
Pix 1.1.3 on a 13" MacBook Pro (M1, 2020), sampled every second for 5 minutes per row, hands off. Memory is the footprint Activity Monitor shows; it held at 21 MB through both runs. Reproducible anytime with ./scripts/measure.sh.
Privacy
Your Mac stays your Mac
Pix only knows which app is in front (for example "Xcode" or "Spotify"), what your AI agents tell it if you set that up (a state word and an anonymous ID, kept in memory only), the time of day, whether you're on battery, and when your screen sleeps.
It doesn’t read your screen, record keystrokes, or use the network. Its Memory stays on your Mac, and you can clear it anytime with Forget Pix’s Memory… in the menu.
Get Started
Install Pix in one minute
brew install eslamalii/tap/pix
Then run open $(brew --prefix)/opt/pix/Pix.app. After that, it starts at login by itself.
Requirements: A MacBook Pro with Touch Bar · macOS 14 (Sonoma) or later.
▸ Which Macs have a Touch Bar?
| MacBook Pro 13" (M1, 2020) | Tested & verified |
| MacBook Pro 13" (M2, 2022) | Supported |
| MacBook Pro 16" & 13" (2019–2020 Intel) | Supported via Homebrew |
| MacBook Pro 13" & 15" (2016–2019) | Supported (Auto-centered) |
Direct download: Pix-1.1.3.dmg (Apple Silicon) · All releases on GitHub
For direct downloads: because Pix is independently distributed without an Apple Developer subscription, the first time you run it macOS will ask for verification. Open System Settings → Privacy & Security, scroll to Pix, and click Open Anyway.