compatcompatSign in

AI maintenance engineer for third-party APIs. Design partner phase.

Your integrations, kept current.

Stripe, OpenAI, LiveKit and seven more ship breaking SDK releases. compat turns each one into a verified pull request on your repository.

Stripemajor

stripe 14.25.0 18.0.0

apiVersion pinned; Invoice.subscription moved under parent

compatjudging

New release detected

Pull request

Opens here with the checks that ran. You merge.

jobs /compat-playgroundStripe v14 to v18
queued

Upgrade stripe 14 18

compat plans, edits, verifies, then opens the pull request.

  1. Repository
  2. Sandbox
  3. Plan
  4. Edit
  5. Verify
  6. Pull request
worker log00:00
Repository
compat-playground
Branch
pending
Wall clock
00:00
Model cost
metering
Verificationwaiting for edits
CheckCommandResult
installqueued
lintqueued
typecheckqueued
testqueued
buildqueued
Humans merge. compat has no merge capability.
from clone to pull request
190 sfrom clone to pull request
model cost for the run
$0.57model cost for the run
repairs needed
0repairs needed
files changed, both verified
2files changed, both verified

Works with

Works with Stripe, OpenAI, Anthropic, Deepgram, ElevenLabs, RevenueCat, LiveKit, Supabase, Clerk, Twilio.

They ship a breaking release. You get a pull request.

compat watches every SDK your code depends on. When a provider ships something that touches your files, the migration is written, verified against your own checks and opened as a pull request. Releases that do not affect you are dismissed, with the reason.

Upstream releases

1 of 5 seen
  1. Stripemajor

    stripe 14.25.0 18.0.0

    apiVersion pinned; Invoice.subscription moved under parent

    just published_

compat

0 PRs · 0 dismissed
Stripestripe@18.0.0
  1. Read 11 release notes
  2. Judge against src/billing.ts
  3. verdict pending
  1. Sandbox
  2. Edit
  3. Verify
  4. Pull request

Your repository

humans merge

Pull requests land here, each with the checks that ran.

The Stripe row is the real run on compat-playground, pull request #2. The other releases are illustrative; the judging and the pipeline are exactly what runs.

Watch my SDKs

How a job runs

Seven phases, always in this order, always ending in a pull request you review.

  1. 01Connect

    Install the compat GitHub App and pick the repositories it may see; nothing else is visible.

    Install compat-devGitHub App

    Only select repositories

    • your-org/compat-playground
    • your-org/billing-service
    • your-org/marketing-site
    • your-org/infra
    2 repositories. Nothing else is visible.Install
  2. 02Get a proposal, or ask

    compat checks every detected SDK daily, reads the release notes and proposes the migration with the instruction written; or you describe one yourself.

    New migrationcompat-playground
    Stripe
    Upgrade stripe from v14 to v18
    https://docs.stripe.com/upgrades
    Run migration
  3. 03Baseline

    compat clones the repository into a disposable sandbox and runs your own install, typecheck, test and build to learn what green looks like.

    Baseline on mainsandbox 1 of 1
    Sandbox started, repository cloned
    installpassed 3.0 s
    lintnot run, no script
    typecheckpassed 6.0 s
    testpassed 1.1 s
    buildnot run, no script

    compat learns what green looks like before it touches a file. Anything already failing here is labelled pre-existing later.

  4. 04Plan

    Claude reads the code and the upstream changes and writes a plan with explicit steps, the files involved and a confidence estimate.

    Planconfidence high

    Upgrade the Stripe SDK from v14 to v18, pin apiVersion to 2025-08-27.basil, and update the invoice webhook to read subscription from the new parent field.

    Affected files

    • package.json
    • src/billing.ts

    5 steps

    1. 1Bump stripe to ^18
    2. 2Regenerate the lockfile with npm
    3. 3Pin apiVersion
    4. 4Update handleWebhook for invoice.parent
    5. 5Run typecheck and tests
  5. 05Edit

    Changes go through a restricted tool set with no shell and no secrets, and lockfiles are regenerated by your package manager.

    Editrestricted tool set
    • read_file src/billing.tsallowed
    • write_file src/billing.tsallowed
    • write_file package.jsonallowed
    • run_script installallowed
    • shell not availabledenied
    • write_file .github/workflows/ci.ymldenied
    • read_env not availabledenied

    No shell, no secrets, no hand edits to CI or lockfiles. Repository content is treated as untrusted input.

  6. 06Verify and repair

    Your checks run again, new failures are repaired within a bounded budget, and failures that were already there are reported.

    Verify and repair0 of 3 repairs used
    installpassed 3.0 s
    typecheckpassed 6.0 s
    testpassed 1.1 s
    repair budget

    New failures are repaired within a bounded budget. This run needed none. Failures that were already on main are reported as pre-existing, not fixed silently.

  7. 07Pull request

    A branch is pushed, a pull request opens with the recorded evidence in its body, and a person merges.

    Pull request#2 open

    chore(stripe): migrate integration to 18.0.0

    integration-maintenance/stripe/8f2c into main

    Checks3 passed, 2 not run
    Files changed2
    Manual steps2 listed
    Mergea person, always
    Rendered from recorded evidence.Review

