Make sure you have Python 3.10+ installed: python --version
On Windows, run your terminal as Administrator if you see permission errors
Keep ultimate_fox_spritesheet.png in the same folder as omni_fox.py
02
First Launch
When Foxy first appears, she'll be in the bottom-right corner of your screen. She's a little shy at first โ give her a moment to settle in.
Left-click Foxy to open the AI chat popup
Right-click to open the context menu with all emotion controls
Drag her by left-clicking and holding to reposition anywhere on screen
She'll start following your active window automatically within a few seconds
Foxy always stays on top of other windows โ she'll never get buried
03
AI Chat Setup
Foxy can talk back using Claude, GPT-4, or a local Ollama model. Open clay_chat_popup.py and set your preferred provider:
# In clay_chat_popup.py โ set your API key
ANTHROPIC_API_KEY = "sk-ant-..." # Claude
OPENAI_API_KEY = "sk-..." # GPT-4
# Or use local Ollama (no API key needed)
OLLAMA_MODEL = "llama3"
OLLAMA_URL = "http://localhost:11434"
Ollama is free and runs locally โ recommended for privacy
Claude gives the most natural personality for Foxy
The chat popup remembers context within a session
Right-click โ "Ask PC Health" to let Foxy read your system stats aloud
04
Interactions
Foxy reacts to everything you do. Here's the full interaction map:
Typing โ Foxy plays the PAWING animation
Scrolling โ Foxy plays the CHORE animation
High CPU (85%+) โ Foxy cries until it drops
Low battery (20%) โ Foxy cries until plugged in
3 minutes idle โ Foxy curls up and sleeps
Active window changes โ Foxy walks to the new window
Right-click menu โ Manually trigger any emotion
05
Customisation
Foxy's behaviour is fully configurable at the top of omni_fox.py:
# Speed (ms per frame) โ lower = faster animations
self.anim_timer.start(125)
# Tracking speed (0.01 = slow, 0.15 = fast)
new_x = current_x + (target_x - current_x) * 0.08
# Idle sleep threshold (seconds)
if now - self.last_interaction_time > 180:
# Roaming interval (ticks at 60fps)
if self.roam_timer > 300:
Replace ultimate_fox_spritesheet.png with any compatible spritesheet
Add new ROW constants to expose custom animations in the context menu
The CELL_WIDTH/HEIGHT must match your spritesheet's frame dimensions exactly
06
Troubleshooting
Common issues and how to fix them:
Foxy doesn't appear โ Check that the spritesheet PNG is in the same folder
Window tracking doesn't work โ Windows only; ctypes needs Win32 API access
Chat popup is blank โ Check your API key in clay_chat_popup.py
Foxy freezes โ Reduce animation speed or increase the timer interval
High CPU from Foxy herself โ The tracking timer runs at 16ms; increase to 32ms if needed
pynput errors โ Run pip install --upgrade pynput
PyQt6 import error โ Run pip install PyQt6 --force-reinstall
โฆ โฆ โฆ
We're Here
Support & Contact
Foxy's team is small but quick. Reach us through any of these channels and we'll get back to you.