sesame launch on a box you own, a Maritime agent runs inside a managed container you reach through the maritime CLI. Two subcommands do the work:
maritime execruns a command in-container.maritime envis the encrypted env store whose values Maritime injects on every boot.
This procedure was validated live against a Hermes-template agent whose container is Debian 13 / GLIBC 2.41 / x86_64. The full Python
sesame CLI runs fine there, and the Go edge proxy is fully static (no GLIBC dependency at all).Prerequisites
- The
maritimeCLI installed and logged in (a validMARITIME_TOKEN). - A Sesame broker at getsesame.dev with a secret configured for
api.openai.com(Bearer injection). - The target agent already created from the
hermestemplate.
Step 1 — Install the Sesame edge components in the container
Install into the container’s persistent volume (/opt/data survives restarts). Download the static linux/amd64 builds from the public getsesame/sesame release:
sesame-proxyd-linux-x86_64— the Go edge proxy. BuiltCGO_ENABLED=0, fully static, so it has no GLIBC dependency.sesame-linux-x86_64.tar.gz— the Python CLI tarball. Extract it into/opt/data/sesame/bin.
Step 2 — Give the container its own Sesame identity
Run the device-flow login in-container so approvals attribute to the agent, not your laptop. Keep the identity on the persistent volume by pinningHOME:
https://getsesame.dev/register?agent=<agent-id> link. Approve it in the dashboard within 15 minutes.
Step 3 — Mint the proxy key and build the trust bundle
Provision the proxy key and tenant CA for this identity:init writes the proxy key into the CLI config (config.toml) and provisions the tenant CA. Now build the container’s trust bundle by fetching the tenant root with the proxy key and concatenating it with the system CA store:
Step 4 — Write the edge-env file
Write/opt/data/sesame/edge-env.sh. The agent process sources this to route its egress through the local proxy and trust the tenant CA.
: before @). NO_PROXY must include loopback and Maritime’s own hosts so the control plane is never brokered.
Step 5 — Point Hermes at the brokered host, durably
Set the provider overrides through Maritime env, notconfig.yaml.
api.maritime.sh/api/llm/v1 with an injected mllm_ key), which bypasses Sesame entirely. Overriding OPENAI_BASE_URL to api.openai.com is what routes the LLM through the broker. The container’s OPENAI_API_KEY can stay a placeholder — the broker overwrites the Authorization header server-side.
Step 6 — Add a light boot wrap
Sosesame-proxyd starts and the env is sourced before Hermes on every boot, edit the container entrypoint (/opt/hermes/docker/entrypoint.sh) to insert the wrap just before its final exec hermes "$@" line.
Run this from your machine — it edits the entrypoint in-container and is idempotent. Use python3 (not sed): the entrypoint contains backticks that break sed.
Step 7 — Restart the agent
Restart once so Hermes boots with the proxy env and the pinned provider:Step 8 — Grant standing authorization
On the first LLM call the broker prompts for approval. Approve it with No expiry — not a timed grant.Step 9 — Verify
Confirm the whole chain end to end:api.openai.com under the agent’s own identity.
Known issues
These are Maritime platform behaviors, not Sesame issues. They reproduce even on a pristine agent with no Sesame changes.maritime exec is intermittently flaky — a 502 "Exec failed" just means retry. Re-run the command.What survives a restart vs. a redeploy.
/opt/data is not a separate mounted volume — it’s part of the container filesystem, same as /opt/hermes. On a restart, Maritime snapshots the whole filesystem into a derived image, so everything you installed (the binaries, edge-env.sh, the CA bundle, and the entrypoint edit) survives. A full redeploy rebuilds the image and resets that filesystem, so all of it is lost together — re-run Steps 1–6 after a redeploy. The Maritime env store (Step 5) is separate and persists across both.