For Hermes Agent

A realtime voice for your Hermes.

Speakeasy is a Hermes plugin with a native macOS client. A low-latency speech model handles the conversation. Real work goes to your own Hermes sessions, with their tools, skills, memory and approvals, and several tasks can run in parallel while you keep talking.

GPT-Live-1 via Codex OAuth or the OpenAI API · local or Tailscale · macOS 14+ client · MIT

HermesListening
You
“Find a plumber who can come Tuesday morning, and book dinner for four on Friday.”
Hermes
“Sure, I'll work on both. Anything else while they run?”
Plumber, Tuesday Working
Checking reviews and availability nearby
Dinner for four, Friday Working
Comparing tables at three places
Weekly calendar Done
Four events; nothing before Wednesday.

Voice in front, Hermes behind.

Speakeasy has no brain of its own. The speech model only talks and dispatches; anything that needs a tool, a file or a decision becomes a Hermes run. No extra daemon, no hosted relay.

Mac client ── WebRTC audio ──▶ realtime speech model (GPT-Live-1 via Codex OAuth, or OpenAI API) │ │ handoff │ pairing token, HTTPS ▼ └──────────────▶ Speakeasy plugin (a platform inside your Hermes gateway) │ /v1/runs · sessions API ▼ your Hermes: tools · skills · memory · approvals │ hermes send ▼ Discord · Telegram · Slack · …
1

A platform plugin

Registers as a gateway platform and serves its own endpoint. It talks to Hermes over the public API only, so it keeps working across Hermes upgrades.

2

A brief, not a copy

Your Hermes writes the voice a compact brief: who you are, active projects, what it can do. Secrets and identifiers are filtered before anything reaches the speech provider.

3

Parallel runs, your router model

Each request is its own run with live progress. Splitting compound requests, matching follow-ups and picking a channel is one call to a model you choose in your Hermes config.

What you get.

#

Routing by channel

Opt in any hermes send target and give each a topic. Name one out loud (“put this in work”) or let a quick classifier pick. Optionally opens a fresh thread per task that you can keep working in.

↺

Session continuity

Ask about something already in flight and the run continues inside that existing session, with its history, posting back to the same chat. Toggleable.

✓

Approvals stay yours

The voice can't approve anything. Consequential actions stop at Hermes' own approval flow; outbound email renders as a card and only its button sends, bound to a hash of the exact draft.

⌁

GPT-Live-1: Codex OAuth or API

Uses your ChatGPT account through Codex OAuth by default, so voice runs on the plan you already pay for. Or bring an OpenAI API key. Credentials stay on the Hermes host.

⇆

Tailscale built in

Hermes on a home server, Mac on the road: setup detects Tailscale and publishes the voice endpoint on your tailnet only via Tailscale Serve, never Funnel. Same-machine setups use loopback. Devices pair with a single-use link.

⌘

A native client

Global hotkey, floating panel with a slim mode, per-task progress, mute and pause. Handles AirPods switching sample rate mid-call.

Install.

On the Hermes host. Setup enables the API server if needed, signs in the speech provider, restarts the gateway with your confirmation, waits for the voice endpoint to come up, then opens a pairing link for the Mac client.

# add the plugin
hermes plugins install rungmc357/speakeasy#plugin/speakeasy --enable

# configure, restart, pair
hermes voice setup                 # detects Tailscale automatically
hermes voice setup --api-key       # use an OpenAI API key instead
Hermes Agent with the gateway runningmacOS 14+ for the clientChatGPT account or OpenAI API key

FAQ

What leaves my machine?

Audio and the voice brief go to the speech provider you chose (OpenAI, through your own account). Task content goes only to your Hermes. There is no Speakeasy server.

Does it change my Hermes config?

Setup adds one platform block and enables the plugin, and turns on the API server if it's off. hermes plugins disable speakeasy and a restart undo it.

Which models are involved?

Three, each your choice. The speech model (GPT-Live-1 through Codex OAuth or the API) only converses and hands off. A router model from your Hermes config (auxiliary.speakeasy_router) splits requests, matches follow-ups and picks channels. The work itself runs on whatever your Hermes already uses.

Can I edit what the voice knows about me?

Yes. The brief is plain text, editable in the client's settings, and your Hermes can refresh it automatically.