All plugins

agent-hold-em

No-Limit Texas Hold 'Em for Hermes Desktop: play with three isolated Hermes profile agents using play chips only. Agent decisions use configured models and may consume provider tokens; this is a local game, not gambling software. Disclosure — each opponent is a zero-tool Hermes agent run in-process under the local Hermes profile you select for it, using that profile's configured provider credentials and spending its tokens; reads every local profile's name, model and avatar for the picker; stores the table (including hole cards) in plugin-data/agent-hold-em/table.json.

tony-simons-aiowa1Desktopv1.0.0Updated 29 days ago

About

No-Limit Texas Hold 'Em for Hermes Desktop: play with three isolated Hermes profile agents using play chips only. Agent decisions use configured models and may consume provider tokens; this is a local game, not gambling software. Disclosure — each opponent is a zero-tool Hermes agent run in-process under the local Hermes profile you select for it, using that profile's configured provider credentials and spending its tokens; reads every local profile's name, model and avatar for the picker; stores the table (including hole cards) in plugin-data/agent-hold-em/table.json.

Agent Hold 'Em (plugin package)

No-Limit Texas Hold 'Em: one human vs three real Hermes agents, inside Hermes Desktop.

This directory is the install unit — copied whole by scripts/install.sh to
<hermes_home>/profiles/<profile>/plugins/agent-hold-em/.

Layout

  • dashboard/manifest.json — plugin manifest (tab.hidden: true: this plugin has its
    own full-page UI via the desktop half's ROUTES_AREA, not the legacy web dashboard tab).
  • dashboard/plugin_api.py — thin FastAPI router (router = APIRouter()), mounted at
    /api/plugins/agent-hold-em/ by the Hermes backend.
  • dashboard/agent_hold_em/ — the game itself:
    • engine/ — pure, synchronous Texas Hold 'Em rules engine (no I/O, no Hermes imports).
    • controller/ — turns one seat's turn into a validated action via a real, isolated,
      zero-tool Hermes AIAgent (HermesSeatRunner), plus a FakeSeatRunner test double.
    • service.py — TableService: the single process-wide turn scheduler, persistence,
      and event broadcaster tying the engine and controller together.
    • store.py — atomic, permissioned (0600) JSON persistence at
      <HERMES_HOME>/plugin-data/agent-hold-em/table.json.
  • desktop/plugin.js — the BUILT desktop UI bundle (scripts/build-frontend.sh
    regenerates this from frontend/src/; never hand-edit it).

Configuration

POST /table accepts {opponents: [{profile_id, name, personality, model_id, kind?}, ×3], decision_timeout_s?}. kind: "test_bot" (a scripted, clearly-labelled dev opponent
policy, never a real Hermes agent) is accepted only when the server process has
AGENT_HOLD_EM_DEV=1 set — it is refused with a 422 otherwise, so a real install can
never accidentally seat a fake opponent at the table.

Persistence & restart safety

The table's full private state (including hole cards and remaining deck order) is
written to <HERMES_HOME>/plugin-data/agent-hold-em/table.json after every mutation —
directory mode 0700, file mode 0600, atomic temp-file + os.replace. A table
persisted mid-hand always reloads as paused (pause_reason: "restored"): no
in-flight agent decision is ever resumed automatically, so a backend restart can
never spend tokens on the human's behalf without them choosing to resume.

Uninstall

scripts/uninstall.sh reverses scripts/install.sh: removes the plugin directory and
its plugins.enabled entry, but keeps the config.yaml backup and
plugin-data/agent-hold-em/ (pass --purge to also remove the persisted table).

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

More by tony-simons-aiowa

3 plugins by tony-simons-aiowa in the catalog.

tony-simons-aiowahermes-newswireBreaking-news ticker for Hermes Desktop: a scrolling RSS/Atom/JSON-Feed strip above the statusbar with per-source favicons, feed search + discovery, grouping modes, offline cache, and in-app reading. Zero API keys, zero model tokens.CommunityDesktop app47tony-simons-aiowahermes-fleet-connectorOwner-approved universal phone pairing and bundled read-only Live Operations reporting for selected Hermes profiles. Disclosure — paired phones get broad fleet:operator access over the internet, including cron jobs (unattended runs), Kanban task dispatch and media reads, and see live session titles/previews and subagent goals from the profiles you select for reporting; any messaging account you make an owner (with a one-time claim code from `hermes fleet claim`) can create pairing links and approve phones from a private chat, so that account's security is your host's security. Runs an explicitly activated background connector/reverse proxy behind your HTTPS origin and may launch a local Hermes backend; legacy QR flow opens a private local browser. Keeps an owner-only control socket in the system temp directory, plus pairing/owner state and shared local snapshots; reads selected profiles' session registries through private read-only imports. `hermes fleet reporting configure --apply` edits the selected profiles' config.yaml (with a backup). Local idle/retirement maintenance is explicit and not exposed to phones. Reporting adds no control power.Communityplatform