Zero running cost
Content on existing hosting, purchases on device, progress in the player's own iCloud: nothing in the stack has a paid tier that can switch on by itself.
MicroDrama is interactive fiction told through a fictional messaging app: characters write to you in real time, send photos and documents, and react to what you answer. It runs with no backend of its own — stories are signed packs downloaded once and played offline, purchases are StoreKit 2 and progress syncs through the player's own iCloud.
A Swift 6 SwiftUI app with strict concurrency over a UI-independent Swift package, plus a content toolchain and a zero-cost serving stack built around a signed PHP gateway on existing hosting.
UI-independent package: story-pack schema, loader and validator, narrative engine, state, pacing, entitlements, credit ledger, catalogue schema and .mdpk archives with SHA-256 checks. Tested on macOS and Linux.
SwiftData persistence, StoreKit 2 store and credit wallet, CloudKit progress sync and iCloud key-value store, signed content client, catalogue and pack installer, local notifications.
A Foundation Models intent interpreter maps typed replies to the story's options, gated by availability so every story stays playable with written choices.
Python story compiler and pack tool, a StoryCheck CLI that validates and plays every path, and TypeScript workflows on GitHub Actions that draft, translate, gate and publish stories.
Stories, covers and the catalogue are served per language through a signed PHP gateway; no database, no app server, no per-user backend.
MicroDrama| Package | Version | Source |
|---|---|---|
| abseil-cpp-binary | 1.2024072200.0 | SPM |
| app-check | 11.3.2 | SPM |
| firebase-ios-sdk | 12.19.2 | SPM |
| google-ads-on-device-conversion-ios-sdk | 3.7.0 | SPM |
| googleappmeasurement | 12.19.2 | SPM |
| googledatatransport | 10.1.1 | SPM |
| googleutilities | 8.1.3 | SPM |
| grpc-binary | 1.69.1 | SPM |
| gtm-session-fetcher | 5.3.1 | SPM |
| interop-ios-for-google-sdks | 101.0.0 | SPM |
| leveldb | 1.22.5 | SPM |
| nanopb | 2.30910.1 | SPM |
| promises | 2.4.1 | SPM |
Stack detected automatically from the repository on 6 Nov 2026.
Content on existing hosting, purchases on device, progress in the player's own iCloud: nothing in the stack has a paid tier that can switch on by itself.
Episodes are compiled from a script format into packs, validated and auto-played through every branch before release, so broken paths never ship.
Free-text answers are interpreted on device with Foundation Models; nothing the player types leaves the phone.
Packs are split into a base and per-language parts, so each reader downloads only the language they need.