Skip to main content
GPU Outlet is split into three loosely-coupled subsystems. Understanding the seam between them makes the API surface and the dashboard’s behavior obvious.

The three subsystems

Catalog

Read-only inventory of GPUs available right now. Aggregates listings from every upstream provider into one queryable surface.

Rental orchestrator

Reserves and launches pods on behalf of users. Talks to each upstream provider’s native API; we hide the differences.

Billing engine

Prepaid wallet, Stripe integration, per-second metering, ledger. The only component that handles money.

Request flow

The dashboard never talks to providers directly. Every transaction passes through our API server so the wallet stays consistent and the user identity is attested.

Persistence

ConcernStoreWhy
Users, sessions, OAuth statePostgreSQLStrong consistency needed for auth
SSH keysPostgreSQLPer-user, indexed, mutable
Rentals + meteringPostgreSQLAppend-only ledger, audited
Wallet balancePostgreSQL with row-level locksMoney — no eventual consistency
Catalog cacheIn-memory + 30s TTLRead-heavy, tolerates staleness
SessionsHttpOnly cookiesXSS-resistant, no localStorage tokens
The wallet uses row-level SELECT … FOR UPDATE on every debit so concurrent metering ticks from multiple pods can’t race past zero. See Charging strategies (RFC-07) for the full design.

What’s open-source

The marketplace frontend (packages/client) and the server skeleton (packages/server) live in the monorepo. Provider adapters and the production billing implementation are proprietary — they’re what we sell.

Local development

A mock-fetch shim ships in the client (packages/client/src/shared/mock/) and serves the entire /v1/* surface from in-memory fixtures. Set VITE_MOCK_MODE=1 and you can iterate on UI without a backend running. See CLI / local dev for the full setup.

Production topology

  • API: Node.js on Render/Fly, behind Cloudflare. Stateless — scale by adding instances.
  • DB: Managed Postgres with point-in-time recovery.
  • Object storage: S3-compatible for snapshots and logs.
  • CDN: Cloudflare for the marketing landing + docs site you’re reading now.
  • Workers: BullMQ on Redis for the per-second metering tick.