All plugins

wireguard

Read-only status and peer list for a WireGuard server running on the same Windows machine as Hermes. Two tools: vpn_status (service state, tunnel address and port, server public key, per-peer handshake and transfer) and vpn_peers (the peer list only). The plugin runs only wg.exe show, sc.exe query, and one PowerShell adapter lookup; it never changes the tunnel and never reads the tunnel configuration file or any private key material. Windows only (WireGuard for Windows). Disclosure — runs local wg.exe show, sc.exe query and one PowerShell Get-NetIPAddress lookup (read-only, never touches the tunnel config or private key); tool results put peer public keys, allowed IPs and peer endpoint IP addresses into the conversation sent to your model provider.

lEWFkRADToolsv0.1.0Updated 15 days ago

About

Read-only status and peer list for a WireGuard server running on the same Windows machine as Hermes. Two tools: vpn_status (service state, tunnel address and port, server public key, per-peer handshake and transfer) and vpn_peers (the peer list only). The plugin runs only wg.exe show, sc.exe query, and one PowerShell adapter lookup; it never changes the tunnel and never reads the tunnel configuration file or any private key material. Windows only (WireGuard for Windows). Disclosure — runs local wg.exe show, sc.exe query and one PowerShell Get-NetIPAddress lookup (read-only, never touches the tunnel config or private key); tool results put peer public keys, allowed IPs and peer endpoint IP addresses into the conversation sent to your model provider.

banner

wireguard — a Hermes plugin for a local WireGuard server

Read-only status and peer list for a WireGuard server running on the
same Windows machine as Hermes. The plugin asks wg.exe what the
tunnel is doing and reports it. It never changes anything.

What it does

Two tools, both read-only:

  • vpn_status — the full picture: the tunnel service state
    (Running / Stopped / NotFound), the tunnel name, its IPv4
    address/prefix, its listen port, the server public key, and one
    entry per peer with allowed IPs, latest handshake (or never), and
    transfer totals in bytes.
  • vpn_peers — just the peer list, for a quick "who is on the
    VPN / who has keys" answer.

A peer whose handshake reads never has not connected since the
tunnel started (or ever), and its transfer totals come back null.

Requirements

  • Windows, with WireGuard for Windows installed (the plugin shells
    out to wg.exe, sc.exe, and one PowerShell adapter lookup).
  • Hermes 0.21.3 or later.
  • The tunnel's Windows service is the one WireGuard creates for a
    tunnel, named WireGuardTunnel$<tunnel>.

Install

  1. Copy the wireguard folder into your Hermes plugins directory
    (for example %LOCALAPPDATA%\hermes\plugins\wireguard).

  2. Add wireguard to the plugins.enabled list in your Hermes
    config.yaml:

    plugins:
      enabled:
        - wireguard
    
  3. Restart Hermes. The two tools appear alongside the built-in tools.

With no further configuration, the plugin finds the tunnel on its
own when the machine has exactly one WireGuard interface: it runs
wg show interfaces and uses the single result. If the machine has
zero interfaces, or more than one, the tools return a structured
error saying so instead of guessing.

Configuration (optional)

Settings live in a top-level wireguard: section of config.yaml.
Every key is optional:

wireguard:
  # Tunnel (interface) name. Set this when the machine has more than
  # one tunnel, or to pin the answer to one tunnel.
  tunnel: "example-tunnel"
  # Path to wg.exe. Default: "C:\Program Files\WireGuard\wg.exe"
  wg_path: "C:\\Program Files\\WireGuard\\wg.exe"
  # Windows service to query for state. Default: derived from the
  # tunnel as "WireGuardTunnel$<tunnel>".
  service_name: "WireGuardTunnel$example-tunnel"
  # Seconds before any single wg/sc/PowerShell call is given up on.
  # Default: 15
  timeout_seconds: 15

Security

  • The plugin never opens the tunnel configuration file and never asks
    wg for private key material. Plain wg show prints the interface
    private key as (hidden), and that is the only form the plugin
    calls.
  • Tool output carries public keys and IP addresses only. Both are
    identifiers the VPN itself exchanges in the clear during handshakes.
  • There is no mutating surface at all: no service start or stop, no
    config writes, no peer changes. The worst a bug can do is produce a
    wrong status answer.
  • Handlers return structured JSON results (including coded failures
    such as wg_exe_missing, no_tunnel, and tunnel_ambiguous) and
    never raise into the agent loop.

