Fern Autorelease

View as Markdown

Fern Autorelease automates SDK releases end-to-end. When your API specification changes, Autorelease regenerates SDKs, determines the version bump, and publishes to package registries.

How it works

Autorelease detects changes to your spec using either git-based detection (monitors your spec repository for commits) or pull-based detection (periodically fetches your hosted spec from a URL). Once changes are detected, Autorelease:

  1. Regenerates SDKs for all configured languages
  2. Analyzes the API diff and determines the next version (semantic, calendar-based, integer, or custom)
  3. Commits to repositories, tags releases, and publishes packages
  4. Updates changelogs automatically

Autorelease pauses and requests confirmation if it’s uncertain about the version bump. Publishing uses tokens stored in your GitHub Actions secrets—Fern never has access to these credentials.

If a release fails, Autorelease pauses and sends alerts via Slack (if configured) or the Fern Dashboard where you can review and retry.

Setup

Autorelease will be enabled by default on December 18th, 2025 for all existing SDK repositories with the Fern GitHub App installed. Releases trigger automatically on commits to your spec repository and appear as commit status checks. No changes to your CI/CD setup are required.

Autorelease commit status check

Customize Autorelease if you need to fetch from a hosted spec URL, review releases before publishing, or disable automatic releases entirely:

Add a cron schedule to your generators.yml:

generators.yml
1autorelease:
2 cron:
3 schedule: "0 0 * * 0" # Weekly on Sunday at midnight

Or configure per-generator:

generators.yml
1groups:
2 python-sdk:
3 generators:
4 - name: fernapi/fern-python-sdk
5 version: 4.45.5
6 autorelease:
7 cron:
8 schedule: "0 */6 * * *" # Every 6 hours

Set mode: pull-request to review releases before publishing. Autorelease will open a pull request for you to review instead of publishing directly.

generators.yml
1groups:
2 ts-sdk:
3 generators:
4 - name: fernapi/fern-typescript-sdk
5 ...
6 github:
7 repository: your-org/your-repo-name
8 mode: pull-request

Disable globally:

generators.yml
1autorelease: false

Or per-generator:

generators.yml
1groups:
2 ts-sdk:
3 generators:
4 - name: fernapi/fern-typescript-node-sdk
5 version: 3.39.2
6 autorelease: false

To disable Autorelease entirely for your organization, reach out via Slack.