#18408 · @GyuminJack · opened Mar 20, 2026 at 2:54 PM UTC · last updated Mar 21, 2026 at 12:36 PM UTC
feat: add Kiro provider with @ai-sdk/kiro SDK
Score breakdown
Impact
Clarity
Urgency
Ease Of Review
Guidelines
Readiness
Size
Trust
Traction
Summary
This PR adds Kiro as a new AI provider, integrating its SDK and handling Builder ID SSO authentication for several Claude models. It's a large feature that significantly expands OpenCode's capabilities.
Description
Issue for this PR
N/A — new feature, no existing issue.
Type of change
- [ ] Bug fix
- [x] New feature
- [ ] Refactor / code improvement
- [ ] Documentation
What does this PR do?
Adds Kiro as a provider in OpenCode. Kiro uses AWS CodeWhisperer-backed Claude models via Builder ID SSO auth.
Changes:
- New
@ai-sdk/kiroSDK undersrc/provider/kiro/(converters, streaming, tokenizer, language model, provider factory) - Kiro plugin (
src/plugin/kiro.ts) handling Builder ID SSO auth + token refresh - 7 models registered in provider database (Opus 4.5, Opus 4.6, Sonnet 4.5, Sonnet 4.5 v2, Sonnet 4.6, Haiku 4.5, Haiku 3.5)
- Reasoning variants support in
transform.ts
Built on top of work from:
- ikeda-tomoya-swx/opencode — baseline provider implementation
- tickernelz/opencode-kiro-auth — Kiro API request format reference
Two main gotchas with Kiro's API: context window is ~200K tokens (exceeding it causes rejection), and there's no official docs on the exact request payload format — the opencode-kiro-auth repo was essential for figuring that out.
Thanks to both authors for their work 🙏 This is a baseline implementation — some edge cases may not be fully covered, so feedback is welcome.
How did you verify your code works?
bun typecheckpasses (only pre-existing branded type warnings)bun test— 1450 pass, 8 skip, 1 fail (pre-existingcowsaypackage issue, unrelated)- Manually tested model selection and chat with Kiro provider locally
Screenshots / recordings
N/A — no UI changes, provider shows up in existing model selection UI.
Checklist
- [x] I have tested my changes locally
- [x] I have not included unrelated changes in this PR
Linked Issues
None.
Comments
PR comments
duckida
Will it have support for other Kiro logins such as Sign in with Google?
Changed Files
bun.lock
+3−0packages/opencode/package.json
+1−0packages/opencode/src/acp/agent.ts
+14−0packages/opencode/src/plugin/index.ts
+2−1packages/opencode/src/plugin/kiro.ts
+291−0packages/opencode/src/provider/provider.ts
+293−6packages/opencode/src/provider/schema.ts
+1−0packages/opencode/src/provider/sdk/kiro/src/converters.ts
+733−0packages/opencode/src/provider/sdk/kiro/src/index.ts
+2−0packages/opencode/src/provider/sdk/kiro/src/kiro-language-model.ts
+469−0packages/opencode/src/provider/sdk/kiro/src/kiro-provider.ts
+36−0packages/opencode/src/provider/sdk/kiro/src/model-resolver.ts
+15−0packages/opencode/src/provider/sdk/kiro/src/streaming.ts
+631−0packages/opencode/src/provider/sdk/kiro/src/tokenizer.ts
+107−0packages/opencode/src/provider/transform.ts
+16−0packages/opencode/src/session/message-v2.ts
+7−5packages/opencode/test/plugin/kiro.test.ts
+40−0packages/opencode/test/provider/kiro-compaction.test.ts
+237−0packages/opencode/test/provider/kiro-provider.test.ts
+369−0packages/opencode/test/provider/kiro-tool-pairing.test.ts
+468−0packages/opencode/test/provider/kiro.test.ts
+569−0packages/opencode/test/session/compaction.test.ts
+1−0packages/opencode/test/session/message-v2.test.ts
+4−1