Skip to main content

GhostPour

The quiet hand behind the bar for your iOS app.

Handles sign-in, subscriptions, usage, and backend flow the way a great bartender handles a perfect drink — smoothly, personally, and without making the customer think about the work behind it.

GhostPour — The invisible hand for your iOS app

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.

01

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 →
02

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 →
03

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 →
04

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 →
05

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 →
06

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