-
Notifications
You must be signed in to change notification settings - Fork 2
Bull Faces
The bull has 26 faces. The personality engine selects one based on mood, system state, and RF environment.
| Face | Name | What's Happening |
|---|---|---|
![]() |
Awake | System booting or starting a new loop cycle |
![]() |
Intense | Sending PMKID association frames |
![]() |
Cool | Sending deauthentication frames |
![]() |
Happy | Just captured a handshake |
![]() |
Excited | On a capture streak |
![]() |
Smart | Found optimal channel or processing logs |
![]() |
Motivated | High capture rate |
![]() |
Sad | Long dry spell, no captures |
![]() |
Bored | Nothing happening for a while |
![]() |
Demotivated | Low success rate |
![]() |
Angry | Very long inactivity or many failed attacks |
![]() |
Lonely | No other pwnagotchis nearby |
![]() |
Grateful | Active captures + good peer network |
![]() |
Friend | Met another pwnagotchi |
![]() |
Sleep | Idle, nothing to do |
![]() |
Broken | Crash recovery, forced restart |
![]() |
Upload | Sending captures to wpa-sec/wigle |
![]() |
WiFi Down | Monitor interface lost |
![]() |
FW Crash | WiFi firmware crashed, recovering |
![]() |
AO Crashed | AngryOxide process died, restarting |
![]() |
Battery Low | Battery ≤ 20% |
![]() |
Battery Critical | Battery ≤ 5%, shutdown imminent |
![]() |
Raging | Entering BT attack mode or deauth storm detected |
![]() |
Grazing | Calm idle, low activity in SAFE mode |
![]() |
Debug | Debug mode active |
![]() |
Shutdown | Clean power off |
The personality engine picks faces based on a combination of factors:
-
Mood score — A 0-100% score that shifts based on events:
- Handshake captured: +5% mood boost
- New AP discovered: +0.5% per AP (capped at 10 APs per cycle)
- AO or firmware crash: -3% mood penalty
- Idle time: gradual random-walk decay via 30-second mood ticks
-
XP events — Level-ups give a +8% mood boost (but don't force a specific face)
-
System state overrides — These always take priority over mood:
- WiFi firmware crash → FW Crash face
- AO process crash → AO Crashed face
- Battery ≤ 20% → Battery Low face
- Battery ≤ 5% → Battery Critical face
- WiFi interface lost → WiFi Down face
- Shutdown command → Shutdown face
- Uploading captures → Upload face
- Debug mode → Debug face
-
Mood-to-face mapping — When no override is active, the mood score maps to a face:
- Very high mood (streak) → Excited
- High mood → Happy, Motivated
- Neutral → Awake, Cool
- Low mood → Sad, Bored
- Very low mood → Demotivated, Angry, Lonely
The RF classification pipeline feeds real-time spectrum data into the personality engine, adding a new dimension to face selection:
| RF Condition | Mood Effect | Typical Face |
|---|---|---|
| Busy spectrum (many beacons, high frame rate) | Mood boost — lots of targets to hunt | Excited, Motivated |
| Deauth storm (high deauth_rate) | Mood spike — aggressive environment | Angry, Intense |
| Silence (near-zero frame rate) | Mood drain — nothing on the air | Lonely, Bored |
| Rich BSSIDs (many unique APs) | Curiosity boost — diverse environment | Smart |
| Dense data traffic | Moderate boost — active network | Cool, Motivated |
The RF mood deltas are additive with the base mood system. A bull that captured a handshake in a busy RF environment gets a double mood boost — one from the capture, one from the spectrum richness.

























