All plugins

hermes-arcade

A neon arcade cabinet inside the Hermes dashboard: three playable canvas games (Snake, Breakout, Pong) with glow effects, particle bursts, chiptune synth SFX and an attract mode that plays itself. Persistent top-10 leaderboards with arcade-style initials entry are served by a FastAPI backend plugin and shared with the agent: LLM tools (arcade_games, arcade_top_scores, arcade_player_stats) let Hermes answer questions about your scores. No env vars, no hooks, no middleware; scores are stored only under the plugin's own data dir. The dashboard CSS loads Google Fonts (Orbitron / Press Start 2P) from fonts.googleapis.com — the only third-party network call. Disclosure — the dashboard tab loads Google Fonts (Orbitron / Press Start 2P) from fonts.googleapis.com and fonts.gstatic.com, which sends your IP and user agent to Google each time the tab opens; scores are stored locally in <HERMES_HOME>/plugin-data/hermes-arcade/scores.json.

leoresendedop-sysWebv1.0.0Updated 2 hours ago

About

A neon arcade cabinet inside the Hermes dashboard: three playable canvas games (Snake, Breakout, Pong) with glow effects, particle bursts, chiptune synth SFX and an attract mode that plays itself. Persistent top-10 leaderboards with arcade-style initials entry are served by a FastAPI backend plugin and shared with the agent: LLM tools (arcade_games, arcade_top_scores, arcade_player_stats) let Hermes answer questions about your scores. No env vars, no hooks, no middleware; scores are stored only under the plugin's own data dir. The dashboard CSS loads Google Fonts (Orbitron / Press Start 2P) from fonts.googleapis.com — the only third-party network call. Disclosure — the dashboard tab loads Google Fonts (Orbitron / Press Start 2P) from fonts.googleapis.com and fonts.gstatic.com, which sends your IP and user agent to Google each time the tab opens; scores are stored locally in <HERMES_HOME>/plugin-data/hermes-arcade/scores.json.

šŸ•¹ļø Hermes Arcade

A neon arcade cabinet inside Hermes Agent. Three playable games in the
dashboard, a persistent high-score board with arcade-style initials entry,
and agent-facing tools so Hermes itself can answer "what's my high score?".

Games Stack

Games

| Game | How it plays | Scoring |
|------|--------------|---------|
| Neon Snake | Arrows/WASD. Speed ramps with every pellet. | 10 pts per pellet |
| Neon Breakout | Arrows or mouse. Ball angles off the paddle edges, speeds up per brick. 3 lives, levels regenerate faster. | 10–50 pts per brick, 250 bonus per level |
| Neon Pong | Arrows or mouse vs the machine, first to 7. | 100 per point, 500 win bonus |

Everything is hand-drawn on HTML5 canvas: glow trails, particle bursts,
screen shake, CRT scanlines, and a WebAudio chiptune synth for sound effects.
No game engine, no build step — one IIFE bundle.

Why it's more than a prompt

Hermes Arcade uses three plugin surfaces at once:

  1. Dashboard UI plugin (dashboard/manifest.json + dist/index.js) —
    the playable arcade tab, registered at /arcade.
  2. Dashboard backend plugin (dashboard/plugin_api.py) — FastAPI routes
    under /api/plugins/hermes-arcade/ that persist plays and scores.
  3. Agent plugin (plugin.yaml + __init__.py) — LLM-callable tools and
    a /arcade slash command.

Scores flow between the browser and the agent through a shared store
(store.py, JSON under $HERMES_HOME/plugin-data/hermes-arcade/), so the
agent can read the same leaderboard you just played on.

Agent tools

  • arcade_games — list the cabinet's games and how to open the arcade.
  • arcade_top_scores — top-10 leaderboard for one game or all of them.
  • arcade_player_stats — total plays, per-game champions, and optionally
    every leaderboard entry for a given player's initials.

Try asking Hermes: "how many times have I played pong and who's the snake champion?"

Install

cp -R hermes-arcade ~/.hermes/plugins/
hermes plugins enable hermes-arcade
hermes plugins doctor ~/.hermes/plugins/hermes-arcade   # optional sanity check

Then play:

hermes dashboard   # → open the "Arcade" tab

If the dashboard was already running, restart it (backend routes mount at
startup) or hit GET /api/dashboard/plugins/rescan for the tab alone.

Controls

  • Select a game with the cabinet buttons, ENTER to start.
  • In game: arrows / WASD / mouse (Breakout and Pong).
  • New high score? Enter your initials arcade-style:
    ▲▼ changes the letter, ā—„ā–ŗ changes the slot, ENTER locks it in.

Attract mode

The cabinet plays itself: click ā–¶ ATTRACT in the tab (or open
/arcade?attract=1) and it cycles Snake → Breakout → Pong with built-in
autopilots — perfect for demos and screen recordings. Attract runs never
touch the leaderboard or play counters.

Files

hermes-arcade/
ā”œā”€ā”€ plugin.yaml              # agent plugin manifest
ā”œā”€ā”€ __init__.py              # tool + slash command registration
ā”œā”€ā”€ schemas.py               # tool schemas (what the LLM sees)
ā”œā”€ā”€ tools.py                 # tool handlers (JSON in, JSON out)
ā”œā”€ā”€ store.py                 # shared score store (agent ⇄ dashboard)
└── dashboard/
    ā”œā”€ā”€ manifest.json        # dashboard tab registration
    ā”œā”€ā”€ plugin_api.py        # FastAPI routes for plays/scores
    └── dist/
        ā”œā”€ā”€ index.js         # the arcade (canvas games, no build step)
        └── style.css        # neon CRT styling

License

MIT

README from the reviewed commit 2daa7be; it updates when the author re-pins.

More by leoresendedop-sys

2 plugins by leoresendedop-sys in the catalog.

leoresendedop-sysgrokbot-staffA chief-of-staff and specialist team inside Hermes (chief, saas, design, vision-agents, computer-vision, x — or a team you configure), plus an optional fail-closed bridge that hands long-running work to your own Grok Bot. Local staff answers with your current Hermes model via ctx.llm. Slash commands /staff and /grokbot, a staff delegation backend for delegate_task, a bundled skill, and a Desktop pane for the roster, pending handoffs and recent jobs. The bridge does not call any Grok Bot API (there is none); it POSTs a JSON handoff to a webhook URL you set and/or writes handoffs/<id>.json in a folder you set, then collects results/<id>.json|.md|.txt or a pasted answer. Not an importer and not Grok Bot calling Hermes — Hermes delegating to Grok Bot. Disclosure — Answers staff tasks with your current Hermes model through ctx.llm whenever a staff tool or slash command runs. When grokbot_delegate runs, POSTs the task as JSON only to the webhook URL you configure (stored as the GROKBOT_STAFF_WEBHOOK_URL secret; https only, http allowed for localhost; redirects refused) and/or writes handoffs/<id>.json in the inbox folder you set, then reads results/<id>.json|.md|.txt from that folder (symlinks and files over 2 MB ignored) and returns that text to the agent. A specialist you map to a Hermes profile makes the `staff` delegation backend run delegated tasks as that profile, with its credentials. Job tasks, answers and collected results are stored in the plugin's own data folder. The Desktop pane polls a read-only /overview dashboard route every 10 seconds. No shell commands, no background processes, no telemetry.Communityautomation