Viro API

Integrations / Continue

Continue

Continue's openai provider takes an apiBase override, which is all Viro needs. Unlike most clients, Continue sends your model string through unchanged — no prefix juggling. It does have one trap, covered below, and it's the one that will actually bite you.

Status: unverified. Configuration below follows Continue's documented OpenAI-compatible setup, but we have not yet run a live Agent-mode session against Viro ourselves.
Configure

Edit ~/.continue/config.yaml (%USERPROFILE%\.continue\config.yaml on Windows). Continue reloads on save.

name: My Config
version: 0.0.1
schema: v1

models:
  - name: Viro Optimized
    provider: openai
    model: viro/optimized
    apiBase: https://api.viro.app/v1
    apiKey: <your-viro-key>
    capabilities:
      - tool_use
    defaultCompletionOptions:
      contextLength: 128000

  - name: Viro Embeddings
    provider: openai
    model: viro/qwen3-embedding-8b
    apiBase: https://api.viro.app/v1
    apiKey: <your-viro-key>
    roles:
      - embed

Get a key from API Keys. The value of model is sent to us verbatim, so it must be a live Viro slug — GET https://api.viro.app/v1/models has the current list.

Read this before using a gpt-5 slug

Continue decides which endpoint to call by pattern-matching the model name. For o-series and gpt-5 models it defaults to OpenAI's /responses endpoint instead of /chat/completions.

Viro does not serve a Responses endpoint. So every Viro slug that contains gpt-5 — openai/gpt-5.6-terra, openai/gpt-5.6-luna, openai/gpt-5.4-mini, openai/gpt-5.4-nano — needs the default turned off, or the request never reaches a route that exists:

  - name: GPT-5.6 Terra
    provider: openai
    model: openai/gpt-5.6-terra
    apiBase: https://api.viro.app/v1
    apiKey: <your-viro-key>
    useResponsesApi: false
    capabilities:
      - tool_use

Models without gpt-5 in the name are unaffected, so the flag is only needed on those entries — but it is harmless to set everywhere, and setting it everywhere means a future slug rename can't silently reintroduce the problem.

Agent mode needs tool_use declared

Continue autodetects model capabilities from the provider and model name. That detection is built around OpenAI's own catalog and won't recognise viro/* slugs, so tool calling can come back off by default — and Agent mode requires it. Declaring capabilities: [tool_use] explicitly, as in the config above, overrides the guess.

Add image_input alongside it for vision models. The Models page marks which models accept image input and carries the real context window for contextLength.

Roles

A model entry defaults to [chat, edit, apply, summarize]. Naming roles explicitly lets you split work across models — a frontier model for chat and edit, something cheap for apply, and viro/qwen3-embedding-8b for embed so codebase indexing runs through Viro too — see Embeddings.

Continue's autocomplete role wants a fast fill-in-the-middle model and a sub-second budget. Viro's catalog is aimed at chat and agentic work, so expect autocomplete through Viro to feel slower than a purpose-built local model.