RE Reset · Internal Ops

Hermes Photon iMessage

Report, fleet standard, operator SOP, and client how-to for putting every client Hermes agent on iMessage — without a Mac relay.

Hermes v0.17+ / Photon Standard feature request Owner: Charles Date: 2026-07-13
0

Executive summary

Decision needed: Make iMessage via Photon a default channel on all RE Reset client Hermes agents, same class as Telegram/Slack — not optional experiment.

What changed Hermes v0.17 “Reach” shipped native iMessage through Photon Spectrum. No BlueBubbles Mac required.
Why it matters Clients already live in blue bubbles. Meeting them on iMessage drops friction vs “install Telegram.”
Who does it We operate it (Charles / fleet). Clients only get a number and a short how-to — they never set up Photon.
Ask of Charles Own fleet standard, SOP, client how-to, golden-template wiring, pilot + rollout.
1

Technical report

What Photon is

Photon is a managed service that allocates and runs iMessage lines for agents. Hermes talks to Photon through a platform plugin (photon-platform) and a small Node sidecar that runs the TypeScript spectrum-ts SDK over a long-lived gRPC stream.

Client iPhone  ←iMessage→  Photon cloud (line owner)
                              ↕ gRPC (spectrum-ts)
                         Node sidecar (on Hermes box, :8789)
                              ↕ loopback HTTP
                         PhotonAdapter → Hermes gateway → agent tools

Photon vs BlueBubbles

DimensionPhoton (standard)BlueBubbles (legacy)
HardwareNone — managed cloud linesMac always on
Orgo / Linux boxesNative fitNeeds separate Mac bridge
Setuphermes photon setupServer URL + password
Ops burdenDashboard + sidecarBabysit Mac / Apple ID
RE Reset defaultYesOnly if already invested

Capabilities (current plugin)

  • DM and group iMessage
  • Inbound media / voice notes (downloaded for the agent; ~20 MB cap)
  • Outbound text + attachments
  • Markdown replies (native iMessage rendering)
  • Optional reaction tapbacks as processing status
  • Allowlist + home channel for cron / notifications
Caveats: Free shared lines can be flaky (stream/auth issues in the wild). After hermes update, re-run sidecar install if iMessage dies. Message effects / polls not fully exposed yet.
2

Operator SOP (internal)

Prerequisites

  • Hermes Agent ≥ 0.17 (Photon plugin present; 0.18+ preferred)
  • Node.js on the box (sidecar)
  • Gateway running / able to restart
  • Client phone numbers for allowlist (E.164)
  • Photon account access for RE Reset ops (app.photon.codes)

One-time setup per client box

  1. SSH / open Orgo terminal on the client Hermes box as the agent user (usually root on Orgo).
  2. Run setup (replace with the client principal’s phone for home/allowlist, or the ops number you use for testing first):
    hermes photon setup --phone +1XXXXXXXXXX
    hermes photon status
    hermes gateway restart   # or start if not running
  3. Confirm credentials landed:
    grep '^PHOTON_' ~/.hermes/.env
    # expect PHOTON_PROJECT_ID and PHOTON_PROJECT_SECRET
  4. Record the assigned iMessage line printed by setup — that is the number the client texts.
  5. Set allowlist to only approved client numbers (and Jake/ops if needed):
    # ~/.hermes/.env
    PHOTON_ALLOWED_USERS=+1CLIENT,...,+1OPS
    PHOTON_HOME_CHANNEL=+1CLIENT_OR_SPACE_ID
    PHOTON_ALLOW_ALL_USERS=false
    PHOTON_REQUIRE_MENTION=true   # recommended for groups
  6. Restart gateway again after env edits.
  7. Smoke test from an allowlisted phone:
    • Send “ping” DM → agent replies
    • Send a photo → agent sees media
    • Unknown number → ignored / no agent run
    • Gateway restart → still receives after ~30s
  8. Store in 1Password / client vault: Photon project id (non-secret ok), note of assigned line, allowlist, date enabled. Never put project secret in client-facing docs.

After Hermes updates

hermes update
hermes photon install-sidecar   # if iMessage breaks after spectrum-ts bumps
hermes photon status
hermes gateway restart

Security defaults (non-negotiable)

  • Never leave PHOTON_ALLOW_ALL_USERS=true on a client box.
  • Allowlist = client principals only (+ optional RE Reset ops).
  • Treat Photon project secret like any API key.
  • Prefer shared free line for POC; dedicated line if client volume / reliability requires it.

Troubleshooting

SymptomLikely fix
No inboundhermes photon status; restart gateway; check sidecar port 8789; shared-line stream issues
Outbound auth errorsRe-run setup / rotate project secret carefully; re-auth device token
Broken after updatehermes photon install-sidecar
Weird bold/UnicodeSet PHOTON_MARKDOWN=false temporarily
Spam / unknown usersConfirm allowlist; ensure allow-all is false
3

Client how-to (non-technical)

Talk to your RE Reset agent on iMessage

Your AI agent can text you the same way a teammate would — in the blue iMessage bubbles.

  1. Save the number we send you (e.g. “RE Reset Agent — [Company]”).
  2. Text that number from your phone (the one we allowlisted).
  3. Start with something simple: “What’s on my plate today?” or a real work question.
  4. You can send photos, voice notes, and documents when relevant.
  5. For group chats: include the agent and mention it if we configured mention mode.
Privacy: Only phones we approve can talk to the agent. Random numbers are ignored. This is not your personal Apple ID — it’s a dedicated agent line we manage.

If messages don’t go through: text Jake or your RE Reset contact on Slack/Telegram and we’ll check the line within one business day.

Copy block for onboarding email / portal

Your Hermes agent is now on iMessage.

Number: [ASSIGNED_LINE]
Text from: [YOUR ALLOWLISTED PHONE]

Try: "Summarize my open priorities"
Questions? Reply here or ping us on Slack.
4

Fleet rollout plan

  1. Pilot: one client box (lowest risk) — full smoke checklist.
  2. Document: lock SOP + client how-to in Process Library / brain.
  3. Template: add Photon stage to golden template / install-box.
  4. Backfill: Travis → Matt → Elise → Atomic → remaining Orgo clients.
  5. Default: every new client box ships with Photon before “live” handoff.
Default: Photon Legacy: BlueBubbles only if needed

Acceptance checklist

5

Board tasks (source of truth)

PriorityStatusTitleOwnerID
P1This Week Standardize Photon iMessage on all Hermes client agents Charles 770b4b1c-…
P2This Week SOP + client how-to: Hermes Photon iMessage connection Charles 8a413e01-…
P2Backlog Add Photon iMessage to client Hermes install / golden template Charles d05cf6bc-…

Spaces: RE Reset (Internal) · Marcus Board · Process Library → Tool Setup Guide

6

References

  • Photon product: photon.codes
  • Photon dashboard: app.photon.codes
  • Hermes plugin path: plugins/platforms/photon/
  • Setup command: hermes photon setup --phone +E.164
  • Status: hermes photon status