MaritimemaritimeDocumentation
Dashboard

OpenClaw Identity Guide

OpenClaw with a real phone number and email address.

Overview

OpenClaw Identity is the OpenClaw 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.

Docker Image

Image: ghcr.io/openclaw/openclaw:2026.5.12

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

How It Works

The container starts a Python bridge (inkbox_bridge.py) that opens an outbound HTTP/2 tunnel and forwards POST /webhooks/email and POST /webhooks/textinto openclaw agent --message .... Replies go back through the Inkbox SDK.

# 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

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.

Deploy

Select Template → OpenClaw Identity in the Create Agent modal. Identity provisioning happens during create, so the agent already has its phone and email by the time the container boots.