I · Doctrine

Four tenets.
One runtime.

Hermes is opinionated. Below is what the agent assumes about memory, infrastructure, skills, and the surfaces it speaks through — and what we refuse to compromise on.

00 · Reading order

How to read this page.

Each tenet stands alone, but they reinforce each other. Memory without sovereignty is a leak; skills without channels are unreachable; channels without memory are amnesiac chat.

  • Skim the four tenets for the shape of the system.
  • Read the practice notes to see how each tenet shows up day-to-day.
  • Check the anti-doctrine for what we explicitly refuse to do.
  • Use the glossary if a term is doing too much work.
i.01 · MEMORY

Context that compounds.

Conversation isn't disposable. Every exchange becomes substrate for the next — facts retained, preferences learned, threads carried forward across sessions and surfaces. The agent you talk to next month is not the one you deployed this morning.

In practice
Continuous
Memory persists across restarts, redeployments, and channel switches. A thread started in Slack continues in WhatsApp without re-explaining yourself.
Inspectable
Every retained fact is browsable from the dashboard. Nothing is summoned from a black box; you can read what your agent thinks it knows about you.
Forgettable
Anything remembered can be removed. Forgetting is a first-class operation, not a workaround for retention you didn't want.
Spec
store=agent-local SQLite on attached volume
scope=per-agent, per-VPS, single-tenant
lifecycle=lives with the agent; destroyed on teardown
ii.02 · SOVEREIGNTY

Your VPS, your weights, your data.

Every agent runs alone, on a dedicated server, behind a tunnel you own. No shared memory, no co-tenants, no cross-agent leakage. Pick the model — Claude, GPT, Gemini, or a local weight — and the runtime stays yours to inspect, snapshot, or tear down.

In practice
Single-tenant
One agent, one VM. We provision; you own the surface. There is no shared compute layer where your data could mingle with anyone else's.
Bring-your-own model
The runtime is provider-agnostic. Swap from Claude to GPT to a self-hosted weight without re-deploying the agent or migrating its memory.
Open runtime
The hermes-agent codebase is open source. Self-host it on your own hardware if hosted infrastructure isn't acceptable — the doctrine ships either way.
Spec
host=Hetzner Cloud · region of choice
exposure=Cloudflare Tunnel · no public IP
isolation=1 VPS = 1 agent · no co-tenants
iii.03 · SKILLS

Capabilities, versioned.

Repeated tasks become reusable skills, auto-generated and version-controlled. Your agent compiles a private toolkit over time — repeatable, inspectable, exportable. The codebase grows with use; the muscle memory is real.

In practice
Auto-authored
When the agent recognizes a recurring shape of work, it proposes a skill. You approve or reject — nothing self-installs without your sign-off.
Versioned
Skills live as files in a git repo. Every change is a commit; rollbacks are trivial; diffs are reviewable.
Portable
Export the skill bundle and import it into another agent. The toolkit you build with one agent is not trapped inside it.
Spec
format=skill.md + scripts/ in agent's git repo
trigger=model-detected via skill description
review=user approval before execution on first run
iv.04 · CHANNELS

One runtime, every surface.

Discord, Slack, WhatsApp, Telegram, Signal, email — same agent, same memory, same skills, every gateway. The channel is just a transport. The intelligence sits behind it, undivided.

In practice
Unified state
A user is the same user across surfaces. Memory and skills don't fragment by channel; the agent recognizes you wherever you arrive.
Transport-agnostic
New channels are adapters, not forks. Adding a surface doesn't fork your agent's brain — it adds another mouth to the same head.
Embeddable
Drop a script tag and your agent appears on any website. The widget speaks the same runtime as the Slack bot and the email handler.
Spec
gateways=Discord, Slack, WhatsApp, Telegram, Signal, email
embed=share-token widget · public, sandboxed scope
api=HTTP + SSE · OpenAI-compatible endpoints
05 · Anti-Doctrine

What Hermes refuses.

Doctrine implies its inverse. These are the choices we don't make, and the reasoning behind each refusal.

  • no.Shared memory pools.

    Because Cross-tenant memory is a leak waiting to happen. We'd rather pay for more VMs than risk one customer's context bleeding into another's.

  • no.Tiered features.

    Because Doctrine isn't an upsell. Every agent ships with persistent memory, skills, all gateways, and a dashboard — no flags, no plans, no opt-ins.

  • no.Closed runtime.

    Because If hosted Hermes ever disappears, your agent shouldn't. The runtime is open source so you can keep running it on your own hardware indefinitely.

  • no.Vendor-locked models.

    Because We don't sell tokens. Bring your own provider key — Anthropic, OpenAI, Google, or a local weight — and we stay out of the inference path.

06 · Glossary

Terms, defined.

Words we use a lot, in case any of them are doing too much work.

Agent
A long-running runtime instance: model + memory + skills + gateways. Provisioned on a single VPS and reachable through a Cloudflare-tunneled URL.
Gateway
A channel adapter (Discord, Slack, email, etc.) that translates platform-native events into agent invocations and renders responses back.
Skill
A versioned capability — Markdown spec plus optional scripts — that the agent invokes when its description matches the task at hand.
Memory
Persistent state stored on the agent's own volume. Includes facts, preferences, and conversation threads. Survives restart; destroyed on teardown.
Share token
A scoped credential that lets a non-authenticated visitor talk to your agent through the embed widget. Revocable, optionally time-bound.
Doctrine
This page. The four non-negotiable tenets every Hermes agent ships with — memory, sovereignty, skills, channels.
II · Practice

Doctrine becomes
an agent in one click.

All four tenets ship with every deployment. No flags, no tiers, no opt-ins.

Deploy an Agent