15-minute onboarding tracks
Ship something real in about fifteen minutes. Each track uses a marketplace pack, ends in a callable surface, and keeps OpenAPI / metrics / tracing available so you can see what ran.
Prereqs (all tracks): a free Air Pipe account. Managed cloud is enough; self-host is optional (Install).
Track A — MCP + Postgres
Goal: AI clients (Claude Desktop, Claude Code, Cursor, any MCP client) call your Postgres data as tools — with a real auth story.
Pack: MCP Postgres Starter
Install in app: app.airpipe.io/marketplace?pack=mcp-postgres-starter
Steps (~15 min)
- Create / open an org at app.airpipe.io and install the pack into an environment.
- Attach Postgres — managed DB or your own connection string in the pack globals / secrets.
- Seed — call the pack’s seed endpoint (see pack page) so demo tenants + tasks exist.
- Pick a tier
- Solo: one shared token →
tasks-solo.ymltools - Multi-tenant: per-user tokens with
tenant_id→tasks.yml+auth.yml(or OIDC viaauth-oidc.yml)
- Solo: one shared token →
- Point an MCP client at your Air Pipe MCP endpoint with the bearer token (pack README has the client snippet).
- Call a tool — e.g.
list_tasks/create_task— and confirm rows in Postgres.
See it
- MCP surface: MCP tools — same auth path as HTTP
- Optional: enable
docs: truefor OpenAPI/Swagger (managed or self-hosted). Prometheus/metricsviaexpose_metrics: trueis self-hosted only — not exposed in managed mode.
Next
- Harden JWT / OIDC claims
- Scope queries tighter per tenant
- Add more interfaces as tools
Track B — REST API (CRUD)
Goal: Production-shaped CRUD over Postgres (users, posts, comments) you can curl immediately.
Pack: REST API Starter
Install in app: app.airpipe.io/marketplace?pack=rest-api-starter
Steps (~15 min)
- Install the pack into an environment.
- Connect Postgres and run seed so tables + sample data load.
- Hit list endpoints — e.g.
GET /api/users,GET /api/posts(exact paths on the pack page). - Create a resource with
POST+ JSON body; confirm withGETby id. - Optional JWT — enable the pack’s
auth.ymlpattern when you want protected routes. - Turn on docs — set
docs: trueand open the generated Swagger UI (/documentationself-hosted, or the managed docs route).
See it
- OpenAPI docs
- Prometheus metrics
- OpenTelemetry tracing on the self-hosted binary
Next
- Beginner tutorial for hand-written YAML depth
- JWT verification starter
- Multi-tenant SaaS pack if you need org scoping
Track C — Webhook / Stripe
Goal: One endpoint that verifies Stripe signatures, stores events idempotently in Postgres, and notifies Slack.
Pack: Stripe Webhooks → DB → Slack
Install in app: app.airpipe.io/marketplace?pack=stripe-webhooks-db-slack
Steps (~15 min)
- Install the pack and attach Postgres (+ Slack webhook URL as a secret).
- Set the Stripe webhook signing secret from the Stripe Dashboard (or Stripe CLI).
- Expose the endpoint — managed public URL, or tunnel to self-host.
- Send a test event with Stripe CLI (
stripe trigger payment_intent.succeeded) or Dashboard “Send test webhook”. - Confirm — row in the events table + Slack message; replay the same event and confirm idempotency (no duplicate side effects).
- Inspect — logs/traces for the verify → store → notify action chain.
See it
- Signature pattern explained on the pack page (HMAC over
{timestamp}.{raw_body}) - Durable state patterns if you extend with cursors/dedupe sets
- Observability showcase for a metrics/tracing-heavy pack
Next
- Map more Stripe event types to domain actions
- Fan-out to email/SMS packs
- Add access control on non-webhook admin routes
After any track
| Want… | Go here |
|---|---|
| Hand-written config fundamentals | Start Here tutorial |
| Feature depth (MCP, OpenAPI, metrics, state…) | Features |
| Schema + field reference | Configuration |
| More packs | Marketplace browser |
| Self-host binary / container | Install |
Questions or a pack that should be a fourth track? Open an issue or PR on airpipe-docs.