AI-native dependency upgrades, right in your terminal.

apiweiser-cli watches your dependencies, confirms which updates actually break your code, and opens the pull request with the fix — before you ever run the upgrade.

curl -fsSL https://apiweiser-cli-fe.vercel.app/install.sh | sh

Maps every real call site

Resolves how your code actually calls each dependency using TypeScript's type checker, not import-tracing — every link in a chained call is caught, even through wrapped or reassigned values.

Classifies releases, not guesses

Watches each dependency's GitHub releases, asks an LLM whether the latest one is breaking, and only acts once Renovate independently confirms the update is available — including security upgrades Renovate surfaces by checking releases against the OSV vulnerability database.

Builds a codemod once, reuses it everywhere

The coding agent runs on every proposed migration, but if the cached codemod already covers a repo's call sites, there's nothing to rewrite, so it doesn't spend extra tokens doing so. When a repo's call sites don't fit yet, it extends the existing codemod instead of starting over, so coverage only grows.

Opens the pull request

Bumps the dependency in package.json and the lockfile, applies the codemod for real, then branches, commits, and opens a PR against your repo — you just review and merge.

From breaking release to open PR

Once a release is classified as breaking, a coding agent builds and tests the migration, apiweiser bumps the dependency for real, and the PR lands on your repo — no further action needed from you beyond reviewing it.

apiweiser-cli
chalk 4.1.2 → 5.0.0 breaking
→ coding agent building & testing codemod…
→ bumping chalk to ^5.0.0, applying migration…
- chalk.stderr.supportsColor
+ supportsColorStderr
✓ opened PR: Migrate chalk 4.1.2 -> 5.0.0
~/.apiweiser-cli/codemods/chalk/4.1.2_to_5.0.0
✓ built once (vercel/pkg) — coding agent wrote & tested it
↳ default imports only — 0 edits on ts-loader
✓ extended (ts-loader) — namespace + require() added
✓ reused (your-repo) — already covers it, agent confirms and skips to PR

Every repo makes the next one cheaper

The coding agent is invoked on every proposed migration — but if the cached codemod already covers a repo's call sites, there's nothing new to write, so it doesn't burn extra tokens rebuilding one. When it doesn't cover them yet, the agent extends the existing codemod instead of starting from scratch — so the registry gets more capable, not just bigger, with every repo it touches.