Skip to main content

hermes-pokemon

❖ Communityv0.6.2

A cozy pixel-art companion garden for Hermes Desktop with three starters, nicknames, fetch, berries, XP, and optional evolution through all nine starter forms. The companion keeps you company on long turns, reacts quietly to failures and to what Hermes is doing, and lives through seasons, offline rainy days, wild visitors, keepsakes, and milestones. Independent fan project bundling CHUNSOFT Pokémon sprites and SpriteCollab community contributions; artwork is excluded from the source-code MIT license. Uses local plugin storage and read-only focused-session activity, with no runtime network requests, credentials, backend, or model calls.

Open in Hermes Desktop
hermes plugins install hermes-pokemon

Screenshots

README

From the reviewed commit 5c461d9 ↗; it updates when the author re-pins.

Hermes Pokémon · 0.6.2

A small pixel-art garden beside your Hermes conversation. Choose Bulbasaur, Charmander, or Squirtle, give it a nickname, and spend a little time together.

Hermes Pokémon garden in the browser preview

Browser preview with simulated Hermes events.

Install in Hermes Desktop

With Hermes 0.21.5 or later, install directly from this repository:

hermes plugins install sxuff/hermes-pokemon

Open Capabilities → Plugins, rescan if needed, and enable Hermes Pokémon. The repository includes a ready-to-run desktop bundle; users do not need Node.js. Drag the pane tab beside or beneath the conversation.

Alternatively, download the ZIP and matching SHA256 file from Releases. Extract its hermes-pokemon folder into:

$HERMES_HOME/desktop-plugins/hermes-pokemon/
  plugin.js
  README.md
  CREDITS.md
  LICENSE
  build-info.json
  docs/

HERMES_HOME defaults to ~/.hermes (%USERPROFILE%\.hermes on Windows). Run Reload desktop plugins from the command palette if needed. Use one install method: before switching from a manual ZIP install to the repository package, move the old desktop-plugins/hermes-pokemon folder elsewhere, because Hermes preserves hand-installed copies. Closing the only pane disables the plugin; re-enable it in Plugins.

The plugin uses the public Desktop Plugin SDK. All artwork is bundled; it needs no backend, credentials, model calls, or runtime network access.

Controls

  • Choose a starter, optionally enter a nickname, then select Meet your companion.
  • Click the Pokémon (or Pet) for hearts. Pet it a few times in a row for a happier reaction. Petting a napping Pokémon wakes it gently first.
  • Click the grass to call it over. Click the tree, pond or flowers to investigate together, with a different little reaction from each starter.
  • Ball throws a Poké Ball. It bounces and rolls; your Pokémon chases it, carries it back, then pauses proudly to present it.
  • Berry drops an Oran Berry nearby; your Pokémon looks up in anticipation, nods, walks over and eats it.
  • Settings: rename, change starter, reset position, garden light (follow your clock, or pin dawn/day/dusk/night), season, weather, and extra quiet motion. System reduced motion is always respected. Escape closes settings.

Life in the garden

Each starter has its own routine on top of wandering, napping (lie down → sleep → wake and stretch), playing (spins, hops, a visiting butterfly) and sniffing the flower bed:

  • Bulbasaur sits in the shade of the old tree, looking up at the leaves, and sometimes tends the flower bed.
  • Charmander takes a deep breath in the sunny patch and lies down to bask, with a little ritual to warm its paws. At dusk and night its tail flame lights up the grass.
  • Squirtle sits on the bank watching the ripples, makes a few ripples of its own, and sometimes hops in for a paddle around the pond.

Return after at least one minute away and your companion walks over for a heart and a happy hop. Welcomes have a five-minute cooldown, skip the first visit, and wait for ongoing play to finish. With reduced motion, the greeting stays in place.

When things are quiet, your companion sometimes carries a ball over and rolls it toward you: a small invitation to play. Press Ball for a game, or let it return to its own routine. Reduced motion keeps these autonomous invitations off and turns garden investigations into a glance in place.

The garden itself moves: clouds drift, the pond shimmers and ripples (watch for the fish), reeds and grass sway, leaves fall from the tree, and fireflies come out at night.

Seasons. The garden follows the calendar: blossoms in spring, fireflies in summer, orange leaves that fall and float on the pond in autumn, and gentle snow and frost in winter. Each starter has one seasonal habit: Bulbasaur watches blossoms drift down in spring, Charmander warms itself by its own tail flame in winter, and Squirtle watches leaves (autumn) or snowflakes (winter) settle on the pond. Settings can pin a season or switch to Southern Hemisphere seasons, since a device clock can't tell which hemisphere you're in.

