The minimum stack before product-market fit
Keep the architecture small: one client boundary, one primary model, one evaluated fallback, basic request tracing, and an explicit monthly ceiling. You need enough structure to survive an outage or runaway loop, not a platform team in miniature.
Store prompts and evaluation cases as versioned product assets. Those are closer to your competitive advantage than provider SDK glue.
What becomes painful first
The second model introduces protocol differences. The first meaningful customer introduces privacy questions. The first launch introduces rate limits. The first agent loop creates a surprising bill. These are predictable transitions, so place a stable boundary around inference before they arrive.
A gateway is most useful when it removes work you were about to repeat: another provider integration, retry system, usage record, or model-access policy.
Build the parts that compound
Own evaluations, routing intent, domain data, product feedback, and the workflow around the model. These improve with every customer. Vendor adapters and changing price tables rarely do.
Keep an exit path by using a standard client protocol, exporting operational data, and avoiding provider features that cannot be isolated behind your boundary.
Scale controls with the team
As one application becomes several, separate projects and environments, rotate keys, assign owners, add spend alerts and ceilings, and restrict model access. Add process only when a real failure mode appears, but make sure the platform can support it without another migration.
