This document describes the process for releasing new versions of the Tambo packages (React SDK, TypeScript SDK) and the Tambo Cloud apps that now live in this monorepo.
The Tambo API is built in apps/api; its OpenAPI spec is generated from the NestJS decorators (npm run generate-config). The SDK is generated from that spec by stlc — Stainless's source-available CLI — running in our own GitHub Actions (the hosted Stainless service was sunset; see "Migrating off hosted Stainless" below). After deploying a new API:
- A push to the
deploybranch triggers.github/workflows/stlc-generate.yml, which regenerates the OpenAPI spec fromapps/apiand runsstlc build --pushto regenerate@tambo-ai/typescript-sdkand push the generated code to that repo'smain. - The SDK repo's
release-please.ymlopens (or updates) a release PR with the version bump and changelog. - A developer reviews and merges the release PR.
- Merging tags a GitHub Release, which triggers
publish-npm.yml(OIDC) to publish to https://www.npmjs.com/package/@tambo-ai/typescript-sdk.
The stlc CLI is installed in CI from the private tambo-ai/stlc-vendor release (via .github/actions/setup-stlc), so generation does not depend on github.com/stainless, which is unavailable after 2026-09-01.
Once the Tambo API client is updated, the React SDK can be updated.
- After
@tambo-ai/typescript-sdkis published to NPM, update the dependency in the @tambo-ai/react repository. There are two ways to do this:- Kick off a full Dependabot update at https://github.com/tambo-ai/tambo/network/updates
- Manually update the dependency by running:
npx npm-check-updates -u @tambo-ai/typescript-sdk
- Create and merge a PR with the dependency update. You may have to fix types and tests to reflect changes in the Tambo API.
- The release-please action will create a release PR to bump the version.
- Once approved and merged, release-please will publish the new version to https://www.npmjs.com/package/@tambo-ai/react. You can watch progress at https://github.com/tambo-ai/tambo/actions/workflows/release-please.yml
When you update either or both SDKs, also update the dependencies that live under apps/api/ to ensure smoketests reference the latest versions.
- OPTIONAL: After both
@tambo-ai/typescript-sdkand@tambo-ai/reactare published, updateapps/api/dependencies either:- Through Dependabot at https://github.com/tambo-ai/tambo/network/updates
- Or manually by running:
npx npm-check-updates -u @tambo-ai/typescript-sdk @tambo-ai/react
- Create and merge a PR with the dependency updates.
- The release-please action will create a release PR to bump the version.
- Once approved and merged, release-please will trigger deployments. Watch progress:
- Merge to
deploy: https://github.com/tambo-ai/tambo/actions/workflows/release-please-cloud.yml - Release to Vercel: https://vercel.com/tambo-ai/tambo-landing/deployments
- Release to Railway: https://railway.com/project/f6706075-78e8-4b8f-93ff-a07ef6da36d9/service/720e5a60-8fb2-4bca-ad76-38b983649287?environmentId=cb7ad6ef-d499-4792-8656-780891015359
- Merge to
All of the Tambo repos are managed using release-please.
The release-please configuration lives in two files:
release-please-config.json- Defines packages, plugins, and changelog sections.release-please-manifest.json- Tracks current versions for each package
Key configuration:
separate-pull-requests: true- Each package gets its own release PRnode-workspaceplugin - Keepspackage-lock.jsonin sync when workspace package versions are bumpedsync-lockfile.ymlworkflow - Backup mechanism that regenerates the lockfile on release PRs
In general, the process is as follows for any repo:
- When new PRs are merged, release-please will automatically create or update a
new release candidate on the
mainbranch. New PRs must be named using Conventional Commits. Generally this means prefixing the PR title with eitherfixif it's a bug fix,featif it's a new feature, orchoreif it's a refactor or other change that doesn't add or remove any functionality. - A PR will be automatically created or updated that updates the version of the
Tambo packages in the
package.jsonfiles. - When the release PR is merged, release-please will create a new release on
GitHub and either:
- If it is a library, it will create a new release and push it to NPM.
- If it is an app, it will create a new release and push it to Vercel/Railway
Stainless was acquired by Anthropic and is sunsetting all hosted products
(SDK generator, build API, GitHub App, the stainless-sdks staging org) on
2026-09-01. SDK generation now runs on stlc, Stainless's
source-available CLI, in our own CI. The stlc workspace (OpenAPI spec,
openapi.stainless.yml, custom-code tracking) lives in stainless/ in this
repo; the vendored stlc packages live in the private tambo-ai/stlc-vendor
repo so CI survives the shutdown.
To preview SDK changes locally before a release:
-
Install stlc (one-time): download the tarballs from the latest
tambo-ai/stlc-vendorrelease andnpm install -gthem, or see.github/actions/setup-stlc. -
Regenerate the spec from your local API:
OPENAPI_SPEC_FILE=stainless/openapi.json npm run generate-config -w apps/api
-
Build and inspect the SDK from the
stainless/workspace:stlc build # generate into ./sdks stlc test # run the SDK test suite stlc preview # preview the SDK + API reference
Custom code (hand edits to the generated SDK) is sealed via stlc build and
tracked under stainless/custom-code/; commit those tracking files alongside
spec/config changes. See plans/2026-06-04-001-feat-stlc-sdk-migration-plan.md
for the full migration record.
- The Tambo API is built and deployed to Railway. You can monitor deployment and runtime logs at:
deploybranch goes to Productionmainbranch goes to Development
- We use stlc (Stainless's source-available CLI, run in our own CI; vendored privately at
tambo-ai/stlc-vendor) to generate the Tambo client SDKs from the OpenAPI spec. The upstreamgithub.com/stainlessrepos are unavailable after 2026-09-01.