Keepsakes. When you explore the tree, pond or flowers together, your companion sometimes finds something small, like a smooth pebble, a red maple leaf or a snowdrop, and keeps it. There are 13 to find, some only in certain seasons. Settings shows the collection. Each is found once, and nothing needs looking after. Choose Place on up to four of them to set them out in the garden; your companion sometimes wanders over to check on one.

Milestones. Day 30, day 100 and every yearly anniversary get a small celebration, and Settings shows how many days you've been together. Each is celebrated once, only near the day itself, so returning after a long break never replays old ones. Saves from earlier versions start counting from the upgrade.

Showers. On some days a few short showers pass through, 3 to 6 minutes each, fading in and out. They're picked from the date, so no weather service is needed; winter has its snow instead. Squirtle splashes about in the meadow, Charmander shelters under the tree to keep its flame dry, and Bulbasaur turns its bulb up to the rain, then shakes off. Settings can choose Natural, Clear or Rain.

More ways to move. Pounces that sometimes end in a tumble, rolls in the grass, a curled-up sleep pose, a power-up before a big cheer, Charmander scuffing the ground and Squirtle ducking into its shell when a visitor surprises it. Routines never repeat back to back and their pacing changes each time. Evolved forms without one of these sheets reuse their own nearest move.

Late nights. Between 1am and 5am your companion gets sleepy: slow yawns, heavy nods and more naps. Keeping you company through a long turn that late, it may doze off right beside you. Work cues let it sleep; a finished turn wakes it to cheer.

Wild visitors. Every few minutes a wild Pokémon may stop by: a Pidgey lands by the fence, a Caterpie inches along the flower bed, a Magikarp surfaces in the pond, or a Hoothoot comes out at night. Each suits its season and time of day, none come in the rain, and your companion turns to watch. Visitors are just passing through; there is still one companion.

Your rhythm. Your companion learns when you usually arrive. After the same time of day on three different days, it's already waiting for you in its favorite spot when you come back then, instead of walking over. Settings shows the usual times it has learned.

Each starter quietly remembers a favorite resting spot learned from your interactions, the last thing you did together, its keepsakes, and your usual arrival times. It returns to that spot on a later visit and uses it for naps. Settings shows these small memories; there are no hunger meters or chores.

Species, nickname, motion, garden light, season, hemisphere, weather, per-species memories (including placed keepsakes and days together) and growth persist across reloads. Older saves migrate automatically. Exact position and transient reactions are not saved.

XP & evolution

Start at level 5 and earn 30 XP per level, up to level 50. The growth strip below the controls shows your current form, level and XP. Each starter keeps its own progress when you switch companions.

Time together or activity XP Reward frequency
Visible garden while Hermes has focus 3 Every active minute
Pet 2 Once per 30 seconds
Throw ball 8 Once per minute
Give berry 5 Once per minute
Call over or investigate scenery 2 Shared 30-second cooldown

Activities stay playable during their XP cooldown. Autonomous behavior and Hermes messages do not award interaction XP. Hidden, unfocused and offline time earns no XP; nothing decays while you are away. Reloading preserves cooldowns and partial active minutes.

Starter First evolution Final evolution
Bulbasaur Ivysaur · level 16 Venusaur · level 32
Charmander Charmeleon · level 16 Charizard · level 36
Squirtle Wartortle · level 16 Blastoise · level 36

Evolution is optional. When ready, choose the evolution offer, preview the next form, and confirm—or choose Not now. Your companion finishes its current activity before evolving. The short transition has no flashing effect and becomes a still cue with reduced motion. Nickname, XP and memories carry over. You can keep a form indefinitely and keep leveling; each evolution is a separate choice. Reset position never resets growth.

All nine forms, and the four wild visitors (Idle, Walk and Hop only), use bundled real sprite sheets. Some evolved forms have fewer source poses and reuse their own idle pose for unavailable gestures; see CREDITS.md for exact mappings.

The preview's Simulate a level and Preview evolution buttons let you try growth immediately. These controls exist only in the browser demo and never change your Hermes save.

Browser preview & development

For development, use Node.js 22+:

npm ci
npm run build
npm test
npm run package
npm run demo

