VS Code
Use ZRO models directly in VS Code's Copilot Chat with the ZRO extension.
The ZRO extension registers the API as a VS Code language model provider, so ZRO models appear natively in the Copilot Chat model picker. Pick a model, chat as usual, and responses stream from the endpoint with full tool-calling support.
Requires VS Code 1.104 or later.
Install
Install ZRO from the VS Code Marketplace, or from the command line:
To install a downloaded .vsix instead, use Extensions → … →
Install from VSIX…, or code --install-extension <file>.vsix.
Authenticate
The extension uses the first of these that provides a key:
ZRO_API_KEYenvironment variable.- VS Code SecretStorage — set by
ZRO: Sign in with browser(a device flow that opens your browser, then stores the key on approval) orZRO: Enter API key(paste a key,sk-...). ~/.config/zro/credentials.json— if you already ranzro login, the extension reads the same file. See the CLI reference.
If none is set, run ZRO: Dashboard — or open the ZRO icon in the
activity bar. Until you authenticate, its Overview tab shows a Not connected
status with Sign in with browser and Enter API key buttons; both commands
are also in the Command Palette. The CLI reference covers the
zro login alternative.
Use
- Open Copilot Chat (
⌘⇧I/Ctrl+Shift+I). - Pick a model from the picker — ZRO models are prefixed with
ZRO. - Chat as usual. Tool calls (file edits, terminal, etc.) round-trip through Copilot Chat's agent loop like any built-in model.
The catalog is fetched live from the control plane on each picker refresh, so newly activated models appear without an extension update. If the control plane is unreachable, a built-in model list keeps the picker populated.
Dashboard
Run ZRO: Dashboard, or open the ZRO icon in the activity bar, to open
the dashboard panel:
| Tab | Shows |
|---|---|
| Overview | Connection state, where the API key resolved from, the masked key, and the current plan. |
| Models | Every active model with its context window and a Set as default action, plus effort controls. |
| Cost | Plan allowance, usage-pack credits, remaining credit, and trailing-30-day activity. |
| Cache | Prompt-cache read tokens over the trailing 30 days as a share of total input. |
| Team | Account and plan details. Team and workspace management is not exposed yet. |
Endpoints are provisioned out-of-band on serving nodes, so the dashboard lists the models your key can reach rather than a separate endpoint list. Prompt-cache and team management controls are not exposed by the API yet, so those tabs show observed usage and mark the controls as unavailable.
Reasoning effort
Reasoning models let you choose how hard they think before answering. ZRO's own
commands and settings call this reasoning effort; the control VS Code renders
inside the model picker is labelled Thinking Effort (the title on the
model's configuration schema). Set it from any of:
- Model picker → Thinking Effort — the model's own control, where your VS Code build renders per-model options.
- Command Palette →
ZRO: Set reasoning effort— pick a model (or Global default) and a level. - Dashboard → Models tab — the Effort chevron on each reasoning model.
- Settings →
zro.reasoningEffort(all models) andzro.reasoningEffortByModel(per model).
Precedence is picker choice → per-model setting → global setting → the model's
server default. default sends nothing, so the control plane applies the
level it recommends. A level a model does not support falls back to that model's
default rather than erroring.
Levels come from the live catalog, so the choices match the model: DeepSeek
V4.1 Flash accepts none / low / high / max, and GLM-5.3 accepts low /
high / max. To make DeepSeek V4.1 Flash skip reasoning while every other
model keeps its server default:
Configuration
| Setting | Purpose | Default |
|---|---|---|
zro.reasoningEffort | Reasoning effort for all ZRO models | default |
zro.reasoningEffortByModel | Per-model overrides, keyed by model ID | {} |
ZRO_API_KEY (env) | API key — overrides stored credentials | — |
ZRO_ENDPOINT_ROOT (env) | Inference and catalog endpoint root | https://zro.moonmath.ai |
Other extensions
ZRO also works inside Cline, Continue, and Roo Code.
Run ZRO: Configure in other extensions — it detects which of the three are
installed and walks you through wiring them up.
- Cline and Roo Code can use ZRO models with no second API key through their VS Code Language Model API provider, because ZRO already registers as a language model provider. The command also offers to generate an OpenAI-compatible profile (base URL + API key + model ID) for users who prefer that provider type.
- Continue is configured by merging ZRO entries into
~/.continue/config.yaml(orconfig.json). Your API key is written to that file in plaintext, so the command asks for confirmation first.