Index

Photon

Software Engineer·San Francisco·

Engineer #3 — photon before photon.

spectrum launch

Shipped

Codex

2026

Codex on iMessage. A Photon project for bringing Codex into the iMessage channel layer, so the agent experience can live directly inside a thread instead of another app surface.

Try it →
photon-hq/codex


URI

2026

A small, zero-dependency TypeScript library for generating correct imessage://, sms:, facetime:, wa.me, and t.me links — with strict E.164 normalization, RFC 3986 body encoding, a unified discriminated-union dispatcher, and a parseLink() inverse. This is the one version that actually gets the quirks right (FaceTime has no body, WhatsApp strips the +, Telegram phone links can't carry text, SMS follows RFC 5724, not the iOS variants).

photon-hq/uri
npm


Unicode Shield

2026

Most messaging stacks transmit raw Unicode. That means a message can look perfectly normal in the chat bubble while carrying invisible characters that a model still reads as input. Zero-width joiners, tag characters, bidi overrides, homoglyphs — the stuff that survives transport but disappears in the UI. For a human chat app it's an edge case. For an agent that treats message.text as trusted input, it's a silent prompt-injection and session-poisoning surface.

Unicode Shield is a zero-dependency TypeScript normalization layer that strips invisible characters, bidi attacks, Zalgo text, homoglyphs, and 400+ dangerous codepoints before any text reaches a model. Sanitized safe text for inference, raw original preserved for audit, suspicious patterns detected and scored so you can block, warn, or log.

photon-hq/unicode-shield
Read the full post →


Polymarket Agent

2026

Polymarket over iMessage. We built a text-native trading agent where a user can search prediction markets, check odds, buy or sell shares, cancel orders, and track portfolio state without leaving the thread. The channel layer runs through Photon and Advanced iMessage Kit, then hands the conversation to a Mastra agent backed by OpenRouter and Polymarket's CLOB client.

The hard part was making trading feel conversational without making it loose. The agent keeps short-lived context in Redis so follow-ups like "bet on that one" still resolve to the right market, but order placement stays explicit and confirmed. Each user connects their own Polygon wallet through iMessage onboarding, credentials are encrypted at rest with AES-256-GCM using per-user HKDF derivation, and DELETE disconnects the account and wipes stored credentials.

photon-hq/polymarket


n8n Nodes iMessage

2026

n8n now has native iMessage support

n8n is the open-source workflow automation tool that keeps growing — huge community, self-hostable, fair-code licensed. It's become the go-to for people who want Zapier-level automations but with full control over their data and infrastructure. We built a full community node for it: send messages, attachments, edit and unsend, tapback reactions, group chats, polls with voting, scheduled messages, typing indicators, contact cards, availability checks, and a polling trigger for inbound messages. Every operation the iMessage SDK supports, exposed as n8n operations. We don't target CRMs, but these are the no-code tools people actually use day-to-day, and iMessage needed to be a first-class citizen in them.

photon-hq/n8n-nodes-imessage
npm
Announcement


IFTTT

2026

iMessage API, now on IFTTT

I genuinely love IFTTT as a platform. The whole idea of applets — connecting things together with zero code — is elegant. While going through their ecosystem I realized there was no iMessage integration, which felt like a gap. If you could connect iMessage to IFTTT, suddenly you could automate things across your smart home, your calendar, your other platforms, all triggered by a text. From that perspective, this was meant to be an extension to our iMessage integrations so no-code builders could build on top of these and make their workflows easier.

photon-hq/ifttt
Announcement


Nanobot

2026

Nanobot is the ultra-lightweight personal AI project from HKUDS, and we added iMessage as a native channel through Photon. Photon handles the channel layer, and Nanobot can reply like an assistant living directly in the thread.

The integration added both local and remote Photon-backed modes, tapbacks, typing indicators, mark-as-read handling, paragraph splitting into separate iMessage bubbles, startup message seeding, and voice transcription support while following Nanobot's existing channel patterns.

photon-hq/nanobot
HKUDS/nanobot#2539
Announcement


Zapier iMessage

2026

iMessage Kit, now on Zapier

Same energy as n8n but for the other end of the market. Zapier is the mainstream no-code automation platform — millions of users, thousands of app integrations, the thing non-technical teams reach for first. We built the official Zapier integration for Photon: trigger on new message, send a message, schedule a message, react to a message, and search messages. Connect your Photon server URL and API key, and iMessage becomes a node in any Zap. Between n8n and Zapier, we covered the two biggest no-code automation platforms out there. If someone's building workflows, iMessage should just be there as an option.

photon-hq/zapier-imessage
Announcement


OpenBrowserClaw

2026

OpenBrowserClaw takes the NanoClaw-style personal agent idea and makes the browser the runtime: no VPS, no Mac Mini, no separate server. We added iMessage support so the browser-native agent could send and receive messages through Photon while keeping the setup lightweight.