A real pull request

Not a mockup. The diff, the evidence and the warnings from an actual run against a playground repository, replayed.

Repository
compat-playground
Migration
Stripe v14 to v18
Wall clock
190 s
Agent turns
16
Repairs
0
Model cost
$0.57
Open

Migrate Stripe SDK from v14 to v18 #2

compat-devwants to merge 1 commit intomainfromintegration-maintenance/stripe/8f2c

  • package.json+1-1
  • src/billing.ts+3-2
package.json  "dependencies": {-    "stripe": "^14.25.0"+    "stripe": "^18.0.0"  }src/billing.ts@@ apiVersion @@-  apiVersion: "2023-10-16",+  apiVersion: "2025-08-27.basil",@@ handleWebhook @@-  return { paid: true, subscription: invoice.subscription };+  const subscription = invoice.parent?.subscription_details?.subscription ?? null;+  return { paid: true, subscription };
Checks3 passed, 2 not run
CheckCommandResult
installnpm ci3.0 s
lintno scriptnot run
typechecknpm run typecheck6.0 s
testnpm run test1.1 s
buildno scriptnot run

Warnings and manual steps

Copied from the pull request body. compat says what it could not prove.

  1. 1Confirm the Stripe account's API version is compatible with the 2025-08-27.basil pin.
  2. 2Review downstream consumers of handleWebhook().subscription: the value is now null for invoices not parented by a subscription.
Merging is always a decision made by a person with write access.

compat notices before you do.

Every SDK it has seen in your code is checked daily. New releases are read, judged against the files that actually use them, and turned into a proposal with the migration already written. You decide whether it runs, or let it run on its own.

  • Propose

    Detect the release, judge relevance, email you. You click Run.

  • Auto-run minors

    Low-risk upgrades run on their own; majors wait for you.

  • Auto-run everything

    Every relevant release becomes a pull request, majors included.

Irrelevant releases never run. Every run still ends in a pull request a person merges.

repositories / compat-playground / upstream changeschecked daily
breakingmajorstripe ^14.25.0 → 22.6.2

Upgrade stripe 14 → 22.6.2: pinned API version, v22 type-system migration and constructor/typings changes

The repository pins stripe at ^14.25.0 while the latest release is 22.6.2. The SDK now pins API version 2026-08-26.dahlia, went through a v22 type-system migration, and webhook secrets are now validated as non-empty. The only consumer here is src/billing.ts, so its client construction, typed usage and webhook verification need to be re-checked.

Migration instruction, drafted from the release notes

