One Copilot entry connects ports 20129 and 20128
Version 2.5.0 avoids rewriting Copilot's model entry each time you change providers. The extension adds one target called 9Router via Proxy, starts an HTTP proxy on 127.0.0.1:20129, and replaces the outgoing request's model field with the current selection. The request then goes to 9Router on port 20128. That is a narrow solution to a real annoyance: after the first setup, choosing another model does not require another editor reload.
You can choose from the VS Code status bar or a browser dashboard on port 5500. The extension also exposes commands to set the gateway URL and key, refresh model choices, add an ID manually, inspect status, and remove its Copilot entry. Streaming responses are piped back to Copilot Chat. If 9Router cannot return its live model list, the code falls back to the active or configured IDs rather than pretending the gateway answered.
The 19-second install covers only the dashboard dependency
Our fresh Debian sandbox installed commit 7b77bc3 in 19 seconds. Npm added 78 packages, occupied 8 MB, and reported 0 known vulnerabilities. That is a pleasantly small JavaScript dependency footprint. It does not install a ready-to-use Copilot routing stack by itself. The root package has one development dependency, serve, and its start command hosts the static dashboard.
The documented setup separately installs 9Router globally and installs releases/routevscode.model-connector-2.5.0.vsix through the VS Code CLI. You also need Node.js 18 or newer, VS Code 1.90 or newer, GitHub Copilot Chat, a 9Router API key, and provider credentials or credit behind the gateway. That is reasonable for an individual machine already using 9Router. It is several moving parts for an organization expecting one managed extension.
What happened when we ran it
In our unprivileged Debian sandbox with 3 CPUs and 8 GB of RAM, npm installation was the only supplied lifecycle step we could run. It finished in 19 seconds with 78 packages and 8 MB on disk. Npm audit found 0 known vulnerabilities. The checkout itself contained 21 files, about 3,821 lines of source, and occupied 1 MB before installation.
There was no build script or build target, so we skipped that step. There was also no test script or test target, so we skipped tests. The repository had 0 CI workflow files, no Dockerfile, and no tests directory. None of those skipped checks is a pass. Our sandbox result says the dependency tree installed cleanly; it says nothing about a live Copilot request, model switching, provider behavior, or the bundled VSIX.
Version 2.5.0 writes the key into ordinary VS Code configuration
The extension asks for a 9Router key, writes it into VS Code's global configuration, and copies it into chatLanguageModels.json when it creates the proxy entry. The dashboard can also send a key through a vscode:// URI during model activation. That design makes setup direct, but it does not use VS Code's secret storage API. A developer with access to those configuration files can read the value.
This is a valid reason to reject the tool in a managed environment even if the gateway stays on localhost. The proxy itself binds to 127.0.0.1 on port 20129, which limits network exposure, and it replaces Copilot's authorization header with the configured gateway key before forwarding. Those choices do not change where the credential rests on disk. Use a narrowly scoped 9Router key and check whether your endpoint policy permits that storage model.
Version 2.5.0 is a checked-in VSIX with no release record
The extension manifest and filename both say version 2.5.0, and the README tells users to install that VSIX directly from the clone. GitHub's latest-release endpoint returned no release, and the repository does not link to a Marketplace listing. Updates therefore depend on watching the repository, pulling a new copy, and reinstalling whatever package the maintainer commits. There is no release page supplying notes, signatures, or a separate artifact history.
GitHub showed 170 stars, 0 open issues or pull requests, and a last push on September 10, 2026. The empty queue offers no user-support trail, while the recent push says more than a missing release tag about current maintenance. With no CI and no tests in our scan, version 2.5.0 still asks users to trust source inspection and manual behavior checks.
Three local services make sense only for existing 9Router users
The dashboard includes model filtering, response checks, and side-by-side comparison controls, but its useful path is built around one gateway and one editor chat. If your team wants a general model gateway, LiteLLM or Portkey can sit behind several applications. If you want the coding assistant to manage providers directly, Continue removes the Copilot-specific proxy layer.
For an existing 9Router user, the idea is appealingly direct: keep one Copilot entry and change its destination model in memory. For everyone else, the 19-second npm install hides the larger adoption cost. You are accepting a manually installed VSIX, Indonesian-only instructions, three local ports, ordinary configuration-file key storage, and no automated test evidence. Quick switching is useful, but those five conditions should be acceptable before you route real prompts through it.

