How It Works
Four steps between your user tapping "Subscribe" and getting a response.
Authenticate
Apple Sign In verifies identity. GhostPour issues a JWT and tracks the user.
Subscribe
StoreKit handles payment. GhostPour maps the receipt to a tier and sets limits.
Enforce
Every request is checked against the tier's model access, rate limit, and cost quota.
Serve
The right model responds. Cost is tracked. The user never sees the machinery.
What You Get
Everything between your iOS app and the backend, handled.
Subscription Lifecycle
StoreKit 2 receipt verification, trial detection with capped allocation, upgrade resets, and sync-on-launch reconciliation. Your server is the source of truth.
Read the docs →Cost-Based Quotas
Dollar-based allocation instead of request counts. Track actual LLM spend per user with automatic quota checks and response headers your app can read.
Read the docs →Model Routing
Route to the right LLM based on tier. Haiku for standard users, Sonnet for premium. Per-tier model access, image limits, and provider controls.
Read the docs →3-State Feature Gating
Enabled, teaser, or disabled per tier. Teaser mode runs the feature but withholds results, showing users what they're missing to drive upgrades.
Read the docs →Remote Configuration
Push prompt changes, model lists, and app behavior updates without an App Store release. Version-based caching keeps bandwidth near zero.
Read the docs →Production Deployment
Docker container with GitHub Actions CI/CD. SQLite persistence, nginx reverse proxy, and an admin dashboard for user management and analytics.
Read the docs →You Build the Experience.
GhostPour handles the infrastructure so you can focus on what makes your app worth opening.
Read the Documentation