Start from your inputs
Use the OpenAPI spec and Stainless-style config that already define your SDK.
Opensteel generates Stainless-compatible TypeScript SDKs from your OpenAPI spec and stainless.yml-style config. For supported SDK shapes, it targets near byte-identical output so teams can keep shipping after the hosted Stainless generator is no longer available.
$ npx opensteel generate \
--openapi openapi.yaml \
--config stainless.yml \
--out ./my-sdk
# emits a Stainless-compatible TypeScript SDK
./my-sdk/src/client.ts
./my-sdk/src/resources/
./my-sdk/src/internal/
$ npx opensteel init \
--config stainless.yml \
--out ./my-sdk
# adds the publishable wrapper
package.json
release-please-config.json
.github/workflows/generate.yml
Stainless continuity
If you already have a Stainless-generated TypeScript SDK, Opensteel is designed to keep that shape stable. Your spec, config, generated source, build scripts, and release workflow can all live in Git.
Use the OpenAPI spec and Stainless-style config that already define your SDK.
Target the same TypeScript project shape, resources, runtime layout, and exported types.
Measure byte-level drift against known Stainless output and drive it down fixture by fixture.
Ship with standard npm, release-please, and GitHub Actions tooling.
Why Opensteel
For supported TypeScript SDK shapes, Opensteel targets output close enough to preserve existing imports, docs, tests, and release workflows.
Use Opensteel as a continuity layer when your SDK already depends on Stainless conventions.
Generation is driven by OpenAPI plus config. Compatibility is measured by diffing against reference SDKs, not by using Stainless backend code.
Development has focused on public, MIT-licensed SDK outputs and a repo-owned generator you can inspect.
Current scope
Opensteel currently supports TypeScript because compatibility only matters if the generated SDK really matches what teams already ship. Python is the next planned target.
A CLI-first continuity tool for teams with Stainless-generated TypeScript SDKs who need to keep generating compatible code from files they control.
Not a legal opinion, not a full Stainless product replacement, and not a multi-language generator today. The current product is TypeScript SDK compatibility.
Start generating
Opensteel requires Node.js 20 or newer and generates TypeScript packages today.
$ npm install -g opensteel
$ opensteel generate \
--openapi openapi.yaml \
--config stainless.yml \
--out ./sdk