Upgrade stripe to ^22.6.2 and regenerate the lockfile. Read the installed types before pinning apiVersion; do not guess. Verify every Stripe type still resolves under the v22 type system. Ensure the webhook secret passed to constructEvent cannot be empty, since v22.6.2 now throws. Run the repository's own checks and report.

Connect a repositoryMonitoring is on by default in propose mode. Nothing runs without a pull request you review.

Built to be trusted with your code

The security model is short enough to draw. The long version is on the security page.

  1. 01 of 05

    A disposable sandbox per job

    Your repository is cloned into a fresh sandbox that runs your checks, hosts the edits and is destroyed when the job ends; compat keeps no copy of your source.

  2. 02 of 05

    Evidence, not claims

    The pull request body lists every check as passed, failed or not run, with its duration, and a check that did not run is never presented as a pass.

  3. 03 of 05

    Tokens minted per job, never stored

    Each job mints a one-hour token scoped to that repository, uses it for the clone, the push and the pull request, and never writes it anywhere.

  4. 04 of 05

    Repairs inside a budget

    When your checks fail after an edit, compat repairs within a bounded loop, then stops and reports instead of guessing.

  5. 05 of 05

    Knows what changed upstream

    Every job compares your dependencies with what compat knows about each provider, so the plan starts from facts about the SDK rather than a blank prompt.

Ten providers, one engine

Every provider comes with what compat knows about its breaking changes, so plans start from facts about the SDK rather than from scratch. Adding one is a data file; design partners get theirs on request.

  • Stripe

    SDK majors, apiVersion pins, Invoice and Checkout typings, webhook payload changes. v14 to v18 verified end to end.

  • OpenAI

    Chat Completions to the Responses API, renamed parameters, removed fields and retired model ids.

  • Anthropic

    budget_tokens to adaptive thinking, removed sampling parameters, model id and Messages API updates.

  • Deepgram

    v3 client shape, live transcription events, model ids

  • ElevenLabs

    package rename, streaming API, model and voice settings

  • RevenueCat

    configure and CustomerInfo renames, entitlement checks

  • LiveKit

    server SDK v2, async tokens, RoomEvent renames

  • Supabase

    auth-helpers to @supabase/ssr, v2 error handling, new keys

  • Clerk

    authMiddleware to clerkMiddleware, async auth(), redirects

  • Twilio

    v4/v5 client, webhook validation, Conversations

  • Yours next

    Design partners get a provider added within days.

Priced on time saved, not on usage

Every tier opens the same pull requests with the same evidence. Tiers differ in repositories and jobs a month.

Design partner

First ten teams

A direct line to the people building compat, providers added for your stack, and a price that does not move for a year.

$199per month, all in

Talk to us
  • Unlimited repositories during the partnership
  • Providers added on request
  • Slack channel with the people building compat
  • Price locked for twelve months
  • Free

    $0no card

    Repositories
    1 repository
    Jobs
    3 jobs a month

    A first migration on one repository.

    • All 10 providers
    • Upstream monitoring, propose mode
    • Pull requests with full evidence
    Start free
  • Starter

    $99per month

    Repositories
    2 repositories
    Jobs
    30 jobs a month

    One small service, a couple of SDKs to keep current.

    • All 10 providers
    • Upstream monitoring with auto-run
    • Pull requests with full evidence
    Start free
  • Team

    $299per month

    Repositories
    10 repositories
    Jobs
    150 jobs a month

    Several services, migrations arriving as pull requests instead of tickets.

    • All 10 providers
    • Upstream monitoring with auto-run
    • Slack notifications
    • Verification overrides per repository
    Start free
  • Business

    $799per month

    Repositories
    50 repositories
    Jobs
    600 jobs a month

    Many repositories, custom providers, procurement paperwork.

    • Custom providers
    • Security review and DPA
    • Priority support
    Talk to us

Prices can change before general availability. Design partner pricing is locked once agreed.

Stop scheduling the migration. Review it instead.

Connect one repository and run a connectivity check. About half a minute, and nothing in your code changes.

Connectivity check on the playground repository: 31 s.