Native macOS · Menu bar app · Fan project

Your desktop, with company.

PokéPets puts a Pokémon on your Mac. It walks the Dock, climbs the files on your desktop, gets hungry, grows up and evolves. Ask nicely and it deletes things for you, into the Trash, with an attack.

2
lines to raise
0
dependencies
Trash
never erase

A sample desktop

Pick a Pokémon, then ask it for something. Same sprites and the same move list as the app. Everything is unlocked here; in the app, moves come with levels.

Web sample · not the app
Gengar · out on the desktop Gengar is hanging about
Pichu line
Gastly line
? ? ? ?
Its own moves · Ghost / Poison
Everyday
Files on the sample desktop
    Transcript (everything it did and said)
      The shortcut you already use

      Deleting a file, with a safety net.

      In Finder, ⌥⌘⌫ is Delete Immediately. No Trash, no undo. PokéPets takes over that one shortcut (only while Finder is in front) so the same keys do something better.

      Without it

      Delete Immediately

      1. Select a file in Finder
      2. Press ⌥⌘⌫
      3. Gone. Not in the Trash

      Nothing to put back.

      With a Pokémon out

      Zapped, then Trashed

      1. Select a file in Finder
      2. Press ⌥⌘⌫, or ⌥-drag it onto the Pokémon
      3. Pikachu Thunderbolts it. Gengar swallows it whole
      4. It lands in the Trash. You can still put it back
      Meet the party

      Two lines to raise. Four more on the way.

      You raise one line at a time. Every Pokémon starts as an Egg in the menu bar dial. Click it and it hatches; the one already out goes back into its ball.

      #172 → #25 → #26

      The Pichu line Electric

      • Eggmenu bar dial
      Ability
      Lightning Rod soaks up the charger. Alolan Raichu has Surge Surfer and surfs fast laps while you charge.
      Climbs
      Hops the Dock and desktop files. With Quick Attack it leaps big heights, trailing sparks.
      Deletes with
      Thunder Shock, then Thunderbolt. Bolt from its body to the file's icon.
      Odd one out
      Alolan Raichu rides its tail on psychic power: it never falls, it drifts.
      #92 → #93 → #94

      The Gastly line Ghost / Poison

      • Eggmenu bar dial
      Ability
      Levitate. It is never stuck to the floor: it flies anywhere on your screen and never falls when you drop it.
      Haunts
      Sinks into your front window and peeks out, licks your screen, pops its head up near your cursor.
      Deletes with
      Shadow Ball. It charges one, throws it, and the file is sucked in. The wisp left over floats back to be eaten.
      After dark
      From 7 pm to 6 am, or whenever your Mac is in dark mode: a purple glow and extra mischief.
      TyphlosionFire · planned
      PidgeotFlying · planned
      AlakazamPsychic · planned
      LaprasWater · planned
      Gengar, up to no good

      Ask for the shadow clones.

      Each of these is a real routine from the app, played here with the app's sprites and its own pixel effects. Hit one and Gengar goes and does it on the sample desktop above.

      Day to day

      What they get up to while you work.

      They roam

      Along the bottom of the screen, up onto the Dock, across the icons on your desktop. They come over when your cursor does, and stay behind full-screen windows, videos and YouTube. The overlay is click-through: it only catches the mouse when you are actually over a Pokémon.

      They need things

      Hungry about every half hour; drag a berry onto it. Real EXP curves from Lv 1 to 100, friendship from 0 to 255, 25 natures, a 1 in 4096 shiny roll. Leave it alone for 20 minutes and it sulks. Drop it from a height and it cries.

      They notice your Mac

      Charger, battery, heat, Wi-Fi, your camera, music, and you stepping away for five minutes. At 5% battery it faints until you plug in. Camera on, it goes back in its ball for your call.

      They tidy up

      The Downloads guard spots files over 500 MB, duplicate copies and installers you are done with, then offers Delete or Keep right in the notification. Once per file, and it never touches anything without a yes.

      You stay in charge

      It asks. You decide.

      A pet that evolves or deletes things on its own would be a worse pet. Two places where it waits for you:

      Evolving

      1. Eggwaiting in the dial
      2. Hatcheswhen you click it
      3. GrowsEXP from your company, not battles
      4. Asks to evolvea notification: Evolve or Not Now
      5. Evolvesor asks again next level

      Deleting

      1. On the desktopyou select it
      2. You ask⌥⌘⌫ or ⌥-drag, never on its own
      3. ZappedThunderbolt or Shadow Ball
      4. In the Trashnever erased
      5. Put backwhenever you like
      Using it · scripting it · hacking on it

      Same app, three ways in.

      Do thisTo get this
      Click the Poké Ball in the menu barOpen the party dial: send out or recall, check stats, grab berries and evolution items. Right-click for Settings and Quit.
      Drag a berry onto your PokémonFeed it. Each one has a favourite and a berry it dislikes.
      Hover over itPet it. Hearts, and friendship if it is warming to you. Shy natures keep their distance at first.
      Drag it about, swing it, let goPick it up, make it dizzy, drop it.
      Select files in Finder, press ⌥⌘⌫It deletes them into the Trash, with a move.
      Drag a Thunder Stone or Linking Cord onto itEvolve it, once it is ready.
      Price: free · not for sale

      Install it in one line.

      Paste it into Terminal. It downloads PokéPets, checks the file against its published SHA-256, copies it into Applications and opens it. Needs macOS 14 (Sonoma) or later; Apple silicon and Intel Macs both work.

      curl -fsSL https://raw.githubusercontent.com/YashTygi/PokePets/main/docs/install.sh | sh
      What it does
      1. Downloads PokePets.dmg and its checksum from this repository.
      2. Stops if the SHA-256 doesn't match. Nothing is installed.
      3. Copies PokePets.app into /Applications (into ~/Applications if that isn't writable). An older copy is replaced; your Pokémon are kept.
      4. Clears macOS's "downloaded from the internet" mark, so there is no warning, and opens it.

      No sudo, no shell or login-item edits. It is about 80 lines: read it first.

      Why there is no warning

      macOS stops anything a browser downloads that Apple hasn't notarized (notarizing costs $99 a year, and PokéPets is free). A file fetched with curl never gets that mark. The warning is the only thing skipped; the checksum is the check that remains.

      Remove it again
      curl -fsSL https://raw.githubusercontent.com/YashTygi/PokePets/main/docs/uninstall.sh | sh

      Moves the app to the Trash and keeps your Pokémon. Add -s -- --purge after sh to remove them too.

      What it asks of your Mac

      Every permission is optional, and each one is asked for once, with the reason, by the welcome guide.

      PermissionWhat it is forIf you say no
      NotificationsLevel-ups, hunger, evolution prompts, the Downloads guardThey stay quiet; captions still show
      Automation → FinderFinds your desktop files so it can climb themNo file climbing
      Automation → your browserNotices a YouTube video so it stays out of the wayIt will not hide for YouTube in that browser
      AccessibilityAims the Thunderbolt at the file's exact iconFiles still go to the Trash, aimed less precisely
      Files & Folders → DownloadsThe Downloads guardThe guard stays off

      Downloading the DMG: one extra step

      PokéPets is free, so it isn't notarized by Apple (that costs $99 a year). The first time you open the download, macOS stops it once. Here is how to let it through. It takes about 30 seconds.

      Want to skip all of this? Paste this into Terminal instead. It checks the download and installs PokéPets with no prompts.
      curl -fsSL https://raw.githubusercontent.com/YashTygi/PokePets/main/docs/install.sh | sh
      Questions

      The honest answers.

      Can it delete something I wanted to keep?

      It only deletes what you point it at (select files in Finder and press ⌥⌘⌫, or ⌥-drop them on it) or what you say yes to in a Downloads guard notification. Every delete goes to the Trash, never erased, so you can put it back. While the delete move is on, PokéPets takes over only the ⌥⌘⌫ shortcut, and only while Finder is in front. You can switch the move off in Settings.

      Why does it want Accessibility?

      Only to see where Finder draws a file's icon, so the Thunderbolt or Shadow Ball lands on it. Without it, deleting still works, just aimed less precisely. It is optional and the app explains it before asking.

      Will it eat my battery?

      It is built not to: no per-frame loop, one see-through window, sensors that wake it only when something changes (the charger, Wi-Fi, heat, a file landing in Downloads). Two small timers do run: an idle check every 20 seconds, and, while it is allowed to walk over your apps, a look every 2 seconds at whether the front app is full screen. I have not published CPU or memory measurements yet, so I am not going to put a number on it.

      Does it work on more than one display?

      Not yet. Today the Pokémon live on your main display.

      Where is the download?

      Use the one-line Terminal install, or download PokePets.dmg (about 7 MB, Apple silicon and Intel). Both are in this repository, and the script checks the DMG's SHA-256 before it installs anything. Details are in Install.

      Why does macOS say it can't verify PokéPets?

      Apple only waves through apps it has notarized, and notarizing needs a paid developer account ($99 a year). PokéPets is free, so a DMG you download in a browser is stopped once. Click Done (not Move to Bin), then open System Settings → Privacy & Security, scroll to Security and click Open Anyway. The steps are on the DMG tab. The one-line install avoids the prompt, because curl downloads aren't marked.

      Is it safe to paste that into Terminal?

      It is a sensible thing to ask. install.sh is short enough to read in a couple of minutes. It downloads two files from this repository, refuses to continue unless the SHA-256 matches, copies the app to Applications, clears macOS's downloaded-from-the-internet mark from that copy, and opens it. It never uses sudo and doesn't touch your shell settings. The app itself is open source in the same repository, so you can build it yourself instead.

      How do I uninstall it?

      Paste curl -fsSL https://raw.githubusercontent.com/YashTygi/PokePets/main/docs/uninstall.sh | sh into Terminal. It quits PokéPets and moves the app to the Trash, and keeps your Pokémon so a reinstall brings them back. Add -s -- --purge after sh to remove their save and settings and reset the permissions you gave it. Or just drag PokePets from Applications to the Trash.

      When do Typhlosion, Pidgeot, Alakazam and Lapras arrive?

      They already have slots in the party screen and are planned, but nothing is built. The two lines here are finished enough to live with, and I would rather get them right first.

      Does it phone home?

      No. The app makes no network requests, has no account and no analytics. The Pokémon data (learnsets, growth rates, natures, Pokédex text) is baked in, and your party is saved in your Mac's own settings.

      Is this official?

      No. Pokémon and its characters belong to Nintendo, Creatures Inc. and GAME FREAK inc. PokéPets is an unofficial, non-commercial fan project, not affiliated with or endorsed by them, and it is not for sale. Some of the sprites are CC BY-NC 4.0, so keep it that way if you fork it.

      Is the sample above the real app?

      It is the real sprites, move lists, lines and pixel effects, rebuilt for the browser so you can poke at them. The app itself runs on your actual desktop, with real files and real sensors. The charger, battery and Wi-Fi in the sample are pretend.