1. Install Claude Code
diff --git a/docs/integrations/claude-desktop.mdx b/docs/integrations/claude-desktop.mdx
index 2792bff..3bfa3b1 100644
--- a/docs/integrations/claude-desktop.mdx
+++ b/docs/integrations/claude-desktop.mdx
@@ -7,7 +7,7 @@ description: Use Ollama models in Claude on macOS.
## Prerequisites
- [Ollama](https://ollama.com/download/). Windows support coming soon.
-- To use a local model, [download it](/quickstart#3-start-a-chat) before setup.
+- To use a local model, [download it](/quickstart#run-a-model-locally) before setup.
- To use a cloud model, sign in to Ollama and enable cloud models. Some models require a [paid plan](https://ollama.com/pricing).
If Claude is not installed, Ollama offers to download it during setup.
@@ -15,12 +15,12 @@ If Claude is not installed, Ollama offers to download it during setup.
## Set up Claude
1. Open Ollama and select **Apps**.
-2. Toggle Claude to On.
-3. If Claude is not installed, Ollama will download and finish the installation.
+2. Connect **Claude**.
+3. Follow the setup prompts to install Claude if needed and restart it when prompted.
## Switch models
-Open Ollama **Settings**. Under **Apps**, choose a model you want to use, then select **Restart Claude**. You can assign the same Ollama model to more than one option.
+Open Ollama **Settings → Apps**. Choose your models, then select **Restart Claude**. You can use the same model for more than one option.
## Supported features
@@ -31,7 +31,7 @@ Open Ollama **Settings**. Under **Apps**, choose a model you want to use, then s
## Disconnect Claude
-Open Ollama **Apps** and turn Claude off. Ollama restores Claude's previous configuration. If Claude is open, Ollama asks to restart it so the change takes effect.
+Open Ollama **Apps** and disconnect Claude. Ollama restores Claude's previous settings. Restart Claude when prompted.
You can also restore Claude from the terminal:
diff --git a/docs/integrations/cline.mdx b/docs/integrations/cline.mdx
index 371fc62..075f0a1 100644
--- a/docs/integrations/cline.mdx
+++ b/docs/integrations/cline.mdx
@@ -13,7 +13,7 @@ Install [Cline](https://docs.cline.bot/getting-started/installing-cline) in your
2. Select a model under `Model` or type one (e.g. `qwen3`)
3. Update the context window to at least 32K tokens under `Context Window`
-

-
-## Install
-
-Install the [Codex App](https://developers.openai.com/codex/quickstart/) for macOS or Windows.
-
-
Codex App support is available in Ollama v0.24.0 and newer.
-
-
-## Quick setup
-
-```shell
-ollama launch codex-app
-```
-
-Once Codex App opens, start a task or open a repository as usual.
-
-## Built-in browser
-
-Codex App can open local servers and sites in its built-in browser. Annotate directly on the page to request changes.
-
-

-
-## Review mode
-
-Use review mode to inspect code changes, leave comments, and iterate on fixes without leaving the app.
-
-

-
-### Run directly with a model
-
-```shell
-ollama launch codex-app --model kimi-k2.6:cloud
-```
-
-Use a local model by passing its model name:
-
-```shell
-ollama launch codex-app --model gemma4:31b
-```
-
-Running `ollama launch codex-app` is persistent and will have your model selected next time you open Codex.
-
-
-### Restore Codex App
-
-To switch Codex App back to the profile you were using before `ollama launch codex-app`, run:
-
-```shell
-ollama launch codex-app --restore
-```
-
-Ollama restores Codex App's settings and configs. If Codex App is open, Ollama asks before restarting it.
-
-
-The Codex CLI profile managed by `ollama launch codex` is left separate from the Codex App profile.
-
-Before overwriting Codex App config files, Ollama Launch saves backups under `~/.ollama/backup/codex-app/`. On Windows, `~` resolves to your user profile directory.
-
-## Troubleshooting
-
-If Codex App does not open after setup, open Codex manually once and run `ollama launch codex-app` again.
-
-If Codex App is already running and does not switch models, allow Ollama to restart it when prompted, or quit Codex App and run `ollama launch codex-app` again.
diff --git a/docs/integrations/codex.mdx b/docs/integrations/codex.mdx
index 93ff3b0..ac20a3c 100644
--- a/docs/integrations/codex.mdx
+++ b/docs/integrations/codex.mdx
@@ -5,7 +5,7 @@ title: Codex CLI
## Install
-Install the [Codex CLI](https://developers.openai.com/codex/cli/). For the desktop app, see [Codex App](/integrations/codex-app).
+Install the [Codex CLI](https://developers.openai.com/codex/cli/). For the ChatGPT desktop app, see [ChatGPT Desktop](/integrations/chatgpt).
```
npm install -g @openai/codex
@@ -13,7 +13,7 @@ npm install -g @openai/codex
## Usage with Ollama
-
Codex requires a larger context window. It is recommended to use a context window of at least 64k tokens.
+
Use a context window of at least 64k tokens for Codex.
### Quick setup
@@ -77,7 +77,7 @@ Then run:
codex --profile ollama-launch
```
-## Web search
+## Web search through local Ollama
Codex web-search requests sent through the Ollama profile are executed by
Ollama for both local and cloud models. Sign in with `ollama signin` to use the
diff --git a/docs/integrations/index.mdx b/docs/integrations/index.mdx
index c7b67dd..03b172d 100644
--- a/docs/integrations/index.mdx
+++ b/docs/integrations/index.mdx
@@ -2,51 +2,58 @@
title: Overview
---
-Use Ollama from coding agents, personal assistants, and editors.
+Use Ollama models in your apps and tools.
-Run `ollama launch` to see the latest integrations you can run from the terminal.
-
-## Code in the terminal
+## Launch a coding agent
+Run `ollama launch` in a terminal to choose a coding agent.
- Terminal coding agent with tools, vision, web search, and long context.
+ Read code, edit files, and run commands.
- Open-source coding agent that edits, runs, and iterates on code.
+ Edit and run code from your terminal.
- DeepSeek's open-source agent harness with subagents and web search.
+ Use DeepSeek's open-source coding agent in your browser.
-## Connect an assistant
+## Connect a desktop app
-Use open models in assistant apps.
+On macOS, open the [Ollama app](https://ollama.com/download) and select **Apps** in the sidebar. Connect Claude or ChatGPT.
-
- Desktop assistant with local and cloud Ollama models.
+
+ Use local and cloud Ollama models.
+
+ Use Ollama models in Codex mode.
+
+
+
+## Run a personal assistant
+
+Run `ollama launch` in a terminal and choose OpenClaw or Hermes Agent.
+
+
- Personal assistant for messaging apps and everyday tasks.
+ Chat with an assistant through your messaging apps.
- Open-source agent with self-improving skills, memory, and messaging.
+ Personal assistant with memory, reusable skills, and messaging.
## Work in your editor
-Use Ollama models inside your editor.
-
- Use Ollama models in VS Code Chat.
+ Install the Ollama extension to use models in VS Code Chat.
diff --git a/docs/modelfile.mdx b/docs/modelfile.mdx
index 32b6193..72c8cb4 100644
--- a/docs/modelfile.mdx
+++ b/docs/modelfile.mdx
@@ -12,15 +12,15 @@ A Modelfile is the blueprint to create and share customized models using Ollama.
- [FROM (Required)](#from-required)
- [Build from existing model](#build-from-existing-model)
- [Build from a Safetensors model](#build-from-a-safetensors-model)
- - [Build from a GGUF file](#build-from-a-gguf-file)
+ - [Build from a GGUF model](#build-from-a-gguf-model)
- [PARAMETER](#parameter)
- [Valid Parameters and Values](#valid-parameters-and-values)
- [TEMPLATE](#template)
- [Template Variables](#template-variables)
- [SYSTEM](#system)
- - [ADAPTER](#adapter)
- [LICENSE](#license)
- [MESSAGE](#message)
+ - [CAPABILITY](#capability)
- [Notes](#notes)
## Format
@@ -38,10 +38,10 @@ INSTRUCTION arguments
| [`PARAMETER`](#parameter) | Sets the parameters for how Ollama will run the model. |
| [`TEMPLATE`](#template) | The full prompt template to be sent to the model. |
| [`SYSTEM`](#system) | Specifies the system message that will be set in the template. |
-| [`ADAPTER`](#adapter) | Defines the (Q)LoRA adapters to apply to the model. |
| [`LICENSE`](#license) | Specifies the legal license. |
| [`MESSAGE`](#message) | Specify message history. |
| [`REQUIRES`](#requires) | Specify the minimum version of Ollama required by the model. |
+| [`CAPABILITY`](#capability) | Declare an additional model capability. |
## Examples
@@ -119,14 +119,7 @@ FROM
The model directory should contain the Safetensors weights for a supported architecture.
-Currently supported model architectures:
-
-- Llama (including Llama 2, Llama 3, Llama 3.1, and Llama 3.2)
-- Mistral (including Mistral 1, Mistral 2, and Mixtral)
-- Gemma (including Gemma 1 and Gemma 2)
-- Phi3
-
-#### Build from a GGUF file
+#### Build from a GGUF model
```
FROM ./ollama-model.gguf
@@ -134,6 +127,12 @@ FROM ./ollama-model.gguf
The GGUF file location should be specified as an absolute path or relative to the `Modelfile` location.
+For a split GGUF model, keep the original split filenames and use a wildcard that matches every shard. Shards can also be listed with separate `FROM` instructions.
+
+```
+FROM ./model-*.gguf
+```
+
### PARAMETER
The `PARAMETER` instruction defines a parameter that can be set when the model is run.
@@ -187,28 +186,6 @@ The `SYSTEM` instruction specifies the system message to be used in the template
SYSTEM """"""
```
-### ADAPTER
-
-The `ADAPTER` instruction specifies a fine tuned LoRA adapter that should apply to the base model. The value of the adapter should be an absolute path or a path relative to the Modelfile. The base model should be specified with a `FROM` instruction. If the base model is not the same as the base model that the adapter was tuned from the behaviour will be erratic.
-
-#### Safetensor adapter
-
-```
-ADAPTER
-```
-
-Currently supported Safetensor adapters:
-
-- Llama (including Llama 2, Llama 3, and Llama 3.1)
-- Mistral (including Mistral 1, Mistral 2, and Mixtral)
-- Gemma (including Gemma 1 and Gemma 2)
-
-#### GGUF adapter
-
-```
-ADAPTER ./ollama-lora.gguf
-```
-
### LICENSE
The `LICENSE` instruction allows you to specify the legal license under which the model used with this Modelfile is shared or distributed.
@@ -246,6 +223,14 @@ MESSAGE user Is Ontario in Canada?
MESSAGE assistant yes
```
+### CAPABILITY
+
+Adds a capability to a GGUF or MLX model without removing inherited or inferred capabilities. Repeat the instruction to add more than one. Declare `decision` only for weights trained for System One's decision prompts:
+
+```
+CAPABILITY decision
+```
+
### REQUIRES
The `REQUIRES` instruction allows you to specify the minimum version of Ollama required by the model.
diff --git a/docs/openapi.yaml b/docs/openapi.yaml
index 162a906..675c8bb 100644
--- a/docs/openapi.yaml
+++ b/docs/openapi.yaml
@@ -96,11 +96,7 @@ components:
type: boolean
default: true
think:
- oneOf:
- - type: boolean
- - type: string
- enum: [high, medium, low, max]
- description: When true, returns separate thinking output in addition to content. Can be a boolean (true/false) or a string ("high", "medium", "low", "max") for supported models, with "max" requesting the highest thinking level.
+ $ref: "#/components/schemas/ThinkValue"
raw:
type: boolean
description: When true, returns the raw response from the model without any prompt templating
@@ -294,11 +290,7 @@ components:
type: boolean
default: true
think:
- oneOf:
- - type: boolean
- - type: string
- enum: [high, medium, low, max]
- description: When true, returns separate thinking output in addition to content. Can be a boolean (true/false) or a string ("high", "medium", "low", "max") for supported models, with "max" requesting the highest thinking level.
+ $ref: "#/components/schemas/ThinkValue"
keep_alive:
oneOf:
- type: string
@@ -410,6 +402,29 @@ components:
done:
type: boolean
description: True for the final event in the stream
+ ThinkValue:
+ description: Controls a model's thinking output. Use `/api/show` to discover the supported values and default for the selected model. `true` requests thinking, `false` requests no thinking output, and `null` uses the model default. String values are model-defined; supported names must match `/api/show` exactly. Numbers are not supported.
+ oneOf:
+ - type: boolean
+ - type: string
+ - type: "null"
+ Thinking:
+ type: object
+ required: [values, default]
+ description: Thinking controls advertised by a model. Models without thinking metadata omit this field.
+ properties:
+ values:
+ type: array
+ description: Values explicitly supported by the model's `think` request field. Booleans represent on/off controls and strings represent model-defined levels. An array containing only `false` identifies a model without thinking support.
+ items:
+ oneOf:
+ - type: boolean
+ - type: string
+ default:
+ description: Value used when `think` is not set. For models that use this metadata for named thinking levels, unsupported names resolve to this default.
+ oneOf:
+ - type: boolean
+ - type: string
StatusEvent:
type: object
properties:
@@ -498,6 +513,16 @@ components:
parser:
type: string
description: Name of the parser for the model
+ files:
+ type: object
+ additionalProperties:
+ type: string
+ description: Source file names mapped to their SHA-256 digests. Split GGUF models must include each shard under its original split filename.
+ draft_files:
+ type: object
+ additionalProperties:
+ type: string
+ description: Draft source file names mapped to their SHA-256 digests
license:
oneOf:
- type: string
@@ -518,7 +543,18 @@ components:
$ref: "#/components/schemas/ChatMessage"
quantize:
type: string
- description: Quantization level to apply (e.g. `q4_K_M`, `q8_0`)
+ description: Quantization level to apply during import (e.g. `nvfp4`)
+ draft_quantize:
+ type: string
+ description: Quantization level to apply to draft weights during import
+ requires:
+ type: string
+ description: Minimum Ollama version required by the model
+ capabilities:
+ type: array
+ items:
+ type: string
+ description: Capabilities to add without removing inherited or inferred capabilities (e.g. `decision` for compatible decision models)
stream:
type: boolean
default: true
@@ -581,6 +617,8 @@ components:
ShowResponse:
type: object
properties:
+ thinking:
+ $ref: "#/components/schemas/Thinking"
parameters:
type: string
description: Model parameter settings serialized as text
@@ -790,6 +828,324 @@ components:
items:
$ref: "#/components/schemas/TokenLogprob"
description: Most likely tokens and their log probabilities at this position
+ SystemOneContent:
+ description: A nonempty string, or an object or array serialized as JSON text. Not interpreted as chat messages or multimodal input.
+ oneOf:
+ - type: string
+ pattern: '\S'
+ - type: object
+ additionalProperties: true
+ - type: array
+ items: {}
+ SystemOneChoiceQuestion:
+ title: Choice
+ type: object
+ required: [type, instructions, criteria]
+ properties:
+ type:
+ type: string
+ enum: [choice]
+ instructions:
+ $ref: "#/components/schemas/SystemOneContent"
+ criteria:
+ type: object
+ description: Option keys mapped to descriptions, or null for a bare label. Keys must not be blank; ties follow the model's option order. The option limit depends on the model.
+ minProperties: 2
+ maxProperties: 255
+ propertyNames:
+ pattern: '\S'
+ additionalProperties:
+ type: [string, "null"]
+ SystemOneNoulQuestion:
+ title: Noul
+ type: object
+ required: [type, instructions]
+ properties:
+ type:
+ type: string
+ enum: [noul]
+ instructions:
+ $ref: "#/components/schemas/SystemOneContent"
+ criteria:
+ type: object
+ description: Optional descriptions for the two outcomes. Omitted entries use model-specific defaults.
+ properties:
+ "false":
+ type: string
+ default: "No"
+ "true":
+ type: string
+ default: "Yes"
+ additionalProperties: false
+ SystemOneScoreQuestion:
+ title: Score
+ type: object
+ required: [type, instructions, criteria]
+ properties:
+ type:
+ type: string
+ enum: [score]
+ instructions:
+ $ref: "#/components/schemas/SystemOneContent"
+ criteria:
+ type: array
+ description: Descriptions ordered from the lowest score (index 0) to the highest. Defines a scale from 0 to the number of criteria minus 1. The maximum number of levels depends on the model.
+ minItems: 2
+ maxItems: 26
+ items:
+ type: string
+ SystemOneRequest:
+ type: object
+ required: [model, state, questions]
+ properties:
+ model:
+ type: string
+ pattern: '\S'
+ description: Local model trained for System One, such as nimble. Requires compatible GGUF weights and a scoring-capable runner; cloud and MLX/Safetensors models are not supported.
+ state:
+ $ref: "#/components/schemas/SystemOneContent"
+ images:
+ type: array
+ description: Base64-encoded images shared by all questions, in request order. Requires Clef or Clef Flash with vision weights. URLs and data URLs are not supported.
+ items:
+ type: string
+ format: byte
+ questions:
+ type: object
+ description: Named questions about the shared state. Answers are not passed to later questions.
+ minProperties: 1
+ maxProperties: 64
+ propertyNames:
+ pattern: '\S'
+ additionalProperties:
+ oneOf:
+ - $ref: "#/components/schemas/SystemOneChoiceQuestion"
+ - $ref: "#/components/schemas/SystemOneNoulQuestion"
+ - $ref: "#/components/schemas/SystemOneScoreQuestion"
+ keep_alive:
+ oneOf:
+ - type: string
+ - type: number
+ description: How long to keep the model loaded after the request, as a duration string (such as 5m) or seconds. Zero unloads after the request; a negative value keeps it loaded. Defaults to the server's keep-alive setting (5m unless configured otherwise).
+ SystemOneProbabilities:
+ type: object
+ description: Probabilities normalized over the supplied candidates, summing to 1 subject to floating-point precision.
+ additionalProperties:
+ type: number
+ minimum: 0
+ maximum: 1
+ SystemOneConfidence:
+ type: number
+ minimum: 0
+ maximum: 1
+ description: Distribution concentration, calculated as 1 - H(p) / ln(N), where H(p) is entropy and N is the candidate count. Zero means uniform probabilities; values near 1 mean one candidate dominates. Not calibrated correctness.
+ SystemOneChoiceAnswer:
+ title: Choice
+ type: object
+ required: [type, choice, probabilities, confidence]
+ properties:
+ type:
+ type: string
+ enum: [choice]
+ choice:
+ type: string
+ description: Option key with the highest probability. Ties follow the model's option order.
+ probabilities:
+ $ref: "#/components/schemas/SystemOneProbabilities"
+ confidence:
+ $ref: "#/components/schemas/SystemOneConfidence"
+ SystemOneNoulAnswer:
+ title: Noul
+ type: object
+ required: [type, noul]
+ properties:
+ type:
+ type: string
+ enum: [noul]
+ noul:
+ type: number
+ minimum: 0
+ maximum: 1
+ description: Probability of true among the false and true candidates. This is a number, not a Boolean.
+ SystemOneScoreAnswer:
+ title: Score
+ type: object
+ required: [type, score, legend, probabilities, confidence]
+ properties:
+ type:
+ type: string
+ enum: [score]
+ score:
+ type: number
+ minimum: 0
+ maximum: 25
+ description: Probability-weighted average of the zero-based criterion indices, from 0 to the number of criteria minus 1. Not rounded to a level or normalized to 0–1.
+ legend:
+ type: object
+ description: Zero-based indices as string keys mapped to the criterion descriptions.
+ additionalProperties:
+ type: string
+ probabilities:
+ $ref: "#/components/schemas/SystemOneProbabilities"
+ description: Probabilities keyed by zero-based criterion indices as strings.
+ confidence:
+ $ref: "#/components/schemas/SystemOneConfidence"
+ SystemOneResponse:
+ type: object
+ required: [model, answers, usage]
+ properties:
+ model:
+ type: string
+ description: Model name from the request.
+ answers:
+ type: object
+ description: Answers keyed by the question names in the request.
+ additionalProperties:
+ oneOf:
+ - $ref: "#/components/schemas/SystemOneChoiceAnswer"
+ - $ref: "#/components/schemas/SystemOneNoulAnswer"
+ - $ref: "#/components/schemas/SystemOneScoreAnswer"
+ usage:
+ type: object
+ required: [input_tokens, output_tokens]
+ properties:
+ input_tokens:
+ type: integer
+ minimum: 0
+ description: Total evaluated input tokens, including image positions. Shared context is counted again when the model scores questions separately.
+ output_tokens:
+ type: integer
+ minimum: 0
+ description: Tokens generated internally for scoring, including prefix preparation and retries. May exceed the question count; not the length of the JSON response.
+ UsageMetrics:
+ type: object
+ required: [request_count]
+ properties:
+ request_count:
+ type: integer
+ minimum: 0
+ description: Number of recorded requests.
+ usage_usd:
+ type: number
+ description: Total value of the requests in USD, including usage covered by your plan and usage paid from purchased credits.
+ input_tokens:
+ type: integer
+ description: Recorded input tokens, including cached input tokens.
+ cached_input_tokens:
+ type: integer
+ description: Recorded input tokens read from cache, already included in input_tokens.
+ output_tokens:
+ type: integer
+ description: Recorded output tokens.
+ UsageBucket:
+ allOf:
+ - $ref: "#/components/schemas/UsageMetrics"
+ - type: object
+ required: [from, until]
+ properties:
+ from:
+ type: string
+ format: date-time
+ description: Start of the bucket in UTC, inclusive.
+ until:
+ type: string
+ format: date-time
+ description: End of the bucket in UTC, exclusive.
+ partial:
+ type: boolean
+ description: Present and true for the current hour or day, which is still in progress.
+ UsageResponse:
+ type: object
+ required: [range, scope, granularity, from, until, totals, buckets]
+ properties:
+ range:
+ type: string
+ enum: [24h, 7d, 30d]
+ description: Selected time range.
+ scope:
+ type: string
+ enum: [self, team]
+ description: Selected usage scope.
+ granularity:
+ type: string
+ enum: [hour, day]
+ description: "Set automatically: hour for 24h, day for 7d and 30d."
+ from:
+ type: string
+ format: date-time
+ description: Start of the range in UTC, inclusive.
+ until:
+ type: string
+ format: date-time
+ description: End of the range in UTC, exclusive.
+ totals:
+ $ref: "#/components/schemas/UsageMetrics"
+ description: Usage across the entire range.
+ buckets:
+ type: array
+ description: Usage in chronological order, including buckets with no recorded requests.
+ items:
+ $ref: "#/components/schemas/UsageBucket"
+ IncludedBalance:
+ title: Included credits
+ type: object
+ required: [balance_usd, allowance_usd, period]
+ properties:
+ balance_usd:
+ type: number
+ description: Remaining included credits in USD.
+ allowance_usd:
+ type: number
+ description: Included credits available for the full period in USD.
+ period:
+ type: object
+ required: [from, until]
+ properties:
+ from:
+ type: string
+ format: date-time
+ description: Start of the included period in UTC, inclusive.
+ until:
+ type: string
+ format: date-time
+ description: End of the included period in UTC, exclusive.
+ LegacyBalanceLimit:
+ type: object
+ required: [remaining_percent, resets_at]
+ properties:
+ remaining_percent:
+ type: number
+ minimum: 0
+ maximum: 100
+ description: Percentage of the limit remaining.
+ resets_at:
+ type: string
+ format: date-time
+ description: Next reset time in UTC.
+ LegacyIncludedBalance:
+ title: Legacy plan limits
+ type: object
+ required: [session, weekly]
+ properties:
+ session:
+ $ref: "#/components/schemas/LegacyBalanceLimit"
+ weekly:
+ $ref: "#/components/schemas/LegacyBalanceLimit"
+ BalanceResponse:
+ type: object
+ required: [included, purchased]
+ properties:
+ included:
+ oneOf:
+ - $ref: "#/components/schemas/IncludedBalance"
+ - $ref: "#/components/schemas/LegacyIncludedBalance"
+ purchased:
+ type: object
+ required: [balance_usd]
+ properties:
+ balance_usd:
+ type: number
+ description: Remaining unexpired purchased credits in USD.
ErrorResponse:
type: object
properties:
@@ -797,12 +1153,117 @@ components:
type: string
description: Error message describing what went wrong
paths:
+ /v1/systemone:
+ post:
+ summary: Answer typed questions
+ description: |
+ Answer choice, yes/no, and scoring questions with a local System One model. Requires Ollama v0.35.0 or later. See the [decision guide](/capabilities/decision) for examples.
+ operationId: systemone
+ x-mint:
+ href: /api/systemone
+ metadata:
+ title: System One
+ sidebarTitle: /v1/systemone
+ content: |
+
+ Currently available locally in Ollama.
+
+
+ - Returns one JSON response; streaming, video, tools, and generation controls are not supported.
+ - Requests without images must fit within 64 KiB; requests with images must fit within 32 MiB, including base64 and JSON. The complete input must fit the loaded context window. Nimble and Tev also require two token positions for scoring. Input is never truncated.
+ x-codeSamples:
+ - lang: bash
+ label: Choose a label
+ source: |
+ curl http://localhost:11434/v1/systemone \
+ -H 'Content-Type: application/json' \
+ -d '{
+ "model": "nimble",
+ "state": "Our checkout has returned 500 errors since 9am.",
+ "questions": {
+ "label": {
+ "type": "choice",
+ "instructions": "Which label fits this ticket?",
+ "criteria": {
+ "billing": "Payments and refunds",
+ "bug": "Software errors",
+ "account": "Login and account access"
+ }
+ }
+ }
+ }'
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SystemOneRequest"
+ example:
+ model: nimble
+ state: Our checkout has returned 500 errors since 9am.
+ questions:
+ label:
+ type: choice
+ instructions: Which label fits this ticket?
+ criteria:
+ billing: Payments and refunds
+ bug: Software errors
+ account: Login and account access
+ responses:
+ "200":
+ description: Answers and token usage for all questions. Example probabilities and confidence are rounded to four decimal places; results and usage can vary with the model and server configuration.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SystemOneResponse"
+ example:
+ model: nimble
+ answers:
+ label:
+ type: choice
+ choice: bug
+ probabilities:
+ billing: 0.0125
+ bug: 0.9781
+ account: 0.0093
+ confidence: 0.8906
+ usage:
+ input_tokens: 174
+ output_tokens: 1
+ "400":
+ description: Invalid request, unsupported model or runner, or a rendered prompt that exceeds the loaded context. Cloud models are rejected.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ "404":
+ description: Local model not found. Download the model before making a request.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ "413":
+ description: Request body exceeds 64 KiB without images or 32 MiB with images.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ example:
+ error: request body must not exceed 64 KiB without images
+ "500":
+ description: Model loading, rendering, or scoring failed.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
/api/generate:
post:
summary: Generate a response
description: Generates a response for the provided prompt
operationId: generate
x-mint:
+ metadata:
+ sidebarTitle: /api/generate
href: /api/generate
x-codeSamples:
- lang: bash
@@ -820,6 +1281,15 @@ paths:
"prompt": "Why is the sky blue?",
"stream": false
}'
+ - lang: bash
+ label: Thinking
+ source: |
+ curl http://localhost:11434/api/generate -d '{
+ "model": "gpt-oss",
+ "prompt": "What is 1+1?",
+ "think": "low",
+ "stream": false
+ }'
- lang: bash
label: With options
source: |
@@ -915,6 +1385,8 @@ paths:
description: Generate the next chat message in a conversation between a user and an assistant.
operationId: chat
x-mint:
+ metadata:
+ sidebarTitle: /api/chat
href: /api/chat
x-codeSamples:
- lang: bash
@@ -1073,6 +1545,8 @@ paths:
description: Creates vector embeddings representing the input text
operationId: embed
x-mint:
+ metadata:
+ sidebarTitle: /api/embed
href: /api/embed
x-codeSamples:
- lang: bash
@@ -1148,6 +1622,8 @@ paths:
description: Fetch a list of models and their details
operationId: list
x-mint:
+ metadata:
+ sidebarTitle: /api/tags
href: /api/tags
x-codeSamples:
- lang: bash
@@ -1181,6 +1657,8 @@ paths:
description: Retrieve a list of models that are currently running
operationId: ps
x-mint:
+ metadata:
+ sidebarTitle: /api/ps
href: /api/ps
x-codeSamples:
- lang: bash
@@ -1215,6 +1693,9 @@ paths:
post:
summary: Show model details
operationId: show
+ x-mint:
+ metadata:
+ sidebarTitle: /api/show
x-codeSamples:
- lang: bash
label: Default
@@ -1229,6 +1710,18 @@ paths:
"model": "gemma4",
"verbose": true
}'
+ - lang: bash
+ label: Thinking controls
+ source: |
+ curl http://localhost:11434/api/show -d '{
+ "model": "gpt-oss"
+ }'
+ - lang: bash
+ label: Thinking controls
+ source: |
+ curl http://localhost:11434/api/show -d '{
+ "model": "gpt-oss"
+ }'
requestBody:
required: true
content:
@@ -1249,7 +1742,13 @@ paths:
license: "Gemma Terms of Use \n\nLast modified: February 21, 2024..."
capabilities:
- "completion"
+ - "thinking"
- "vision"
+ thinking:
+ values:
+ - false
+ - true
+ default: true
modified_at: "2025-08-14T15:49:43.634137516-07:00"
details:
parent_model: ""
@@ -1321,6 +1820,8 @@ paths:
summary: Create a model
operationId: create
x-mint:
+ metadata:
+ sidebarTitle: /api/create
href: /api/create
x-codeSamples:
- lang: bash
@@ -1340,12 +1841,13 @@ paths:
"system": "You are Ollama the llama."
}'
- lang: bash
- label: Quantize
+ label: Create from GGUF
source: |
curl http://localhost:11434/api/create -d '{
- "model": "llama3.1:8b-instruct-Q4_K_M",
- "from": "llama3.1:8b-instruct-fp16",
- "quantize": "q4_K_M"
+ "model": "my-gguf-model",
+ "files": {
+ "model.gguf": "sha256:432f310a77f4650a88d0fd59ecdd7cebed8d684bafea53cbff0473542964f0c3"
+ }
}'
requestBody:
required: true
@@ -1371,11 +1873,69 @@ paths:
$ref: "#/components/schemas/StatusEvent"
example:
status: "success"
+ /api/blobs/{digest}:
+ head:
+ summary: Check if a blob exists
+ operationId: headBlob
+ parameters:
+ - $ref: "#/components/parameters/DigestParam"
+ responses:
+ "200":
+ description: Blob exists
+ "400":
+ description: Invalid digest
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ "404":
+ description: Blob not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ "500":
+ description: Failed to inspect blob
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ post:
+ summary: Push a blob
+ operationId: createBlob
+ parameters:
+ - $ref: "#/components/parameters/DigestParam"
+ requestBody:
+ required: true
+ content:
+ application/octet-stream:
+ schema:
+ type: string
+ format: binary
+ responses:
+ "200":
+ description: Blob already exists
+ "201":
+ description: Blob created
+ "400":
+ description: Invalid digest or blob content
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ "500":
+ description: Failed to write blob
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
/api/copy:
post:
summary: Copy a model
operationId: copy
x-mint:
+ metadata:
+ sidebarTitle: /api/copy
href: /api/copy
x-codeSamples:
- lang: bash
@@ -1397,11 +1957,31 @@ paths:
responses:
"200":
description: Model successfully copied
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/StatusResponse"
+ example:
+ status: "success"
+ "400":
+ description: Model could not be copied
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ "404":
+ description: Source model not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
/api/pull:
post:
summary: Pull a model
operationId: pull
x-mint:
+ metadata:
+ sidebarTitle: /api/pull
href: /api/pull
x-codeSamples:
- lang: bash
@@ -1444,6 +2024,8 @@ paths:
summary: Push a model
operationId: push
x-mint:
+ metadata:
+ sidebarTitle: /api/push
href: /api/push
x-codeSamples:
- lang: bash
@@ -1486,6 +2068,8 @@ paths:
summary: Delete a model
operationId: delete
x-mint:
+ metadata:
+ sidebarTitle: /api/delete
href: /api/delete
x-codeSamples:
- lang: bash
@@ -1510,6 +2094,9 @@ paths:
summary: Get version
description: Retrieve the version of the Ollama
operationId: version
+ x-mint:
+ metadata:
+ sidebarTitle: /api/version
x-codeSamples:
- lang: bash
label: Default
@@ -1524,3 +2111,124 @@ paths:
$ref: "#/components/schemas/VersionResponse"
example:
version: "0.12.6"
+ /api/usage:
+ get:
+ summary: Cloud usage
+ description: Usage statistics for cloud inference, web search, and web fetch.
+ operationId: usage
+ servers:
+ - url: https://ollama.com
+ description: Ollama Cloud
+ security:
+ - bearerAuth: []
+ parameters:
+ - name: range
+ in: query
+ description: Completed UTC hours or days to include, plus the current partial hour or day.
+ schema:
+ type: string
+ enum: [24h, 7d, 30d]
+ default: 7d
+ - name: scope
+ in: query
+ description: Your requests, or your team's requests. Team scope requires being a team admin.
+ schema:
+ type: string
+ enum: [self, team]
+ default: self
+ responses:
+ "200":
+ description: Usage for the selected range and scope.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UsageResponse"
+ "400":
+ description: Invalid query parameters.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ "401":
+ description: Invalid credentials.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ "403":
+ description: Account suspended or team scope requested without team admin access.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ "429":
+ description: Too many requests.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ headers:
+ Retry-After:
+ description: Seconds to wait before retrying.
+ schema:
+ type: integer
+ minimum: 1
+ "503":
+ description: Usage reporting is temporarily unavailable.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ /api/balance:
+ get:
+ summary: Balance
+ description: Check your remaining usage credits.
+ operationId: balance
+ servers:
+ - url: https://ollama.com
+ description: Ollama Cloud
+ security:
+ - bearerAuth: []
+ responses:
+ "200":
+ description: Current included and purchased balances.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BalanceResponse"
+ "400":
+ description: Invalid query parameters.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ "401":
+ description: Invalid credentials.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ "403":
+ description: Account suspended.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ "429":
+ description: Too many requests.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ headers:
+ Retry-After:
+ description: Seconds to wait before retrying.
+ schema:
+ type: integer
+ minimum: 1
+ "503":
+ description: Balance reporting is temporarily unavailable.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
diff --git a/docs/quickstart.mdx b/docs/quickstart.mdx
index c985d6d..6832519 100644
--- a/docs/quickstart.mdx
+++ b/docs/quickstart.mdx
@@ -2,59 +2,300 @@
title: Quickstart
---
-Install Ollama and get your first response.
+Use Ollama in [desktop apps](#connect-a-desktop-app) and [coding agents](#use-a-coding-agent), or [build an application](#build-an-application) with an API key.
-## 1. Download Ollama
+## Get started
-Ollama runs on macOS, Windows, and Linux.
-
-
- Download Ollama
-
-
-## 2. Open the menu
-
-Run `ollama` in your terminal to open the interactive menu:
+[Download Ollama](https://ollama.com/download) for macOS, Windows, or Linux. Open the app, or get started from your terminal:
```shell
ollama
```
-From the menu you can:
+Follow the setup prompts. Sign in to use cloud models, or choose a local model.
-- **Run a model** - Start an interactive chat
-- **Launch tools** - [Claude Code](/integrations/claude-code), [OpenClaw](/integrations/openclaw), [VS Code](/integrations/vscode), and more
+## Connect a desktop app
-## 3. Start a chat
+On macOS, open Ollama and select **Apps**. Connect **Claude** or **ChatGPT (Desktop)**. Follow the prompts to install or restart the app.
-Run a model to start your first chat.
+Choose your Ollama models in **Settings → Apps**.
+
+- [Claude Desktop](/integrations/claude-desktop) — use Ollama models in Claude.
+- [ChatGPT Desktop](/integrations/chatgpt) — use Ollama models in Codex mode. Regular Chat and voice use your usual ChatGPT connection.
+
+## Use a coding agent
+
+From your project directory, launch your agent:
+
+
+
```shell
-ollama run gemma4
+ollama launch claude
```
-Cloud models work the same way:
+Ollama offers to install Claude Code if needed. See [Claude Code](/integrations/claude-code) for details.
+
+
+
+
+[Install Codex CLI](/integrations/codex#install) first, then launch it:
```shell
-ollama run gemma4:cloud
+ollama launch codex
```
-Send your first message:
+See [Codex CLI](/integrations/codex) for setup.
+
+
+
+
+```shell
+ollama launch opencode
+```
+
+Ollama offers to install OpenCode if needed. See [OpenCode](/integrations/opencode) for details.
+
+
+
+
+Choose a model when prompted, then try:
```text
-Explain why the sky is blue in one paragraph.
+Explain how this repository is organized.
```
-To leave the chat, type:
+For more tools, see [Integrations](/integrations). To connect an agent directly with an API key, see [Claude Code](/integrations/claude-code#connect-directly-to-ollama-cloud).
+
+## Build an application
+
+Use cloud models with an API key, or run models locally without one. Cloud requests do not require an Ollama installation.
+
+### 1. Create an API key
+
+For local models, skip this step and select **Local** under [Send a request](#2-send-a-request).
+
+For cloud models, sign in or create an account, then create an [API key](https://ollama.com/settings/keys).
+
+Set your key in the terminal:
+
+
+
+```shell macOS / Linux
+export OLLAMA_API_KEY="your_api_key"
+```
+
+```powershell Windows
+$env:OLLAMA_API_KEY = "your_api_key"
+```
+
+
+
+Keep your key on your application's server, outside browser code and source control.
+
+### 2. Send a request
+
+Make your first request to Ollama
+
+
+
+
+These examples use the `gemma4:31b` [cloud model](https://ollama.com/search?c=cloud).
+
+
+
```shell
-/bye
+curl https://ollama.com/api/chat \
+ -H "Authorization: Bearer $OLLAMA_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "model": "gemma4:31b",
+ "messages": [
+ {
+ "role": "user",
+ "content": "Say hello in one sentence."
+ }
+ ],
+ "stream": false
+ }'
```
+Read the answer from `message.content`. See [Ollama's API and libraries](/api/introduction).
+
+
+
+
+```shell
+curl https://ollama.com/v1/chat/completions \
+ -H "Authorization: Bearer $OLLAMA_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "model": "gemma4:31b",
+ "messages": [
+ {
+ "role": "user",
+ "content": "Say hello in one sentence."
+ }
+ ]
+ }'
+```
+
+Read the answer from `choices[0].message.content`. See [OpenAI compatibility](/api/openai-compatibility) for client setup and supported features.
+
+
+
+
+```shell
+curl https://ollama.com/v1/responses \
+ -H "Authorization: Bearer $OLLAMA_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "model": "gemma4:31b",
+ "input": "Say hello in one sentence."
+ }'
+```
+
+Read the `output_text` content blocks inside `output`. The OpenAI Python client exposes the text as `response.output_text`.
+
+Responses requests are stateless: include conversation history in each request. `previous_response_id` and `conversation` aren't supported. See [Responses compatibility](/api/openai-compatibility#responses-api).
+
+
+
+
+```shell
+curl https://ollama.com/v1/messages \
+ -H "Authorization: Bearer $OLLAMA_API_KEY" \
+ -H "Content-Type: application/json" \
+ -H "anthropic-version: 2023-06-01" \
+ -d '{
+ "model": "gemma4:31b",
+ "max_tokens": 1024,
+ "messages": [
+ {
+ "role": "user",
+ "content": "Say hello in one sentence."
+ }
+ ]
+ }'
+```
+
+Read text blocks from `content`. Direct cloud requests use bearer authentication. See [Anthropic compatibility](/api/anthropic-compatibility) for client setup and supported features.
+
+
+
+
+OpenAI and Anthropic compatibility each cover a subset of the original API. See [Cloud](/cloud) for models and usage limits.
+
+
+
+
+Run [Gemma 4 E2B](https://ollama.com/library/gemma4:e2b) on your computer. No API key required.
+
+
+The model download is about 7.2 GB. We recommend 8 GB of available VRAM, or unified memory on a Mac. Larger context windows need more memory. With less VRAM, Ollama can use system RAM, but responses may be slower.
+
+
+[Download Ollama](https://ollama.com/download) and open the app. On Linux, start the server with `ollama serve` if it is not already running.
+
+Download the model:
+
+```shell
+ollama pull gemma4:e2b
+```
+
+Send a request to your local server:
+
+
+
+
+```shell
+curl http://localhost:11434/api/chat \
+ -H "Content-Type: application/json" \
+ -d '{
+ "model": "gemma4:e2b",
+ "messages": [
+ {
+ "role": "user",
+ "content": "Say hello in one sentence."
+ }
+ ],
+ "stream": false
+ }'
+```
+
+
+
+
+```shell
+curl http://localhost:11434/v1/chat/completions \
+ -H "Content-Type: application/json" \
+ -d '{
+ "model": "gemma4:e2b",
+ "messages": [
+ {
+ "role": "user",
+ "content": "Say hello in one sentence."
+ }
+ ]
+ }'
+```
+
+Read the answer from `choices[0].message.content`. See [OpenAI compatibility](/api/openai-compatibility) for client setup and supported features.
+
+
+
+
+```shell
+curl http://localhost:11434/v1/responses \
+ -H "Content-Type: application/json" \
+ -d '{
+ "model": "gemma4:e2b",
+ "input": "Say hello in one sentence."
+ }'
+```
+
+Read the `output_text` content blocks inside `output`. The OpenAI Python client exposes the text as `response.output_text`.
+
+Responses requests are stateless: include conversation history in each request. `previous_response_id` and `conversation` aren't supported. See [Responses compatibility](/api/openai-compatibility#responses-api).
+
+
+
+
+```shell
+curl http://localhost:11434/v1/messages \
+ -H "Content-Type: application/json" \
+ -H "anthropic-version: 2023-06-01" \
+ -d '{
+ "model": "gemma4:e2b",
+ "max_tokens": 1024,
+ "messages": [
+ {
+ "role": "user",
+ "content": "Say hello in one sentence."
+ }
+ ]
+ }'
+```
+
+Read text blocks from `content`. See [Anthropic compatibility](/api/anthropic-compatibility) for client setup and supported features.
+
+
+
+
+
+
+
+## Run a model locally
+
+[Download Ollama](https://ollama.com/download), then run:
+
+```shell
+ollama run gemma4:e2b
+```
+
+Ollama downloads the model and starts a chat on your computer. Type `/bye` to leave.
+
## Next steps
-Use a model with an [integration](/integrations), make an [API request](/api/introduction), or browse more [models](https://ollama.com/search).
+Add [tool calling](/capabilities/tool-calling), [stream responses](/capabilities/streaming), or browse [more models](https://ollama.com/search).