When your API changes, we upgrade your customers' code.
Breakwater is an AI agent that rewrites code for breaking SDK changes, checks every upgrade with the repo's own tests, and opens the pull request.
Results so far
It works on real repos, checked by their own tests
We ran the agent on public open-source repos still on old SDK versions. An upgrade only counts when a test that ran the old code before still passes after.
OpenAI SDK 0.x to 1.x
Real repos upgraded on a $1 budget each, about $0.67 per upgrade. All 16 with a bigger budget.
Mistral SDK to 2.x
Repos the agent had never seen, upgraded on a $1 budget each, about $0.28 per upgrade.
OpenAI's own migration tool
Same 16 repos, same tests. Rule-based tools miss what they can't see, and they go stale.
Results as of September 2026. Pull requests are on our own forks; we don't open pull requests on projects that haven't asked for them.
How it works
From a release note to a tested pull request
- Read the migration guideYour release notes and upgrade docs.
- Find every affected callImports, clients, responses, errors, streaming.
- Rewrite it in a sandboxMinimal diffs, isolated from secrets.
- Run the tests before and afterAnd retry when something fails.
- Open a pull requestExplaining each change, with the evidence.
Step 4 is the difference. We check which tests actually run the code being upgraded, so "tests pass" means the upgrade was checked, not just that the suite was green.
Before · OpenAI SDK 0.x
import openai
openai.api_key = os.environ["OPENAI_API_KEY"]
resp = openai.Completion.create(
engine="gpt-3.5-turbo-instruct",
prompt=prompt,
)
text = resp["choices"][0]["text"]
After · OpenAI SDK 1.x
from openai import OpenAI
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
resp = client.completions.create(
model="gpt-3.5-turbo-instruct",
prompt=prompt,
)
text = resp.choices[0].text
A typical upgrade. Rule-based tools often miss details like engine= becoming model= or dictionary access becoming attributes; the tests catch them.
For API companies
Ship the breaking change. We'll bring your users along.
Customers who never upgrade cost you support time, keep old versions alive for years, and slow down every deprecation. Migration guides only help the users who read them.
- Triggered by your releaseYou decide when a migration goes out, not each user.
- Upgrades land in your users' reposAs pull requests they can review and merge.
- Every upgrade is test-checkedAgainst the user's own tests, before anyone sees it.
- Start with public reposWe'll run the agent on open-source projects still on your old version and share what we find.
Team
Two MIT students who've built together before
Rinoa Oliver
Co-founder & CEO
MIT '28, computer science and math. Researches motion-planning algorithms at MIT CSAIL.
Oleksandr Sokolov
Co-founder & CTO
MIT '28, math with computer science, and chemical engineering. Machine-learning researcher; built Breakwater's agent.
Questions
What people ask first
Do you open pull requests on projects that didn't ask for them?
No. Until a project opts in, upgrades stay on our own forks. Maintainers should decide what lands in their repo.
What happens when the tests fail?
The agent reads the failure and tries again. If the tests still fail, there's no pull request, and we count it as a failure in our results.
What if a repo's tests never touch the code that changed?
Then the tests can't prove anything about the upgrade, so we don't count it as a success. Before changing anything, we check which tests actually run the code being upgraded.
Which SDKs do you support?
Python SDKs today, with published results on OpenAI's and Mistral's. Tell us which SDK and version you care about and we'll run it.
Is it safe to run on real code?
Every upgrade runs in an isolated sandbox with no access to secrets or API keys.
Contact
Shipping a breaking change soon? Let's talk.
We're running free pilots with a few API companies this fall. Tell us which SDK and version you'd like upgraded, and we'll run the agent on public repos still on the old one.