Open the local preview. It loads the actual built plugin with a simulated SDK and explicitly labeled simulated events, including a simulated return to preview the welcome, a Long turn (the preview clock jumps three minutes into a running turn) and a Failed turn, simulated Web search, Terminal and Writing files tool calls, and a Wild visitor. Seasons and weather can be pinned from Settings. Its localStorage is separate from Hermes plugin storage. Resize the pane, dock it beneath, switch themes, hide it, or reload it. npm run install:plugin installs the build into your local Hermes plugin directory, backing up an existing plugin.js first.

npm run build updates the committed desktop/plugin.js and the disk-install folder. npm run package verifies the bundle checksum and creates release/hermes-pokemon-0.6.2.zip with a matching .sha256 file. The package uses plugin.yaml + desktop/plugin.js; source structure, storage and release details are in docs/SDK.md.

Hermes awareness & compatibility

  • Working: your Pokémon turns to you, nods, and shows a “…” bubble.
  • Completed: a successful turn gets a hop, a pose and a little confetti.
  • Long turns: when Hermes has been working for 3 minutes or more, your Pokémon stops wandering and sits beside you, keeping the “…” bubble while it waits with you. When that long turn finishes, it gets a bigger reaction: a stretch, two hops and extra sparkle.
  • Failed turns: an error or a turn you stop gets a quiet look and a small nod, with no bubble and no confetti. After two errors in a row, it brings you the ball, a small invitation to take a break (at most once every 10 minutes; never with reduced motion; your Stop never counts as an error).
  • What Hermes is doing: when Hermes starts a web search or browser tool, your Pokémon looks out over the fence; a terminal command gets a curious head tilt; writing or patching files gets a little dig in the grass. Only the tool's name is read, never its arguments or results; other tools get no reaction, and reactions are at least 20 seconds apart because agents call tools in bursts.
  • Waiting: a focused clarify tool call gets a “?” bubble. Other kinds of pending input may not be detectable.
  • Cues never cancel a fetch, a berry, a pet or a nap (a napping Pokémon just shows the bubble). Keeping company and the break offer wait until play finishes. Missing activity APIs leave the garden fully usable.
  • Animation pauses while hidden. Narrow panes, light/dark themes, reduced motion and clean disable/reload are supported.

Verification

See docs/VERIFICATION.md for completed checks and remaining limits. Browser simulation and native Hermes checks are recorded separately; the hero image above is a browser preview.

This is an independent fan project. Original code is MIT-licensed; bundled Mystery Dungeon artwork is excluded from that license. See CREDITS.md for sources, rights and asset replacement. Battles, trading, multiple pets and additional habitats are left for later.

hermes-town❖ Community★ 9

Local pixel-art town where every Hermes session is a resident and every tool call walks to a building. Passive lifecycle bridge to a loopback-only server; prompts, arguments, and output never leave the process. Disclosure — version 0.3.0 bundles the Town Node server and a prebuilt browser app inside the plugin directory and adds a hermes town setup/start/status/stop/open command tree. Nothing is downloaded and no npm install runs at any point; node (^20.19 or >=22.12) must already be installed and is launched only by the explicit hermes town start command, bound to 127.0.0.1 only. Runtime state, a 0600 bridge token, a bounded event journal and rotated server logs are written under HERMES_HOME/hermes-town/runtime/. On start the server also reads HERMES_HOME/cron/jobs.json (job id and enabled flag only) to place one resident per enabled scheduled job.

Tools
hermes-workbench❖ Community★ 9

The Hermes desktop app in your browser. `hermes workbench` serves the desktop interface through the Hermes dashboard, for headless servers, VPSes and tablets. Disclosure — community plugin, not a Nous product. On the first `hermes workbench` run and again after each Hermes update it runs `npm install --ignore-scripts` (guided by Hermes's lockfile) and Vite against your Hermes checkout's desktop sources, writing only under ~/.hermes/hermes-workbench and its own plugin dir (the checkout is only read), and starts `hermes dashboard` on loopback when none is running.

Desktop
hermes-codex-resets❖ Community★ 0

Know the moment OpenAI resets your Codex usage limits. A status-bar chip counts the time since the last reset; when a new one lands, a small card rises out of it (chip-only while you type), with a history page of every reset. Disclosure — polls the public codex-resets.com API every 60 s and loads fonts from Google Fonts; sends nothing about you or your sessions.

Desktop

← Back to the catalog · catalog built Oct 7, 2026