Index

Photon

Software Engineer·San Francisco·

Engineer #3 — photon before photon.

spectrum launch

Shipped

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. The kind of utility you end up writing three half-broken versions of across different projects; 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 →


IFTTT

2026

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


n8n Nodes iMessage

2026

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
Read the full post →


Zapier iMessage

2026

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
Read the full post →


OpenBrowserClaw

Early 2026

This one is just cool. Everyone was buying Mac Minis to run personal AI agents — it was going viral, people spinning up dedicated hardware just to have a persistent assistant. Then OpenBrowserClaw showed up and flipped the whole premise: no VPS, no Mac Mini, no infrastructure at all. The browser is the server.

Since this was gaining real traction, it was obvious we should have iMessage integration here. We forked and extended it from the original NanoClaw concept — same philosophy of being small enough to understand and built for one user — but now with Claude API for intelligence, tools for bash, file I/O, JavaScript execution, and memory persistence. The whole thing runs in a browser tab. No server bills, no maintenance. Just open a tab and you have an agent.

photon-hq/openbrowserclaw
Read the full post →


Photon MCP

Early 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

Early 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
Read the full post →


Twilio

Early 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

Early 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
Read the full post →


Manus Integration

Early 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
Read the full post →


NotebookLM Kit

Late 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

Late 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