Boba Pet
An always-on-top pixel-art desktop pet for Windows that talks to Claude Code (and Codex, Antigravity, Gemini or Groq). Click it, type or say "Hey Boba", and the answer pops up in a speech bubble. It watches your Claude Code sessions, reacts when they finish or fail, and keeps you on track with tasks, focus timers and a hackathon mode.
Install (one line)
Open PowerShell and run:
irm https://raw.githubusercontent.com/AbdulRahmanAzam/boba-pet/main/install.ps1 | iex
That's it. The installer:
- installs uv if you don't have it,
- installs Boba Pet with its own private Python 3.12 (your Python is untouched),
- downloads the offline voice and search models (about 200 MB, one time),
- adds Boba Pet to the Start menu and starts the pet.
No admin rights, no git clone. To also start the pet with Windows, run
$env:BOBA_PET_AUTOSTART="1" before the line above, or later run
boba-pet-setup --autostart.
Already have Python 3.11+?
pip install boba-pet
boba-pet
or, with uv, just uvx boba-pet. The first
start downloads the voice models in the background; run boba-pet-setup
once to get them right away and add a Start menu shortcut.
Update / uninstall
uv tool upgrade boba-pet # update (or re-run the install line)
boba-pet-setup --uninstall-shortcuts; uv tool uninstall boba-pet # remove
Your settings and models stay in %USERPROFILE%\.boba-pet and
%USERPROFILE%\.claude-pet*.json; delete them to remove everything.
Requirements
- Windows 10 or 11
- One AI to talk through (the pet has no key of its own; pick it from the
right-click menu > AI provider):
- Claude Code (recommended):
irm https://claude.ai/install.ps1 | iex, then sign in once withclaude - Codex CLI (ChatGPT plan), Antigravity CLI (Google account), or a free Groq / Gemini API key
- Claude Code (recommended):
What it does
- Chat in a speech bubble; the chat keeps context, shows tokens used (↑ input, ↓ output) and has a cheap Compact button that rolls the chat into a short note.
- Quick menu: click the ✱ in the ask box for ask, talk, screenshot, new chat, compact, history, effort level and more.
- Voice, fully offline: talk with the mic button (Whisper), say "Hey Boba" to wake it (Vosk), and have replies read aloud (Windows TTS).
- Claude Code companion: it looks busy while a session works, celebrates when it finishes, sweats when tests fail and waves when Claude needs your permission. A usage meter shows your plan limits and today's tokens.
- Projects: "open my portfolio project" finds the folder and opens it in VS Code with Claude Code running.
- Tasks, reminders and focus timer, with a gentle distraction guard.
- Hackathons: track deadlines, and click one for a workspace with a checklist, notes, focus sprints, idea/pitch/judge helpers and a prompt coach that suggests better Claude Code prompts while you build.
- Morning tech briefing from real news feeds, every item linked to its source.
- Screenshots: snip part of the screen and ask about it.
- Computer tools (optional): the AI can open apps, change volume, type and so on. By default it asks you first for anything risky; set the mode in the menu, or turn it off.
- Characters: several pixel-art pets; add your own with one file (see below).
Privacy
- API keys you paste are saved only in
%USERPROFILE%\.boba-pet\.envon your PC. - Speech recognition and the wake word run locally; audio never leaves the PC.
- The pet reads Claude Code transcripts locally to react to sessions; their text is not sent anywhere.
- Requests to the AI go through the provider you linked, on your own account.
Run from source (for contributors)
git clone https://github.com/AbdulRahmanAzam/boba-pet
cd boba-pet
uv venv --python 3.12 .venv
uv pip install --python .venv\Scripts\python.exe -r requirements.txt
.venv\Scripts\python.exe launch.py --setup # optional: models + Start menu shortcut
.venv\Scripts\pythonw.exe claude_pet.py
In a clone, the pet keeps .env, models/ and shots/ next to the code
(all git-ignored). Copy .env.example to .env if you use Groq or Gemini keys.
Set BOBA_PET_PROJECTS (folders separated by ;) to choose where it looks
for your projects.
Layout
| File | What it is |
|---|---|
claude_pet.py |
The pet window, menus, chat and everything that ties the parts together |
providers.py, account.py |
Talking to Claude Code, Codex, Antigravity, Groq and Gemini |
chatlog.py |
Chat history, token counts and compaction |
sprites.py, sprite_*.py |
Pixel-art characters |
listener.py, wake.py, speak.ps1 |
Mic input (Whisper), wake word (Vosk), text to speech |
cc_watch.py, pet_hook.py, pet_status.py, usage.py |
Claude Code session watching and usage meter |
projects.py, vscode-ext/ |
Project search and the VS Code launcher extension |
tasks.py, focus.py |
Tasks, reminders, focus timer visuals |
hackathons.py, hackmode.py |
Hackathon tracker and hackathon mode |
news.py |
Morning briefing from RSS/Atom feeds |
computer.py, pet_mcp.py |
Computer tools and their MCP server |
snip.py, ui_fx.py |
Screen snipping, fades, markdown and other UI helpers |
launch.py, pet_setup.py, pet_paths.py |
Installed command, first-run setup, data folders |
Add a character
Drop a sprite_<name>.py file next to sprites.py with a
compose_<name>(...) function (copy sprite_bluebot.py to start), an
optional NAME for the menu and an optional EXTRA_PALETTE. It shows up in
the menu on the next start.
Contributing
Pull requests are welcome; see CONTRIBUTING.md.
License
Metadata
Release files for boba-pet 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| boba_pet-1.0.0.tar.gz | 159.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| boba_pet-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 333.5 kB
Release files / boba_pet-1.0.0.tar.gz
| Download URL | boba_pet-1.0.0.tar.gz |
|---|---|
| Size | 159.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8ae0e8ab1b65a88db37c094746009f4577bb0b91191d02c1fdc61d3890d456a8
|
|
BLAKE2b-256 checksum How to use checksums |
618cc0b5efb0e7b8b6038ecae89131abdf2112b544e81c180ed634aec345dbb2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / boba_pet-1.0.0-py3-none-any.whl
| Download URL | boba_pet-1.0.0-py3-none-any.whl |
|---|---|
| Size | 173.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d9249140aacd85ed765ae75d2aa6dfcbbe8ae6c3727e97f5fc5fbf41123050d3
|
|
BLAKE2b-256 checksum How to use checksums |
0775e61432ec46e7fd67855589cdd7b417694fa6b42fb8bb9ddf3d1459ef0bfe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency log