Model name parsing
Harbor uses LiteLLM to parse model slugs during setup. Use the same LiteLLM model slug across all agents. Browse Harbor Model Lookup, or enter a model name below to see its provider and parsed model name.- Input model (
-m) → Your original model name. - Parsed provider → Selects Harbor’s built-in credential and endpoint mappings.
- Parsed model ID → Usually sent to the inference provider; adapters may transform it.
openai/gpt-6-sol, openrouter/openai/gpt-6-sol,
anthropic/claude-sonnet-5-5, deepseek/deepseek-v4-flash, or
fireworks_ai/accounts/my-account/models/my-custom-model.
Model slugs that cannot be parsed by LiteLLM are forwarded directly to the agent.
Each agent adapter may then infer the provider from the model slug.
Automatic Secret Collection
For recognized providers and built-in agents, Harbor supports automatic secret collection from host environment variables. This behavior is agent and provider specific, unrelated host variables are not forwarded. See your agent’s auth settings.- Provider Match
- Agent Match
- Explicitly Provided
See collected secrets
See collected secrets
Common automatic secret collection
Common automatic secret collection
These agent-specific variables are recognized in addition to provider variables.
ACP registry agents do not use this automatic forwarding; always pass their credentials
with
--agent-env.Automatic Secret Routing
For built-in agents, Harbor automatically matches model provider secrets to the expected agent api key name. This means you can use yourOPENROUTER_API_KEY even though Codex reads OPENAI_API_KEY;
Harbor handles the rename for you.
For example, when using OpenRouter with Codex, Codex only expects the API key in
OPENAI_API_KEY. Harbor assigns the value of OPENROUTER_API_KEY to
OPENAI_API_KEY so Codex can authenticate with OpenRouter.
This lets you use one provider key, such as OPENROUTER_API_KEY, across multiple
agents without knowing each agent’s native credential variable name. It is
especially useful for benchmark sweeps that compare different agents using the
same model and provider.
- Provider Match
- Agent Match
- Explicitly Provided
See routed secrets
See routed secrets
Automatic Secret Routing rules
When multiple secrets are supplied that match either the provider or the agent, Harbor uses the following precedence rules to determine which secret is utilized.--api-key-name ENV_VAR_NAME--agent-env ENV_VAR_NAMEmatching the parsed model slug’s provider--agent-env ENV_VAR_NAMEmatching the chosen agent’s declared defaults- Host environment variables matching the parsed model slug’s provider
- Host environment variables matching the chosen agent’s declared provider
harbor run --dry-run to see which variable will be chosen in order of precedence.
- OpenAI
- Provider precedence
- Explicit overrides
▶ Run
▶ Run
harbor run, harbor job start, or
harbor trial start when you need a different endpoint, credential variable,
or API format:
--base-url, --api-key-name, and --api-format can each be
used independently, without --skip-model-parsing-and-provider-mapping. When you enable
--skip-model-parsing-and-provider-mapping, you will typically use these overrides together to
specify the endpoint, credential variable, and API format explicitly.Advanced
Parsing and credential mapping under the hood
LiteLLM splits the model name into a provider and model ID. Harbor then looks up that provider inPROVIDERS and combines its credential and endpoint candidates
with the agent’s declared fallbacks and any explicit overrides. If parsing does
not identify a provider, Harbor uses the agent’s default_provider.
After applying precedence, Harbor writes the selected credential value to the
agent’s declared destination. In this Codex example, the value of
OPENROUTER_API_KEY is injected as OPENAI_API_KEY.
Skipping model parsing and credential mapping
In certain cases, such as hosting a local model, it may be necessary to skip the model name parsing and subsequent credential mapping. To accomplish this, use--skip-model-parsing-and-provider-mapping (or --sm)
in your harbor run command.
With --skip-model-parsing-and-provider-mapping, Harbor preserves the model name exactly and uses
harbor-skip-parsing as the provider marker. The red steps above
(LiteLLM parsing and provider mapping) are skipped.
The agent’s declared fallbacks, explicit overrides, precedence, and credential
injection still apply.
In this example, --api-key-name CUSTOM_KEY selects the value of
CUSTOM_KEY, which Codex receives as OPENAI_API_KEY. Skipping parsing does not
disable this final injection step.
Inspecting agent auth settings
Browse Harbor Agent Auth Lookup to see each agent’s credential mappings, default endpoints, and supported API format overrides. Useharbor agent auth <agent> to inspect an agent’s default provider, credential
and endpoint routing, and supported API formats.
- Grok Build
- Codex
- Mini SWE Agent
▶ Run
▶ Run
Harbor provider defaults (bypassed by
--skip-model-parsing-and-provider-mapping)Agent connection settings
Selecting API formats
An API format defines how the agent communicates with the model provider. Claude Code supports only Anthropic Messages, while agents such as Grok Build support multiple formats. Harbor selects the agent’s default format for the provider identified by LiteLLM. Use--api-format to override this default. Values are openai_responses,
openai_chat_completions, anthropic_messages, google_generate_content, and
bedrock_converse. Each agent accepts only the formats it supports.
Routing across API formats
The provider determines where Harbor looks for credentials and which endpoint it uses. The agent’s selected API format determines how it sends requests and which variable receives the credential. These can differ even for the same agent. Some agents read the same credential variable for every provider; others change it based on the API format. Grok Build is an example of the latter:
In the OpenRouter case,
OPENAI_API_KEY is the variable Grok Build reads; requests
still go to OpenRouter using the OpenRouter credential.
For a custom endpoint, use --api-format to select its protocol,
--api-key-name to select the credential source, and --base-url
to select the endpoint. The agent still determines the destination variable.
Local Models
Local models may require explicit routing to preserve the model name and select the endpoint and credential. This Codex example assumes a vLLM server with Responses and tool calling support, serving the model as/dev/shm/my-model:
--api-key, set
VLLM_API_KEY to that value. Replace the URL with your server’s address as seen
from the agent environment. host.docker.internal reaches the host from Docker
on macOS; localhost inside the agent refers to its own container.
