Skip to main content

my-github

❖ Communityv1.2.5★ 1

Desktop and dashboard plugin: statusbar chip, palette command, and dashboard tab listing your GitHub repos (public + private) via the gh CLI.

Open in Hermes Desktop
hermes plugins install my-github

README

From the reviewed commit 639f0cf ↗; it updates when the author re-pins.

My GitHub — Hermes Dashboard Plugin

A dashboard plugin for Hermes Agent that lists and opens your GitHub repositories (public + private) via the gh CLI.

Features

  • Full repo list — paginates up to 500 repos owned by your account
  • Summary stats — total repos, stars, open issues, forks
  • Search & filter — fuzzy search by name/description/language; filter by visibility (all/public/private)
  • Sort — by last pushed (default), stars, forks, creation date, or name
  • Theme-aware — uses CSS variables, reskins with your active dashboard theme
  • 60-second cache — avoids hammering the gh API on every render

Prerequisites

Installation

Install the complete package from the repository (catalog submission is pending):

hermes plugins install tomekdot/hermes-my-github-plugin --enable

For a reproducible install, append --ref <full-40-character-commit-SHA>. Restart the dashboard/gateway if it is already running. Enable the desktop half in Settings → Plugins to show the statusbar chip and the GitHub: View repositories palette command. The dashboard also provides a My GitHub tab.

Package layout:

plugin.yaml
desktop/
└── plugin.js
dashboard/
├── dist/
│   ├── index.js
│   └── style.css
├── manifest.json
└── plugin_api.py
tests/
└── test_utf8_decoding.py

Keep both desktop/ and dashboard/: the desktop UI uses the dashboard backend. No self-updater is included. Catalog updates require a reviewed SHA-bump PR.

Validate a checkout with hermes plugins validate ..

How it works

The backend shells out to gh api (reusing your existing OAuth token) — no personal access token to manage. Two endpoints:

  • /api/plugins/my-github/repos — list of all repos
  • /api/plugins/my-github/summary — aggregated stats

The frontend renders a searchable, filterable table using React primitives from the Hermes plugin SDK.

Encoding

Hermes Desktop launches the backend with python -I, which ignores PYTHONUTF8 and PYTHONIOENCODING. Inside that process locale.getpreferredencoding() is the Windows ANSI code page — cp1250 on a Polish install, cp1252 on a Western one. Every subprocess.run that reads a UTF-8 stream therefore passes encoding="utf-8" (plus errors="replace") explicitly. Without it, gh's UTF-8 JSON is decoded through the code page and repo descriptions come out as mojibake: Koło → KoĹ‚o, — → â€.

Run the regression test the way the backend runs:

python -I tests/test_utf8_decoding.py

Section 1 is offline. Section 2 exercises the live HTTP response and is skipped when gh is not authenticated or fastapi is unavailable.

License

MIT

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