Scope of v1

Reporting only. Adding or removing peers, generating client
configurations, and starting or stopping the tunnel are deliberately
out of scope: changing who can reach a network is a perimeter change
and belongs behind an explicit human decision, not a chat tool.

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

More by lEWFkRAD

6 plugins by lEWFkRAD in the catalog.

lEWFkRADdocument-readerProfile-scoped document OCR for Hermes Desktop and HUD, with a guarded per-profile Windows service.CommunityDesktop app4lEWFkRADnetplaneInstall, configure and operate a self-hosted Headscale control plane from Hermes. netplane_setup previews a configuration and, after approval, installs the pinned official Headscale v0.29.6 DEB on a fresh Debian 12+ or Ubuntu 22.04+ systemd host (amd64/arm64). Installation runs on the Hermes host, requires root or noninteractive sudo, refuses existing deployments, and verifies the package SHA-256. It configures SQLite, MagicDNS, embedded DERP/STUN, local admin gRPC, and either Let's Encrypt HTTPS or a loopback backend for an existing reverse proxy. It starts the system service, creates the first user, and saves a 90-day API key and connection settings through Hermes's active-profile APIs. netplane_status reports health, netplane_nodes lists devices, and netplane_preauth lists metadata without stored join secrets or creates an approval-gated, single-use-by-default join key with a 1–168 hour lifetime. Desktop includes setup preview/confirmation, health, nodes, join keys and confirmed node expiration, with a FastAPI backend. Management requires NETPLANE_APIKEY; setup works before a key exists. Bundled protobuf stubs use pinned sources and a compatible toolchain. Disclosure — the netplane_setup tool (after Hermes approval) and the Desktop pane (after confirmation) install the pinned official Headscale v0.29.6 DEB as root through noninteractive sudo on the Hermes host, downloading it from GitHub (SHA-256 verified) and possibly contacting configured APT repositories; it writes /etc/headscale, /var/lib/headscale and a systemd drop-in, and enables a persistent headscale service that in Let's Encrypt mode listens publicly on TCP 80/443 and UDP 3478 (admin gRPC and metrics stay on loopback); Let's Encrypt receives the chosen domain and email; setup saves a new 90-day Headscale API key as NETPLANE_APIKEY in the active Hermes profile; management reads credentials only from Hermes and uses TLS with system trust off-host; approved join-key creation returns the key into the chat; status runs systemctl is-active headscale and tailscale serve status; no telemetry and no automatic software updates.CommunitytoolslEWFkRADsunshine-moonlightSet up and diagnose Moonlight game streaming (Sunshine host <-> Moonlight client) between machines that run Hermes. One tool, action-based: discover hosts on the tailnet/LAN, preflight ports, install+start Sunshine, pair clients, verify encoders, and launch a stream. Writes to remote machines only over SSH and only when the action says so. Disclosure — runs shell commands as your user on this machine and, over SSH, on hosts you name (BatchMode, your existing keys); `install` runs `sudo` with your package manager to install `sunshine` or `moonlight-qt` without a Hermes approval prompt; `configure`/`start` rewrite Sunshine's config (with a backup) and restart its user service; `discover` reads `tailscale status` and port-probes your tailnet peers; `launch` starts a Moonlight process. No credentials stored, no telemetry.CommunitytoolslEWFkRADtidalTIDAL for Hermes Agent: five tools (playback through local mpv, search, playlists, library, mixes) over the unofficial TIDAL API via tidalapi. Login is TIDAL's own PKCE login flow (hermes tidal login) — no developer app needed. Playback runs on the Hermes machine (mpv); TIDAL has no remote-device API like Spotify Connect. Needs a TIDAL subscription (any tier). Disclosure — unofficial TIDAL integration (community tidalapi library using TIDAL's own app client); stores your TIDAL access and refresh token in plaintext (owner-only, 0600) under $HERMES_HOME/plugin-data/tidal/ and refreshes it itself; playback spawns a detached local mpv process with an IPC socket and plays audio on the Hermes machine.Communitytools