Three kinds: an OpenAI-compatible endpoint (–base-url, https and a public address only), a major provider’s API key (–provider), or a Workers AI model (no key). The key is read from the variable named by –key-env, or from standard input, sent once and stored encrypted; it is never an argument, never printed and never shown again. Set –max-tokens, –max-dollars or both: a run stops when it reaches either. A dollar cap needs the model’s prices per million tokens.
Usage
overlane model add [alias] [--kind KIND] [--base-url URL] [--provider PROVIDER] --model NAME [--key-env NAME] [--max-tokens N] [--max-dollars USD] [--price-in USD] [--price-out USD] [--dry-run]Arguments
| Argument | Required | Description |
|---|---|---|
alias |
no | Lowercase letters, digits and hyphens (required) |
Flags
| Flag | Type | Required | Default | Description |
|---|---|---|---|---|
--kind |
one of openai-compatible, workers-ai, provider |
no | openai-compatible |
openai-compatible (default), provider or workers-ai |
--base-url |
string | no | The endpoint’s https base URL, for openai-compatible | |
--provider |
one of anthropic, openai, google, mistral, xai |
no | anthropic, openai, google, mistral or xai, for provider | |
--model |
string | yes | The model name the endpoint expects | |
--key-env |
string | no | Name of the environment variable holding the key (default: read standard input) | |
--max-tokens |
string | no | Token cap per run (input and output together) | |
--max-dollars |
string | no | Dollar cap per run, for example 0.50 | |
--price-in |
string | no | Dollars per million input tokens | |
--price-out |
string | no | Dollars per million output tokens | |
--dry-run |
boolean | no | Print the requests and file changes this command would make, then stop. Needs no credentials. |
Examples
overlane model add free-llama --kind openai-compatible --base-url https://integrate.api.nvidia.com/v1 --model meta/llama-3.3-70b-instruct --key-env NVIDIA_API_KEY --max-tokens 200000
overlane model add mistral --kind provider --provider mistral --model mistral-small-latest --key-env MISTRAL_KEY --max-dollars 0.50 --price-in 0.1 --price-out 0.3
overlane model add cf-llama --kind workers-ai --model @cf/meta/llama-3.1-8b-instruct --max-tokens 50000Behavior
- Effect:
write(changes local or hosted state). - Needs credentials: yes. Uses the network: yes.
- Supports
--dry-run: yes. Accepts--force: no. - Machine-readable description:
overlane schema model add.
Result
With --json (the default when stdout is not a terminal) the command prints this JSON Schema’s shape on stdout.
{
"anyOf": [
{
"type": "object",
"properties": {
"executor": {
"type": "object",
"properties": {
"tenantId": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
"description": "tenant identifier"
},
"alias": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"pattern": "^[a-z0-9][a-z0-9-]*$"
},
"ref": {
"type": "string",
"pattern": "^model:"
},
"kind": {
"type": "string",
"enum": [
"openai-compatible",
"workers-ai",
"provider"
]
},
"provider": {
"anyOf": [
{
"type": "string",
"enum": [
"anthropic",
"openai",
"google",
"mistral",
"xai"
]
},
{
"type": "null"
}
]
},
"baseUrl": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"model": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9@._:/-]+$"
},
"keyStatus": {
"anyOf": [
{
"type": "string",
"enum": [
"untested",
"active",
"failed",
"revoked"
]
},
{
"type": "null"
}
]
},
"budget": {
"type": "object",
"properties": {
"maxTokensPerRun": {
"default": null,
"anyOf": [
{
"type": "integer",
"minimum": 100,
"maximum": 100000000
},
{
"type": "null"
}
]
},
"maxCostMicrosPerRun": {
"default": null,
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 10000000000
},
{
"type": "null"
}
]
}
},
"required": [
"maxTokensPerRun",
"maxCostMicrosPerRun"
],
"additionalProperties": false
},
"prices": {
"anyOf": [
{
"type": "object",
"properties": {
"inputMicrosPerM": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000
},
"outputMicrosPerM": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000
}
},
"required": [
"inputMicrosPerM",
"outputMicrosPerM"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
}
},
"required": [
"tenantId",
"alias",
"ref",
"kind",
"provider",
"baseUrl",
"model",
"keyStatus",
"budget",
"prices",
"createdAt"
],
"additionalProperties": false
}
},
"required": [
"executor"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"dryRun": {
"type": "boolean",
"const": true
},
"service": {
"type": "string"
},
"requests": {
"type": "array",
"items": {
"type": "object",
"properties": {
"method": {
"type": "string"
},
"path": {
"type": "string"
},
"body": {},
"note": {
"type": "string"
}
},
"required": [
"method",
"path"
],
"additionalProperties": false
}
},
"commands": {
"type": "array",
"items": {
"type": "string"
}
},
"writes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"write",
"append",
"delete"
]
},
"description": {
"type": "string"
}
},
"required": [
"path",
"action",
"description"
],
"additionalProperties": false
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"dryRun",
"requests",
"commands",
"writes",
"notes"
],
"additionalProperties": false
}
]
}See exit codes for the status the process returns.