Hermes Identity Guide
Hermes with a real phone number and email address.
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.comSee 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:
Same thing in the dashboard: the agent page shows the provisioned identity up top, and the Chat tab talks to the same agent:
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_identityIdentity 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.