For teams with existing Stainless TypeScript SDKs.

Keep your Stainless TypeScript SDK alive.

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.

terminal
$ 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
0 diff
targeted where supported
TS
current language
MIT
reference corpus
Near byte-identical output Existing Stainless SDKs OpenAPI 3.x stainless.yml TypeScript Clean-room generator MIT-licensed references GitHub Actions

Stainless continuity

A path forward for existing Stainless SDKs.

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.

01

Start from your inputs

Use the OpenAPI spec and Stainless-style config that already define your SDK.

02

Generate compatible output

Target the same TypeScript project shape, resources, runtime layout, and exported types.

03

Diff the result

Measure byte-level drift against known Stainless output and drive it down fixture by fixture.

04

Publish normally

Ship with standard npm, release-please, and GitHub Actions tooling.

Why Opensteel

Byte-level compatibility, without the hosted generator.

Near byte-identical output

For supported TypeScript SDK shapes, Opensteel targets output close enough to preserve existing imports, docs, tests, and release workflows.

Built for migration

Use Opensteel as a continuity layer when your SDK already depends on Stainless conventions.

Clean-room pipeline

Generation is driven by OpenAPI plus config. Compatibility is measured by diffing against reference SDKs, not by using Stainless backend code.

MIT-licensed references

Development has focused on public, MIT-licensed SDK outputs and a repo-owned generator you can inspect.

Current scope

TypeScript first, with compatibility as the product.

Opensteel currently supports TypeScript because compatibility only matters if the generated SDK really matches what teams already ship. Python is the next planned target.

OpenAPI 3.x YAML or JSON
Stainless-style config files
TypeScript SDK generation
Near byte-identical compatibility targets
Resource and method generation
Exported model and parameter types
Pagination patterns
Streaming runtime support
GitHub Actions generation workflow
release-please based releases

What it is

A CLI-first continuity tool for teams with Stainless-generated TypeScript SDKs who need to keep generating compatible code from files they control.

What it is not

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

Install the CLI and generate your first SDK.

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