Providers
Provider packages are thin REST wrappers that implement the infra-ts entity contract.
The umbrella infra-ts package includes the first provider set as subpath imports. Each provider is a thin wrapper over the provider’s REST API, not a separate engine.
Neon
Projects, branches, compute, Postgres, auth, and replicas.
Vercel
Projects and environment variables wired from other entities.
Upstash
Redis, Vector, and QStash-style infrastructure.
SaaS providers
Resend, Mux, Sentry, WorkOS, Sanity, Statsig, Dub, Stripe, PostHog, ElevenLabs, and OpenAI.
Imports
import { NeonProject } from "infra-ts/neon";
import { VercelProject } from "infra-ts/vercel";
import { StripeProduct } from "infra-ts/stripe";
import { OpenAIProject } from "infra-ts/openai";
Provider contract
Provider authors implement entities with a small lifecycle:
readfetches live remote statediffcompares desired config with live remote stateprovisioncreates or updates the resourcepullEnvexposes typed environment outputsdeprovisiontears down the resource
The engine handles graph ordering, refs, state-file I/O, env output, hooks, and CLI rendering.
Design rule
Providers should stay thin. Shelling out to vendor CLIs, storing hidden snapshots, or bundling unrelated provider logic into a single resource makes the graph harder to reason about.
The happy path is boring:
typed options -> REST API read -> pure diff -> REST API mutation