time-attack/hermesshare — explained in plain English
Analysis updated 2026-05-18
Send a flight boarding pass or hotel listing as a rich interactive card in iMessage.
Let an AI agent reply to a conversation with structured cards instead of plain text walls.
Build tap to reply actions that insert new messages automatically into a thread.
Prototype new iMessage card types quickly using the included host debug app.
| time-attack/hermesshare | bleeeet/termipet | hoobnn/fanfan | |
|---|---|---|---|
| Stars | 33 | 33 | 33 |
| Language | Swift | Swift | Swift |
| Setup difficulty | moderate | easy | easy |
| Complexity | 3/5 | 3/5 | 3/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires Xcode, an Apple developer setup for signing, and XcodeGen to generate the project.
HermesShare is an open source iMessage app extension for iOS that turns structured JSON data into rich interactive cards inside Apple Messages, things like package tracking cards, flight boarding passes, trip itineraries, polls, hotel listings, and dashboards. An AI agent, or really any backend service, sends a JSON document describing the layout, and the app renders it natively on the device. The reason this project exists is that Apple does not allow apps to download and run arbitrary code at runtime. Any interface code running on an iPhone has to be compiled, signed, and shipped inside an App Store reviewed app, so you cannot send raw SwiftUI code the way a web page can send JavaScript. HermesShare works around this the same way apps like Scriptable do: it ships a fixed, Apple signed renderer, and the JSON that arrives only describes what to show, chosen from a known set of building blocks, rather than containing any code that gets executed. This keeps it within App Store rules while avoiding both plain text messages and web views embedded in the chat bubble. Under the hood, the JSON layout, called a HermesLayout, is a document with metadata plus a tree of nested view nodes. That document gets base64 encoded and packed into the URL of a Messages app link using Apple's iMessage app framework. When a person taps the message bubble, the signed extension reads the JSON tree and builds a real native SwiftUI interface from it, matching each node type to a fixed set of supported components. Buttons inside these cards can also send reply messages back into the conversation automatically when tapped. The repository includes a shared Swift package with the schema, rendering logic, and sample layouts, a small host app for quickly testing changes, the actual iMessage extension itself, documentation for the JSON format and for sending messages, and some helper scripts for things like generating thumbnails and sending test messages in bulk.
Turns structured JSON into native, interactive iMessage cards like flight passes, delivery trackers, and polls, without running any downloaded code.
Mainly Swift. The stack also includes Swift, SwiftUI, iMessage.
Setup difficulty is rated moderate, with roughly 1h+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.