Hermes Bridge API¶
One HTTP API. Every client. Full Hermes.
The Hermes Web UI is not just a web app — it is a thin client over a complete, self-hosted HTTP API. Everything the web interface can do (stream a conversation, switch models, browse the workspace, run git, schedule cron jobs, manage memory and skills, transcribe voice) is a documented endpoint on your own server. The web UI simply calls them.
That means any client can be a first-class Hermes client. An iOS app, an Android app, an iPad app, a CLI, a Raycast extension, a home-screen widget, another service — they all speak the same HTTP + Server-Sent Events protocol and get the same full-fidelity access to your agent. There is no proprietary gateway, no per-platform backend, no vendor lock: point a client at https://your-hermes-host/ and it has the whole surface.
This documentation is the contract for that bridge. It is written so a developer with no prior knowledge of Hermes internals can build a native app at feature parity with the web UI from this spec alone. Every endpoint here is one a real client needs — the reference iOS client hermex is built entirely on it.
What "bridge API" means¶
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Web UI │ │ iOS app │ │ Android app │ │ Your app │
│ (bundled) │ │ (hermex) │ │ (future) │ │ (anything) │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │ │
└────────────┬────┴─────────────────┴─────────────────┘
│ HTTP + Server-Sent Events (this API)
┌───────▼─────────────────────────────────┐
│ Hermes Web UI server │
│ (your host — you run it, you own it) │
└───────┬─────────────────────────────────┘
│
┌───────▼─────────┐
│ Hermes Agent │ models · memory · skills · tools · cron
└─────────────────┘
The server is the bridge. It exposes the agent's full capability as a stable HTTP surface. Clients are interchangeable — the web UI has no privileged access a third-party app can't also have.
Why it matters¶
- Build once per platform, not once per feature. The protocol is complete and stable. A native app implements the endpoints it needs and gets streaming chat, session management, workspace/git, cron, memory, skills, and voice — no server changes required.
- Self-hosted and sovereign. The API lives on the host you run. No third-party relay sees your conversations. Your app talks directly to your server.
- Real-time by design. Live assistant responses, tool calls, approvals, and clarifications stream over SSE — a native client shows the same live typing the web UI does.
- One auth story. A single password (or a reverse-proxy header) unlocks the whole surface for every client.
Start here¶
| Guide | What it covers |
|---|---|
| Getting started | Connect, authenticate, and make your first call in ~10 lines |
| Authentication | Password login, the session cookie, custom headers for proxied deployments |
| Streaming (SSE) | The real-time protocol — how live chat, approvals, and clarifications work |
| Conventions | Base URL, headers, session IDs, error shapes, pagination |
Endpoint reference¶
| Category | Endpoints | What a client builds with it |
|---|---|---|
| Sessions & projects | list, detail, create, rename, pin, archive, branch, compress, undo, retry, move | the conversation sidebar + lifecycle |
| Chat & streaming | start, stream (SSE), steer, cancel, goal, background | the live chat surface — the crown jewel |
| Approvals & clarify | pending, stream (SSE), respond | tool-approval + agent-question prompts |
| Models, providers & personas | models, providers, default-model, reasoning, personalities | the model/provider pickers |
| Profiles & settings | profiles, switch, active, settings | multi-profile switching + preferences |
| Memory | read, write | the memory management screen |
| Skills | list, content | the skills browser |
| Commands | slash-command catalog | the composer's / menu |
| Workspace, files & git | list, file, upload, git status/diff/commit/push | the workspace explorer + source control |
| Cron / scheduled jobs | list, create, update, run, pause, output | the scheduled-tasks panel |
| Voice | transcribe, tts | push-to-talk + spoken replies |
| Insights & updates | insights, updates/check, updates/apply | usage stats + self-update |
Full index: every endpoint on one page.
This is the client-facing bridge surface — the endpoints a native app needs to reach parity with the web UI. Internal/admin/plumbing endpoints (health probes, CSP reports, client-event logging, kanban internals) are intentionally omitted; they are not part of the client contract.