Skip to content
Guides

Bring your own provider

Any OpenAI-compatible endpoint, your own key, and the settings file that saves you retyping both.

There is no bundled model and no hosted endpoint. Model calls go through litellm, so any OpenAI-compatible endpoint works with any model name that endpoint serves.

Point it at an endpoint

neo fix \
  --repo . \
  --issue "..." \
  --provider openai \
  --model <model> \
  --api-key $MY_KEY \
  --api-base https://my-router.example.com/v1

`--base-url` is accepted as an alias of `--api-base`. When an endpoint is set and no provider is given, the provider defaults to `openai`, which is the right dialect for an OpenAI-compatible router; an explicit `--provider` always wins.

The settings file

KeyWhat it sets
modelModel name to send to the provider
providerlitellm provider name
budget_cap_usdHard cap on model spend per task (default 2.0)
max_retriesFull attempts at the whole task (default 3)
plan_previewShow the plan before it runs, in interactive mode
log_verbosity"quiet" suppresses the interactive session's chatter
log_rootWhere task logs and sessions are written (default ./logs)
neo config set base_url https://my-router.example.com/v1
neo config set model <model>
neo config list     # effective values, and which tier each came from
neo config path     # where the files live on this machine

Precedence

  • Explicit CLI flags
  • Environment: NEO_MODEL, NEO_PROVIDER, NEO_BASE_URL, NEO_API_BASE, NEO_API_KEY
  • Project `<repo>/.neo/settings.local.toml`, then `<repo>/.neo/settings.toml`
  • The global settings.toml — %APPDATA%\neo\ on Windows, ~/.config/neo/ elsewhere
  • The legacy ~/.neo/config.toml, read only when the global file is missing
  • Built-in defaults