Hermes Identity Guide

Hermes with a real phone number and email address.

Recorded live on Maritime: deploy Hermes Identity from a blueprint, open its dashboard, and chat with it, from the first click to the first reply.

Overview

Hermes Identity is the Hermes runtime plus a per-agent Inkbox identity: a real email address, an SMS-capable phone number, and a public tunnel hostname. Inbound email and SMS are bridged into the agent automatically, and the agent can send replies back out through the same identity.

Docker Image

Image: ghcr.io/mariagorskikh/hermes-inkbox:2026.6.4, built from inkbox-ai/hermes-agent, a fork of the upstream agent with the Inkbox gateway adapter built in.

Same runtime layout as the Hermes template: gateway on port 8642, dashboard on port 9119, HOME at /opt/data.

What Gets Provisioned

At create time Maritime calls Inkbox POST /api/v1/identities to atomically provision:

  • An identity with handle maritime-<agent-id-prefix>
  • A mailbox at <handle>@inkboxmail.com
  • A public tunnel at <handle>.inkboxwire.com
  • A local US phone number (sends and receives SMS, voice auto-reject)
  • A scoped API key bound to that identity only
# Env vars set on the container:
INKBOX_API_KEY=<scoped key, encrypted>
INKBOX_IDENTITY_ID=<uuid>
INKBOX_AGENT_HANDLE=maritime-<prefix>
INKBOX_EMAIL=<handle>@inkboxmail.com
INKBOX_PHONE_NUMBER=+1...
INKBOX_PHONE_NUMBER_ID=<uuid>
INKBOX_TUNNEL_HOST=<handle>.inkboxwire.com

See It Work

Ask the agent for its identity, then ask it to send an email from its own address. The fork's gateway adapter handles the Inkbox side:

The agent answers with its provisioned Inkbox identity (real email + SMS-capable phone number), then sends an email from that address on request. Recorded against production.

Same thing in the dashboard: the agent page shows the provisioned identity up top, and the Chat tab talks to the same agent:

The Agent Identity panel shows the real phone number and email Maritime provisioned via Inkbox; asking in the Chat tab returns the same identity. Recorded against production.

SMS Warm-up

New local numbers go through 10DLC campaign propagation, which takes ~10–15 minutes. During that window inbound SMS works immediately, but outbound returns 409 sender_sms_pending. The agent page surfaces this as "warming up" rather than an error. Recipients must reply START to any number in the org before they can receive outbound SMS.

Environment Variables

Set OPENAI_API_KEY, or leave it blank and Maritime injects a per-agent proxy token so the agent bills against your Maritime LLM credits. All INKBOX_* variables are provisioned automatically. You never set them by hand.

Deploy

Select Template → Hermes Identity in the Create Agent modal, or:

maritime create my-agent --template hermes_identity

Identity provisioning happens during create, so the agent already has its phone and email by the time the container boots.

Upstream links & resources

  • inkbox.ai: the identity provider. Explains what an agent identity is (email + phone + tunnel) and how it works.
  • Inkbox documentation: API reference for identities, mailboxes, texting (phone-number types, 10DLC warm-up, opt-in rules), tunnels, and webhooks.
  • inkbox-ai/hermes-agent: the fork this template's image is built from, combining Hermes with the Inkbox gateway adapter that turns email and SMS into agent messages.
  • inkbox-ai/inkbox: the official Inkbox Python SDK, skills, and examples. The adapter uses this SDK to send replies.
  • NousResearch/hermes-agent: the upstream Hermes agent the fork tracks. See also our Hermes guide for the plain runtime.