Sigil: Node Identity Cards
Nodes on the mesh have identities: names, hardware types, battery levels, roles. But sharing that information outside the mesh is clunky. You cannot link someone to a node. Today we shipped Sigil — node identity cards that live on the web.
What is a Sigil?
A Sigil is a snapshot of a node’s identity at a point in time. It captures:
- Display name and short name
- Hardware model
- Role (client, router, repeater, etc.)
- Battery level at time of capture
- Position (if shared)
- Node number and hex ID
The app generates a Sigil from any node in your NodeDex and uploads it to the Sigil API. You get a shareable URL like socialmesh.app/sigil/cOyJtB-6sz. Anyone can view it in a browser without the app.
The API
Express server on Railway. SQLite for storage (persistent volume). Simple REST:
POST /api/sigils— create or update a sigilGET /api/sigils/:id— retrieve a sigilGET /— service homepage with stats
The API validates all input server-side: required fields, string lengths, coordinate ranges. Invalid data gets a 400 with specific error messages.
App → POST sigil data → Sigil API → SQLite
Browser → GET sigil page → Firebase Hosting → fetch() → Sigil API
The web portal at socialmesh.app/sigil/ is a static HTML page on Firebase Hosting that makes client-side fetch calls to the API. API serves JSON, never HTML.
Apple Wallet
We also added Apple Wallet passes for sigils on iOS. Your node identity card, right in your wallet next to your boarding passes and tickets. Tap to share. The pass includes:
- Node name and ID on the front
- QR code linking to the web sigil
- Battery and hardware info in the back fields
This was an exercise in “why not?” — Wallet passes are just signed JSON bundles. The Node identity data was already structured. Packaging it as a .pkpass was straightforward once we had the signing certificates.
NodeDex
Sigils feed into the NodeDex — a collection of every node you have encountered on the mesh. Think Pokedex but for mesh radio nodes. Each entry accumulates data over time: seen count, first/last seen, position history. The Sigil is the shareable snapshot of that accumulated identity.