
Walks new engineers through clunky work software (PLM, SRM, ERP), click by click, or clicks for them. Website and live demo · Download for Windows · Mac (Lite)
Works out of the box: Buddy starts on a free cloud brain, so there's no account, key or model download. For unlimited, private answers, add a local brain with Ollama. The free brain's source is in cloud/brain.
On a Mac? Buddy Lite for Mac points and answers (hold Control+Option+Space). One line in Terminal installs it:
curl -fsSL https://juw12.github.io/buddy/mac-install.sh | bash. Clicking and typing for you, the Pips pet and key sounds are Windows-only for now.On a phone, tablet or any other computer? Open juw12.github.io/buddy/island and add it to your home screen: tap to type, hold to talk, or share a screenshot to Buddy. See Buddy Island.
Tried it? Tell us how it went. It takes a minute.
Buddy is the app. It owns the tray icon, the main window, autostart and quitting. It has three features:
- Focus: the Pips desktop pet and focus tracker, running inside Buddy.
- Keyboard & mouse sounds: KeyIt, plus a soft click for every mouse button (Settings: Mouse clicks too).
- AI helper: a local helper that looks at your screen and answers questions about it.
Click the orange Buddy icon by the clock to open the main window. Its tabs are Home, Focus, Keyboard sounds and AI helper.
- App: unzip
Buddy-win64.zipanywhere and runBuddy.exe. You don't need Python. - From source: run
setup.batonce (it creates.venv, installs the requirements, and runs the self-test). After that, start Buddy withstart.bat. - Build the app: run
build.bat. It writesdist\Buddy\anddist\Buddy-win64.zip. Your Pips data indist\Buddy\app\pipsis kept when you rebuild, and it is never put in the zip.
Quit Pips first, or leave it running: the database is copied safely either way. Then run:
Buddy.exe --import-pips "C:\path\to\your\pips" (app)
python buddy.py --import-pips "C:\path\to\your\pips" (source)
This copies config.json and data\. Buddy only reads your original Pips folder. If Buddy already has a profile,
the import stops. Add --force to replace that profile; the old one is moved to pips\backup\ first.
- Ctrl+Alt+Space, hold it: ask Buddy about your screen by voice. Release to send, and press Esc to cancel.
- Voice: Settings -> Voice. "Natural: ..." voices sound human (Kokoro, offline, ~120 MB downloaded once into %APPDATA%\Buddy\voices) in English (US/UK), Chinese (Mandarin), Spanish, French, Italian, Portuguese (Brazil) and Hindi. If Buddy answers in Chinese or Hindi while another language's voice is picked, a voice of the same gender reads that part; the Microsoft voices are the old robotic ones. Press Test to hear one. Natural voices run on the CPU, so on a very busy PC they can start a second or two later.
- Brain (Settings): Free (cloud) needs no setup: Llama 4 Scout on Cloudflare Workers AI through a small Worker (cloud/brain), ~5 s answers, a shared daily limit, and the screenshot + question go to Cloudflare to be answered (not stored). With Local GPU picked and no local brain on the PC, Buddy uses the free brain automatically. Smart (MAAS) uses a big vision model on your company's AI gateway (~1-2 s answers, much smarter; your screenshot + question go to that gateway, logging in with the MAAS account from the Pips token card). Set
BUDDY_SMART_URL(an OpenAI-compatible chat endpoint) andBUDDY_SMART_MODELto point it at your gateway. Local GPU / Local CPU keep everything on this PC (~5-15 s / ~1 min). If MAAS can't be reached, Buddy answers locally for 5 minutes and then tries MAAS again. - Ctrl+Alt+Space, tap it: a small ask box opens at your mouse, so you can type when you can't talk. If you had text highlighted, Buddy reads it too (through Windows accessibility, never the clipboard). Just pressing Enter means "explain this".
- Like Clicky, a small orange buddy rests next to your mouse all the time. It shows a waveform while it listens, a spinner while it thinks, and flies to whatever it points at. To see it only while you ask, untick Settings → Keep Buddy next to my mouse all the time.
- Look (Settings): pick the buddy's colour (10 colours or Custom…) and icon (arrow, mouse pointer, paper plane, dot, star, heart or the Buddy face). The colour is also used for its bubbles and the ask/confirm boxes.
- The buddy runs on its own thread with its own tiny window, so it keeps following the mouse even when the PC or the rest of Buddy is busy; after a hiccup it jumps straight back to the mouse instead of crawling after it. Buddy answers in the pet's speech bubble, reads it aloud, and draws an orange beam from the pet to whatever it is talking about.
- Ctrl+Alt+M: mute keyboard and mouse sounds.
- Buddy plays a short chime when it wakes up (Ctrl+Alt+Space or Ask Buddy) and a blip when it got your question. Turn it off with Wake-up chime in Settings.
- Ctrl+Alt+P: Pips's own hotkey (unchanged).
- Right-click the pet, then go to Buddy to find Ask Buddy about my screen, Keyboard sounds, and Sounds & AI settings.
For the private Local brain, run Ollama locally with a vision model,
for example ollama pull qwen3-vl:4b-instruct. Everything stays on this PC. Buddy also tells the model
your current Pips focus score, so answers can take your day into account.
Speed (Use GPU, on by default): Ollama runs only on the CPU on Intel Arc laptops, which takes about 70–140 s per screenshot. So Buddy starts Ollama's own bundled GPU server (Vulkan) with the model files Ollama already downloaded. A fresh screenshot takes about 12–15 s, and a follow-up or a question asked while you were still talking takes about 5 s. The GPU server stops after 30 min idle to free memory. If the GPU path isn't available, Buddy uses Ollama on the CPU. You can untick Use GPU (fast) in Settings to always use the CPU.
Doing things: ask Buddy to do something and it does it. For example: "close the file explorer", "close this", "minimize Outlook", "open notepad", "open google.com", "click Insert", "type hello", or "save it" (Ctrl+S). It only acts on requests; "how do I…" questions just get an answer and an arrow. If a window is frozen, Buddy asks before force-closing it. Frozen File Explorer windows are fixed by restarting Explorer, so the taskbar blinks once. Risky shortcuts like Alt+F4 also ask first.
Buddy only does what your words ask for. "Close notepad" can only close Notepad, never another window. It clicks only when you say click, press or select. It never clicks a window's own close or minimize buttons. If you name an app that isn't open, it refuses instead of typing into another window. Everything Buddy does is written to app\pips\logs\widget.log.
From scripts or shortcuts: Buddy.exe --ask "open notepad" hands a typed question to the running Buddy, the same as the Ctrl+Alt+Space box.
Pointing: the arrow snaps onto the exact button, tab or text box through Windows UI Automation. This works in Office, browsers, Electron apps and the taskbar. In apps that draw their own UI, the arrow goes to the model's estimate.
Buddy lives in your screen's notch, so it is always one move away, on every device:
-
Windows: a slim black island sits at the top centre of the monitor your mouse is on, flush with the top edge (or as a floating pill under a top taskbar). It never takes clicks until you rest the mouse on it for a moment; then it opens to Ask Buddy. Click it to type, hold it to talk. While Buddy works, the island shows the waveform, the thinking spinner and a short answer. Click the answer to dismiss it, right-click for Settings. It hides during full-screen apps and presentations, and never shows up in the screenshot Buddy takes. Turn it off with Settings → Buddy Island at the top of the screen.
-
Mac: on MacBooks with a notch the island wraps the real notch (its wings grow out of both sides); on other Macs it hangs from the top centre of the screen. Click to type, hold to talk. Menu: Buddy Island in the notch.
-
Phone, tablet, Chromebook, Linux, any browser: juw12.github.io/buddy/island is a small web app on the free brain. Add it to the home screen (Share → Add to Home Screen on iPhone, Install on Android/Chrome). Tap the island to type, hold it to talk, attach or share a screenshot to Buddy (Android share sheet) and it points at the answer on your picture and reads it out. On a computer, Pop Buddy out keeps a tiny always-on-top island over your other windows (Chrome/Edge). Links:
…/island/?q=your+questionasks straight away,…/island/?talk=1starts listening (handy for an iPhone Shortcut on the Action Button or Back Tap). -
iPhone app (real Dynamic Island): the free Buddy for iPhone app lives in the actual Dynamic Island as a Live Activity (and on the Lock Screen). Back Tap / Action Button → Ask Buddy about my screen answers about your last screenshot without leaving your app. Install the unsigned
Buddy-iOS.ipawith Sideloadly or AltStore and your free Apple ID.
Honest limits: the web island can't sit in the iPhone's real Dynamic Island (use the iPhone app for that), and a phone web app can't see your other apps, so on a phone you show Buddy a screenshot. The web island uses the shared free brain and its daily limit; nothing is stored.
Buddy keeps itself up to date. Windows and Mac check
juw12.github.io/buddy/latest.json a minute after start and
every 3 hours. They download the new version, check its size and SHA-256, run its self-test, and swap only
when you are idle. Your settings, voices and history stay. If the new version fails, the old one comes back.
Tray / menu bar: Check for updates. From a terminal: Buddy.exe --update. Log:
.buddy-update\update.log next to the Buddy folder. The iPhone app shows a banner when a new version is out;
AltStore users can add the source https://juw12.github.io/buddy/altstore.json. The web island refreshes
itself.
- Pips data (tasks, history, config) is stored in
pips/dataandpips/config.json. In the app, that isBuddy\app\pips\dataandBuddy\app\pips\config.json. - Autostart (pet menu: Autostart, or the "Start with Windows" setting) adds
Buddy.lnkto your Startup folder. It doesn't change a standalonePips.lnk. - Sound and AI settings are stored in
%APPDATA%\Buddy. You can override this with theKEYIT_HOMEenvironment variable.
- Don't run standalone Pips and Buddy at the same time. Both would track your activity, and they would fight over Ctrl+Alt+P.
- Pips's built-in updater is disabled inside Buddy, because updates ship with Buddy.
python buddy.py --selftestruns the Pips self-test with all Buddy parts attached.
buddy.py: the launcher (--selftest,--import-pips).pips_import.py: copies a Pips profile into Buddy (SQLite online backup with an integrity check).buddy.specandbuild.bat: the PyInstaller onedir build. The sources ship as plain files inapp\.buddy_host.py: BuddyApp, the boss. It owns the Tk root, the tray, single-instance, quitting and autostart. It also contains FocusFeature (Pips running under Buddy's root), the pet menu and the pet-guide overlay.buddy_home.py: the Home and Focus tabs of the Buddy window.assets/buddy.ico: Buddy's icon.make_buddy_icon.pydraws it.pips/: Pips v2.28.0 source, unmodified.keyit/: KeyIt modules, patched so they can be hosted inside Buddy.
Released under the MIT License © 2026 Juwen Lie. Contributions are welcome under the same license; see the contributing guide and Code of Conduct.