photon-hq/openbrowserclaw


Photon MCP

2026

MCP is the thing right now. Every AI tool, every agent framework, every IDE — everyone is building around the Model Context Protocol. We saw the need early: if someone is already in Cursor or Claude or whatever IDE they use, they should be able to just plug in an API key and an endpoint and have full iMessage access. No SDK to learn, no code to write. Just natural language. Tell your agent "send hey to this number" and it does. That's it.

67 MCP tools covering every iMessage operation — sending messages, managing chats, contacts, polls, scheduled messages, FaceTime calls, even Find My. Each client authenticates via headers so a single deployment serves every user.

We were intentional about building this with an inbound-first policy. MCP makes it dangerously easy to blast messages to a lot of people, and that's exactly what we wanted to prevent. Too many outbound messages to too many contacts could get Mac Minis banned and violate platform policies. So we added guardrails — rate limits, contact verification, usage policies — to keep things responsible. Built on xMCP.

mcp.photon.codes
photon-hq/mcp


Photon Skills

2026

Introducing iMessage Agent Skill

Introducing iMessage Agent Skill.

npx skills add photon-hq/skills --skill imessage

Teach your Claude Code, Codex, or OpenClaw to connect the agent you just built to iMessage — using Apple's public APIs or Photon managed services. In under a minute.

We kept running into the same problem: AI coding agents would hallucinate API calls, invent methods that don't exist, and write integration code that looked right but was completely wrong. So we built a set of skills — markdown files that teach agents how to actually use our SDK. Published on skills.sh, updatable independently from the SDK itself.

One command, and your agent just knows how to build with Photon. We went through a security audit on skills.sh too — prompt injection surfaces, untrusted input handling, the whole thing. Covers @photon-ai/imessage-kit, @photon-ai/advanced-imessage-kit, and chat-adapter-imessage.

photon-hq/skills
Announcement


Twilio

2026

Built as an internal tool to manage our Twilio numbers without having to keep going back to the Twilio dashboard. We needed to buy numbers from specific area codes, handle automatic speech-to-text for verification calls, and automate the repetitive stuff around phone number provisioning.

photon-hq/twilio


UDITA

2026

Universal Device Interface for Test Automation. The idea was to control iPhone screens and operations without jailbreaking them — all over Wi-Fi. We built this to automate FaceTime calling flows so we could have zero human-in-the-loop and eventually provide FaceTime automations as a feature. Apple obviously doesn't hand you an API for any of this.

UDITA is a zero-config system to remotely control a fleet of iPhones — automatic device discovery, one-command setup, and a full web-based cockpit on top of WebDriverAgent. The CLI handles auto code signing with no paid Apple developer account. The bridge server handles everything WDA exposes: taps, swipes, typing, screenshots, app launches, Siri, GPS spoofing, screen recording. Plus workarounds for Apple's moving target — like the iOS 26 app launch bug we bypass with a lookup table of 80+ URL schemes.

photon-hq/UDITA


Manus Integration

2026

Manus on iMessage

Shipped this one fast. Manus is one of the most capable general-purpose AI agents out there, and we brought it to iMessage. Text your Photon number, Manus gets it as a task, does its thing, and texts you back with the result. Love reaction when it receives your message, removes it when the task completes. Typing indicators while it's thinking. It feels native.

The potential here is massive — Manus can browse the web, write code, create files, do research, and now all of that is accessible from a text message.

Try it →
photon-hq/manus
Announcement


NotebookLM Kit

2025

NotebookLM Kit — @photon-ai/notebooklm-kit
notebooklm-kit launch

Reverse-engineered Google NotebookLM and turned it into a TypeScript SDK. NotebookLM is one of those products that feels like magic — you throw in sources and it generates podcasts, quizzes, flashcards, mind maps, slide decks, video overviews, reports. But there's no official API. So i built one.

The SDK covers everything: notebooks, sources (URLs, text, files, YouTube, Drive, web search), every artifact type NotebookLM can produce, chat with streaming, notes management. Auto-login, credential caching, auto-refresh, quota management, 80+ language support. The kind of project that starts as "I just need to automate one thing" and turns into a full SDK with a documentation site. What this unlocked was programmatic access to one of Google's best AI products — batch-generate podcasts from your content, create study materials at scale, build workflows around NotebookLM that weren't possible before.

photon-hq/notebooklm-kit
npm
Read the full post →


VibeGC

2025

An experimental project exploring what happens when you let AI agents participate in group chats. Not just respond to messages — actually understand the conversation dynamics. We worked on semantic turn detection, figuring out tone and proactiveness, understanding when to jump in and when to stay quiet, and how to handle the messy reality of multi-person threads where context shifts constantly.

Group chats are fundamentally different from 1:1 conversations. The agent needs to read the room — who's talking to whom, what the vibe is, whether a message is directed at it or just part of the flow.

photon-hq/vibegc

Writings