Multi-gateway providers: named, typed OpenAI-compatible gateways#762
Open
maciej-makowski wants to merge 1 commit into
Open
Multi-gateway providers: named, typed OpenAI-compatible gateways#762maciej-makowski wants to merge 1 commit into
maciej-makowski wants to merge 1 commit into
Conversation
Generalize the single hardcoded AI Gateway integration into an ordered
list of named, typed OpenAI-compatible gateways. Each gateway has
{id, name, url, type, enabled}; two types are supported:
- aigw — Bedrock-routed Claude ids (singleton, name pinned to "aigw")
- openai-compatible — raw OpenAI-style endpoints for local models
(llama.cpp/llama-swap, LM Studio, Ollama, vLLM, etc.)
Gateways persist under the new `modelGateways` preference. A boot-time,
idempotent migration upgrades the legacy single `aigw.url` (+exclusive)
pref into the list. Type-driven models.json writers and model discovery
dispatch on gateway type; exclusivity is derived (any enabled aigw-type
gateway implies exclusive mode).
Includes the REST surface, a settings list editor, and a display-only
'hide unconfigured / Has key' model-picker filter, plus design docs,
reference docs, and unit + API + browser E2E coverage.
Co-authored-by: bobbit-ai <bobbit@bobbit.ai>
Co-Authored-By: Bobbit (Claude Opus 4 8) <bobbit@bobbit.ai>
maciej-makowski
referenced
this pull request
in maciej-makowski/bobbit
Jun 12, 2026
Document the per-file hybrid port technique used to offer the multi-gateway-providers feature to upstream (SuuBro/bobbit#762): classify touched files, take drift-free feature-exclusive files verbatim, 3-way merge only the feature's hunks into shared files, and prove residual test failures are pre-existing/environmental. Detailed recipe + env caveats in docs/dev-workflow.md; tight step list pointer in AGENTS.md. Co-authored-by: bobbit-ai <bobbit@bobbit.ai>
maciej-makowski
marked this pull request as ready for review
June 12, 2026 16:30
maciej-makowski
added a commit
to maciej-makowski/bobbit
that referenced
this pull request
Jun 12, 2026
⚠️ **THIS PR SHOULD BE MERGE-COMMITTED TO PRESERVE LINEAGE** --- ## Summary of Upstream Changes ### 1. Pack PR walkthrough tools ([G-Research#763](https://github.com/SuuBro/bobbit/pull/763)) **Author:** Joshua Subramaniam | **31 files changed**, +1891/-600 Major refactor of the PR Walkthrough feature: - Migrated `extension.ts` from `defaults/tools/pr-walkthrough/` into the market-pack at `market-packs/pr-walkthrough/tools/pr-walkthrough/` - Added shared gateway utilities (`tools/_shared/gateway.ts`) for pack-level reuse - Updated all related design docs, marketplace docs, and extension-host-authoring guide - Added new tests: `marketplace-activation-tool-catalogue.test.ts`, `rpc-bridge-pack-path-remap.test.ts` - Updated Docker args, RPC bridge path remapping, and server routes to support pack-based tools ### 2. Update mock review prompt **Author:** Josh S. | **1 file changed** Updated the mock review prompt configuration in `.bobbit/config/project.yaml`. ### 3. Polish built-in pack activation UI ([G-Research#762](https://github.com/SuuBro/bobbit/pull/762)) **Author:** Josh S. | **7 files changed**, +247/-58 UI improvements for the marketplace page: - Enhanced built-in pack activation experience with polished styling - Added new CSS classes and improved marketplace page layout - Updated AGENTS.md and server routes to reflect UI changes - Added e2e test coverage for pack activation flow --- **Upstream PRs:** - [G-Research#763](https://github.com/SuuBro/bobbit/pull/763) — Pack PR walkthrough tools - [G-Research#762](https://github.com/SuuBro/bobbit/pull/762) — Polish built-in pack activation UI 🤖 Generated with [Bobbit](https://github.com/SuuBro/bobbit)
This was referenced Jul 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Generalises Bobbit's single hardcoded AI Gateway integration into an ordered list of named, typed OpenAI-compatible gateways. This lets you point Bobbit at one or more OpenAI-style endpoints — for example a local model server (llama.cpp / llama-swap, LM Studio, Ollama, vLLM) — alongside (or instead of) the existing AI Gateway.
Motivation
Today the gateway integration assumes a single
aigw.urlthat is Bedrock-routed for Claude ids. There's no first-class way to register a plain OpenAI-compatible endpoint, which is what most local model servers expose. This PR makes the gateway list a proper, typed, user-editable concept.What's included
{ id, name, url, type, enabled }. Two types:aigw— Bedrock-routed Claude ids (singleton; name pinned to"aigw"sodefault.sessionModelstill resolves).openai-compatible— raw OpenAI-style endpoints; ids passed through untouched (never Bedrock-routed).modelGatewayspreference. An idempotent boot-time migration upgrades the legacy singleaigw.url(+aigw.exclusive) pref into the list with no user action.models.jsonwriters and model discovery dispatch on gateway type via dispatch tables. TheaigwBedrock+headers block is preserved byte-for-byte.aigw-type gateway ⇒ exclusive) rather than stored as a separate flag.configure/refresh/status/DELETEshims for the legacy single-gateway API./api/modelsor server-side resolution).Behaviour & compatibility
openai-compatiblegateways are never Bedrock-routed, even forclaude-*ids.Testing
Built on the latest
master. All feature tests green locally:apiE2E project also green (893 passed / 2 skipped).Docs included:
docs/multi-gateway-providers.md(reference) anddocs/design/multi-gateway-providers.md(design), plusthinking-levels.md/internals.md/rest-api.md/debugging.mdupdates.🤖 Generated with Bobbit