diff --git a/_vendor/github.com/docker/docker-agent/docs/community/contributing/index.md b/_vendor/github.com/docker/docker-agent/docs/community/contributing/index.md index 3821f3318cc..b5cf7d2b34c 100644 --- a/_vendor/github.com/docker/docker-agent/docs/community/contributing/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/community/contributing/index.md @@ -3,6 +3,7 @@ title: "Contributing" description: "docker-agent is open source. Here's how to set up your development environment and contribute." keywords: docker agent, ai agents, community, contributing weight: 10 +canonical: https://docs.docker.com/ai/docker-agent/community/contributing/ --- _docker-agent is open source. Here's how to set up your development environment and contribute._ diff --git a/_vendor/github.com/docker/docker-agent/docs/community/opentelemetry/index.md b/_vendor/github.com/docker/docker-agent/docs/community/opentelemetry/index.md index 857c304a0f4..69979b77403 100644 --- a/_vendor/github.com/docker/docker-agent/docs/community/opentelemetry/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/community/opentelemetry/index.md @@ -3,6 +3,7 @@ title: "OpenTelemetry Tracing" description: "Export docker-agent traces to any OTLP backend, including Langfuse and LangSmith, for debugging agentic workflows." keywords: docker agent, ai agents, community, opentelemetry tracing weight: 40 +canonical: https://docs.docker.com/ai/docker-agent/community/opentelemetry/ --- _docker-agent can export OpenTelemetry traces of an agent run to any OTLP/HTTP backend. This is separate from [product-analytics telemetry](../telemetry/index.md) and is opt-in via the `--otel` flag._ diff --git a/_vendor/github.com/docker/docker-agent/docs/community/telemetry/index.md b/_vendor/github.com/docker/docker-agent/docs/community/telemetry/index.md index 0e097684fe3..3f738fa62b0 100644 --- a/_vendor/github.com/docker/docker-agent/docs/community/telemetry/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/community/telemetry/index.md @@ -3,6 +3,7 @@ title: "Telemetry" description: "docker-agent collects anonymous usage data to help improve the tool. Telemetry can be disabled at any time." keywords: docker agent, ai agents, community, telemetry weight: 30 +canonical: https://docs.docker.com/ai/docker-agent/community/telemetry/ --- _docker-agent collects anonymous usage data to help improve the tool. Telemetry can be disabled at any time._ diff --git a/_vendor/github.com/docker/docker-agent/docs/community/troubleshooting/index.md b/_vendor/github.com/docker/docker-agent/docs/community/troubleshooting/index.md index c100e014c3b..a356c261556 100644 --- a/_vendor/github.com/docker/docker-agent/docs/community/troubleshooting/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/community/troubleshooting/index.md @@ -3,6 +3,7 @@ title: "Troubleshooting" description: "Common issues and how to resolve them when working with docker-agent." keywords: docker agent, ai agents, community, troubleshooting weight: 20 +canonical: https://docs.docker.com/ai/docker-agent/community/troubleshooting/ --- _Common issues and how to resolve them when working with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/concepts/agents/index.md b/_vendor/github.com/docker/docker-agent/docs/concepts/agents/index.md index d4ee993dc09..4d87c853a4c 100644 --- a/_vendor/github.com/docker/docker-agent/docs/concepts/agents/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/concepts/agents/index.md @@ -3,6 +3,7 @@ title: "Agents" description: "Agents are the core building blocks of docker-agent. Each agent is an AI-powered entity with a model, instructions, tools, and optional sub-agents." keywords: docker agent, ai agents, concepts, agents weight: 10 +canonical: https://docs.docker.com/ai/docker-agent/concepts/agents/ --- _Agents are the core building blocks of docker-agent. Each agent is an AI-powered entity with a model, instructions, tools, and optional sub-agents._ diff --git a/_vendor/github.com/docker/docker-agent/docs/concepts/distribution/index.md b/_vendor/github.com/docker/docker-agent/docs/concepts/distribution/index.md index dd2b16d0ee7..6f667667449 100644 --- a/_vendor/github.com/docker/docker-agent/docs/concepts/distribution/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/concepts/distribution/index.md @@ -3,6 +3,7 @@ title: "Agent Distribution" description: "Package, share, and run agents via OCI-compatible registries — just like container images." keywords: docker agent, ai agents, concepts, agent distribution weight: 50 +canonical: https://docs.docker.com/ai/docker-agent/concepts/distribution/ aliases: - /ai/docker-agent/sharing-agents/ --- diff --git a/_vendor/github.com/docker/docker-agent/docs/concepts/models/index.md b/_vendor/github.com/docker/docker-agent/docs/concepts/models/index.md index 85fb2472537..adade3f8fe4 100644 --- a/_vendor/github.com/docker/docker-agent/docs/concepts/models/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/concepts/models/index.md @@ -3,6 +3,7 @@ title: "Models" description: "Models are the AI brains behind your agents. docker-agent supports multiple providers and flexible configuration." keywords: docker agent, ai agents, concepts, models weight: 20 +canonical: https://docs.docker.com/ai/docker-agent/concepts/models/ --- _Models are the AI brains behind your agents. docker-agent supports multiple providers and flexible configuration._ @@ -79,6 +80,7 @@ for details. | Mistral | `mistral` | Mistral models | `MISTRAL_API_KEY` | | xAI | `xai` | Grok models | `XAI_API_KEY` | | Nebius | `nebius` | Open-source and specialised models | `NEBIUS_API_KEY` | +| NVIDIA NIM | `nvidia` | Nemotron, Llama, Qwen, DeepSeek (open models) | `NVIDIA_API_KEY` | | MiniMax | `minimax` | MiniMax models | `MINIMAX_API_KEY` | | Baseten | `baseten` | DeepSeek, Kimi, GLM, Llama models | `BASETEN_API_KEY` | | OVHcloud | `ovhcloud` | Qwen, Llama, Mistral, DeepSeek (EU-hosted) | `OVH_AI_ENDPOINTS_ACCESS_TOKEN` | diff --git a/_vendor/github.com/docker/docker-agent/docs/concepts/multi-agent/index.md b/_vendor/github.com/docker/docker-agent/docs/concepts/multi-agent/index.md index 3075faa6583..dfae6426670 100644 --- a/_vendor/github.com/docker/docker-agent/docs/concepts/multi-agent/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/concepts/multi-agent/index.md @@ -4,6 +4,7 @@ description: "Build teams of specialized agents that collaborate and delegate ta keywords: docker agent, ai agents, concepts, multi-agent systems linkTitle: "Multi-Agent" weight: 40 +canonical: https://docs.docker.com/ai/docker-agent/concepts/multi-agent/ --- _Build teams of specialized agents that collaborate and delegate tasks to each other._ diff --git a/_vendor/github.com/docker/docker-agent/docs/concepts/tools/index.md b/_vendor/github.com/docker/docker-agent/docs/concepts/tools/index.md index 117b28d803c..5ebce14caeb 100644 --- a/_vendor/github.com/docker/docker-agent/docs/concepts/tools/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/concepts/tools/index.md @@ -3,6 +3,7 @@ title: "Tools" description: "Tools give agents the ability to interact with the world — read files, run commands, search the web, query databases, and more." keywords: docker agent, ai agents, concepts, tools weight: 30 +canonical: https://docs.docker.com/ai/docker-agent/concepts/tools/ --- _Tools give agents the ability to interact with the world — read files, run commands, search the web, query databases, and more._ @@ -28,7 +29,8 @@ docker-agent ships with several built-in tools that require no external dependen | Tool | Description | | --- | --- | | [Filesystem](../../tools/filesystem/index.md) | Read, write, list, search, and navigate files and directories | -| [Shell](../../tools/shell/index.md) | Execute synchronous and background shell commands | +| [Shell](../../tools/shell/index.md) | Execute shell commands synchronously | +| [Background Jobs](../../tools/background-jobs/index.md) | Run and manage long-running shell commands | | [Think](../../tools/think/index.md) | Step-by-step reasoning scratchpad for planning and decision-making | | [Todo](../../tools/todo/index.md) | Task list management for complex multi-step workflows | | [Tasks](../../tools/tasks/index.md) | Persistent task database shared across sessions | diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/agents/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/agents/index.md index f5550c08201..101d49359ed 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/agents/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/agents/index.md @@ -4,6 +4,7 @@ description: "Complete reference for defining agents in your YAML configuration. keywords: docker agent, ai agents, configuration, yaml, agent configuration linkTitle: "Agent Config" weight: 30 +canonical: https://docs.docker.com/ai/docker-agent/configuration/agents/ --- _Complete reference for defining agents in your YAML configuration._ @@ -34,6 +35,8 @@ agents: max_consecutive_tool_calls: int # Optional: max identical consecutive tool calls max_old_tool_call_tokens: int # Optional: token budget for old tool call content (disabled unless positive) num_history_items: int # Optional: limit conversation history + session_compaction: boolean # Optional: disable automatic session compaction (default: true) + compaction_threshold: float # Optional: context-window fraction that triggers auto-compaction (0–1, default: 0.9) use_toolsets: [list] # Optional: names of top-level toolsets to merge into this agent readonly: boolean # Optional: restrict all toolsets to read-only tools only skills: boolean | [list] # Optional: enable skill discovery (true/false or list of names and/or sources) @@ -95,6 +98,8 @@ agents: | `max_consecutive_tool_calls` | int | ✗ | Maximum consecutive identical tool calls before the agent is terminated, preventing degenerate loops. Default: `5`. | | `max_old_tool_call_tokens` | int | ✗ | Maximum number of tokens to keep from old tool call arguments and results. Older tool calls beyond this budget have their content replaced with a placeholder, saving context space. Tokens are approximated as `len/4`. Truncation is disabled by default; set a positive value to enable it. Set to `-1` to disable truncation (unlimited). | | `num_history_items` | int | ✗ | Limit the number of conversation history messages sent to the model. Useful for managing context window size with long conversations. Default: unlimited (all messages sent). | +| `session_compaction` | boolean | ✗ | When `false`, disables automatic session compaction for this agent: neither the proactive threshold trigger nor the post-overflow auto-recovery runs. The manual `/compact` command remains available. Default: `true`. | +| `compaction_threshold` | float | ✗ | Fraction of the model's context window at which proactive auto-compaction triggers. Must be greater than `0` and at most `1`. A `compaction_threshold` set on the agent's model takes precedence. Default: `0.9`. See [Compaction Threshold](../models/index.md#delegating-session-compaction). | | `skills` | bool/array | ✗ | Enable automatic skill discovery. `true` loads all discovered local skills, `false` disables them. A list can mix skill sources (`local` or `https://…` URLs) and skill names to include — see [Skills](../../features/skills/index.md). | | `commands` | object | ✗ | Named prompts that can be run with `docker agent run config.yaml /command_name`. Can be simple strings or objects with `instruction` and/or `agent` fields for agent switching, or a `url` field to open a link in the browser (TUI only). See [Named Commands](#named-commands) below. | | `use_commands` | list of string | ✗ | Names of top-level `commands` groups to merge into this agent. Inline `commands` entries take precedence on name conflicts. Default: `[]`. | diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/hcl/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/hcl/index.md index 9a0718bf25d..a0de8dca6b2 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/hcl/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/hcl/index.md @@ -3,6 +3,7 @@ title: "HCL Configuration" description: "Write docker-agent configs in HCL instead of YAML, using labeled blocks, heredocs, and the same underlying schema." keywords: docker agent, ai agents, configuration, yaml, hcl configuration weight: 20 +canonical: https://docs.docker.com/ai/docker-agent/configuration/hcl/ --- _Write docker-agent configs in HCL instead of YAML. It maps to the same docker-agent schema and validation rules._ @@ -194,6 +195,66 @@ command "fix-lint" { The model will receive the literal `${shell({cmd: "task lint"})}` text. +## Loading Files with `file()` + +The `file()` function reads a UTF-8 text file and returns its contents as a string. Relative paths are resolved from the HCL config file's directory, and reads are restricted to that directory. + +This keeps long prompts out of the config: + +```hcl +agent "root" { + model = "openai/gpt-5" + description = "Coding assistant" + instruction = file("prompts/coding.md") +} +``` + +With a single argument, the file contents are returned exactly as written — any `${...}` in the file stays literal, so runtime snippets like `${shell({cmd: "..."})}` pass through untouched. + +### Rendering files as templates + +Pass an object as the second argument to render the file as an HCL template. Each key becomes a variable available inside the file: + +```hcl +agent "reviewer" { + model = "openai/gpt-5" + description = "Go reviewer" + instruction = file("prompts/reviewer.md", { + language = "Go" + strictness = "high" + }) +} + +agent "py_reviewer" { + model = "openai/gpt-5" + description = "Python reviewer" + instruction = file("prompts/reviewer.md", { + language = "Python" + strictness = "relaxed" + }) +} +``` + +With `prompts/reviewer.md` containing: + +```markdown +You review ${language} code with ${strictness} strictness. +``` + +Templates support the full HCL template syntax, including `%{ for }` and `%{ if }` directives: + +```markdown +Rules: +%{ for rule in rules ~} +- ${rule} +%{ endfor ~} +``` + +Two things to keep in mind: + +- Referencing a variable that is not in the object is an error. +- No functions are available inside templates, so a template cannot call `file()` again. If the file needs a literal `${...}` while being rendered as a template, escape it as `$${...}` inside the file. + ## Repeated Blocks Become Lists Some YAML sections are lists. In HCL, those are written as repeated blocks. @@ -230,7 +291,7 @@ The same idea applies to other list-shaped sections such as RAG `strategy` block docker-agent uses HCL as a configuration syntax, not as Terraform: - There are no modules, `locals`, or `variable` blocks. -- There are no docker-agent-specific HCL functions to call from expressions. +- The only function available in expressions is [`file()`](#loading-files-with-file); Terraform's function library (including `templatefile()`, which `file()` with a vars object replaces) is not available. - Prefer normal literal values: strings, numbers, booleans, lists, objects, and nested blocks. - After conversion, the result is validated exactly like the equivalent YAML config. @@ -242,3 +303,4 @@ See these real configs in the repository: - [`examples/pirate.hcl`](https://github.com/docker/docker-agent/blob/main/examples/pirate.hcl) - [`examples/gopher.hcl`](https://github.com/docker/docker-agent/blob/main/examples/gopher.hcl) +- [`examples/instructions_from_file.hcl`](https://github.com/docker/docker-agent/blob/main/examples/instructions_from_file.hcl) diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/hooks/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/hooks/index.md index b1bf7b005f0..a20eca248d4 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/hooks/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/hooks/index.md @@ -3,6 +3,7 @@ title: "Hooks" description: "Run shell commands at various points during agent execution for deterministic control over behavior." keywords: docker agent, ai agents, configuration, yaml, hooks weight: 60 +canonical: https://docs.docker.com/ai/docker-agent/configuration/hooks/ --- _Run shell commands at various points during agent execution for deterministic control over behavior._ @@ -66,6 +67,8 @@ docker-agent dispatches the following hook events: ## Configuration +You can configure hooks directly in an agent YAML file under the agent's `hooks:` block: + ```yaml agents: root: @@ -114,6 +117,35 @@ agents: command: "./scripts/alert.sh" ``` +## Global (user-level) hooks + +Global hooks let you apply the same hook configuration to every agent you run. Define them in your user config file at `~/.config/cagent/config.yaml` under `settings.hooks`: + +```yaml +# ~/.config/cagent/config.yaml +settings: + hooks: + session_start: + - type: command + command: "~/.config/cagent/hooks/session-start.sh" + pre_compact: + - type: command + command: "~/.config/cagent/hooks/pre-compact.sh" + pre_tool_use: + - matcher: "shell" + hooks: + - type: command + command: "~/.config/cagent/hooks/check-shell.sh" +``` + +Global hooks use the same schema as agent-level hooks and are additive. If an event is configured in multiple places, all matching hooks run in this order: + +1. Agent-config hooks from the agent YAML +2. Global hooks from `settings.hooks` +3. CLI hooks from `--hook-*` flags + +Global hooks cannot be suppressed by an individual agent. Use them for user-wide audit logging, personal guardrails, notifications, and setup/cleanup behavior that should apply everywhere. + ## Built-in Hooks In addition to shell `command` hooks, docker-agent ships a small library of **built-in hooks** — in-process Go functions that run without spawning a subprocess. They're invoked with `type: builtin`, where `command` is the builtin's registered name and `args` are passed through as the builtin's parameters. @@ -444,7 +476,7 @@ hooks: `pre_tool_use` is fail-closed for safety: a failed pre-tool hook blocks the tool call regardless of `on_error`. -`working_dir` and `env` apply to `command` and `builtin` hooks. For `builtin` hooks, `working_dir` is resolved with the same logic as `command` hooks (absolute path wins; relative paths join onto the executor directory). For `model` hooks, both fields are accepted by the schema but have no effect: model hooks render a prompt template and call the LLM API directly — no subprocess is spawned and no file I/O is performed, so working directory and environment variables have no applicable semantics. +`working_dir` and `env` apply to `command` and `builtin` hooks. For `builtin` hooks, `working_dir` is resolved with the same logic as `command` hooks (absolute path wins; relative paths join onto the executor directory). `working_dir` accepts `~`, `$VAR`, `${VAR}` and `${env.VAR}`; `env` values expand only the plain `${env.VAR}` form (resolved from the OS process environment), keeping any other `$` literal (see [Variable Expansion in Config Fields](../overview/index.md#variable-expansion-in-config-fields)). A `working_dir` that expands to an empty string (e.g. an unset variable) falls back to the executor's directory with a warning. For `model` hooks, both fields are accepted by the schema but have no effect: model hooks render a prompt template and call the LLM API directly — no subprocess is spawned and no file I/O is performed, so working directory and environment variables have no applicable semantics. > [!WARNING] > **Performance** @@ -879,4 +911,4 @@ $ docker agent run agentcatalog/coder \ > [!NOTE] > **Merging behavior** > -> CLI hooks are **appended** to any hooks already defined in the agent's YAML config. They don't replace existing hooks. Pre/post-tool-use hooks added via CLI match all tools (equivalent to `matcher: "*"`). +> Agent-config, global, and CLI hooks are additive. For each event, hooks run in this order: agent-config hooks first, then global hooks from `settings.hooks`, then CLI hooks. No source replaces another, and individual agents cannot opt out of global hooks. diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/models/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/models/index.md index 086a0562c58..2952bc4f4cb 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/models/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/models/index.md @@ -4,6 +4,7 @@ description: "Complete reference for defining models with providers, parameters, keywords: docker agent, ai agents, configuration, yaml, model configuration linkTitle: "Model Config" weight: 40 +canonical: https://docs.docker.com/ai/docker-agent/configuration/models/ --- _Complete reference for defining models with providers, parameters, and reasoning settings._ @@ -17,7 +18,7 @@ models: first_available: [list] # Optional: candidate model refs, tried in order by available credentials. # Mutually exclusive with other model settings. provider: string # Required unless using first_available. One of: openai, anthropic, google, amazon-bedrock, - # dmr, mistral, xai, nebius, minimax, baseten, ovhcloud, groq, fireworks, deepseek, cerebras, together, huggingface, moonshot, vercel, cloudflare-workers-ai, cloudflare-ai-gateway, requesty, openrouter, + # dmr, mistral, xai, nebius, nvidia, minimax, baseten, ovhcloud, groq, fireworks, deepseek, cerebras, together, huggingface, moonshot, vercel, cloudflare-workers-ai, cloudflare-ai-gateway, requesty, openrouter, # azure, ollama, github-copilot, or a named provider defined # under the top-level `providers:` section. model: string # Required: model identifier @@ -40,6 +41,7 @@ models: key: value title_model: string # Optional: model used for session-title generation compaction_model: string # Optional: model used for session-compaction (summary generation) + compaction_threshold: float # Optional: context-window fraction that triggers auto-compaction (0–1, default: 0.9) bypass_models_gateway: boolean # Optional: skip the models gateway for this model ``` @@ -48,7 +50,7 @@ models: | Property | Type | Required | Description | | --------------------- | ---------- | -------- | ------------------------------------------------------------------------------------- | | `first_available` | array | ✗ | Candidate model references tried in order; selects the first whose credentials are configured. Mutually exclusive with other model settings. | -| `provider` | string | ✓/✗ | Required for regular model definitions; omitted for `first_available` selectors. Provider: `openai`, `anthropic`, `google`, `amazon-bedrock`, `dmr`, `mistral`, `xai`, `nebius`, `minimax`, `baseten`, `ovhcloud`, `groq`, `fireworks`, `deepseek`, `cerebras`, `together`, `huggingface`, `moonshot`, `vercel`, `cloudflare-workers-ai`, `cloudflare-ai-gateway`, `requesty`, `openrouter`, `azure`, `ollama`, `github-copilot`, or any [named provider](../../providers/custom/index.md). | +| `provider` | string | ✓/✗ | Required for regular model definitions; omitted for `first_available` selectors. Provider: `openai`, `anthropic`, `google`, `amazon-bedrock`, `dmr`, `mistral`, `xai`, `nebius`, `nvidia`, `minimax`, `baseten`, `ovhcloud`, `groq`, `fireworks`, `deepseek`, `cerebras`, `together`, `huggingface`, `moonshot`, `vercel`, `cloudflare-workers-ai`, `cloudflare-ai-gateway`, `requesty`, `openrouter`, `azure`, `ollama`, `github-copilot`, or any [named provider](../../providers/custom/index.md). | | `model` | string | ✓/✗ | Required for regular model definitions; omitted for `first_available` selectors. Model name (e.g., `gpt-4o`, `claude-sonnet-4-5`, `gemini-3.5-flash`) | | `temperature` | float | ✗ | Sampling randomness. Range is provider-dependent — typically `0.0–2.0` (Anthropic caps at `1.0`). `0.0` is deterministic. | | `max_tokens` | int | ✗ | Maximum response length in tokens | @@ -66,6 +68,7 @@ models: | `provider_opts` | object | ✗ | Provider-specific options (see provider pages) | | `title_model` | string | ✗ | Model used for session-title generation. Can be a named model from the `models:` section or an inline `provider/model` string. When omitted, the agent's primary model generates titles. Cannot be combined with `first_available`. | | `compaction_model` | string | ✗ | Model used for session compaction (summary generation). Can be a named model or an inline `provider/model` string. When omitted, the primary model compacts. Cannot be combined with `first_available`. See [Delegating Session Compaction](#delegating-session-compaction). | +| `compaction_threshold` | float | ✗ | Fraction of the context window at which proactive auto-compaction triggers for agents running this model. Must be greater than `0` and at most `1`. Takes precedence over the agent-level `compaction_threshold`. Cannot be combined with `first_available`. Default: `0.9`. | | `bypass_models_gateway` | boolean | ✗ | When `true`, this model connects directly to its provider even when a models gateway (`--models-gateway` / `CAGENT_MODELS_GATEWAY`) is configured. See [Gateway Bypass](#gateway-bypass). | ## Attachment Capability Overrides @@ -152,12 +155,32 @@ call can always ingest the full conversation. Pair the primary with a compaction model whose window is at least as large to keep the proactive trigger aligned with the primary's window. +By default the proactive trigger fires when the estimated token usage crosses +**90%** of the context window. The `compaction_threshold` field tunes that +fraction (greater than `0`, at most `1`): lower values compact earlier and +keep requests smaller, higher values compact later and keep more verbatim +history. It can be set on the model (as above, taking precedence) or on the +agent, and automatic compaction can be disabled entirely per agent with +`session_compaction: false` — see [Agent Config](../agents/index.md#properties-reference). + +```yaml +models: + primary: + provider: anthropic + model: claude-sonnet-4-5 + compaction_model: fast + # Compact at 80% of the window instead of the default 90%. + compaction_threshold: 0.8 +``` + > [!WARNING] > **Constraint** > > `compaction_model` cannot be combined with `first_available` model selection — the combination is rejected at validation time. -See [`examples/compaction_model.yaml`](https://github.com/docker/docker-agent/blob/main/examples/compaction_model.yaml) for a complete example. +See [`examples/compaction_model.yaml`](https://github.com/docker/docker-agent/blob/main/examples/compaction_model.yaml) +and [`examples/compaction_threshold.yaml`](https://github.com/docker/docker-agent/blob/main/examples/compaction_threshold.yaml) +for complete examples. ## Gateway Bypass @@ -400,7 +423,7 @@ See the [Anthropic provider page](../../providers/anthropic/index.md#thinking-di ## Custom HTTP Headers For OpenAI-compatible providers (`openai`, `github-copilot`, `mistral`, `xai`, -`nebius`, `minimax`, `baseten`, `ovhcloud`, `groq`, `fireworks`, `deepseek`, `cerebras`, `together`, `huggingface`, `moonshot`, `vercel`, `cloudflare-workers-ai`, `cloudflare-ai-gateway`, `requesty`, `openrouter`, `ollama`, and any custom provider using the OpenAI API), +`nebius`, `nvidia`, `minimax`, `baseten`, `ovhcloud`, `groq`, `fireworks`, `deepseek`, `cerebras`, `together`, `huggingface`, `moonshot`, `vercel`, `cloudflare-workers-ai`, `cloudflare-ai-gateway`, `requesty`, `openrouter`, `ollama`, and any custom provider using the OpenAI API), `provider_opts.http_headers` adds arbitrary HTTP headers to every outgoing request: diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/overview/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/overview/index.md index 104e7f01306..8579b0d306c 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/overview/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/overview/index.md @@ -4,6 +4,7 @@ description: "docker-agent uses YAML or HCL configuration files to define agents keywords: docker agent, ai agents, configuration, yaml, configuration overview linkTitle: "Overview" weight: 10 +canonical: https://docs.docker.com/ai/docker-agent/configuration/overview/ aliases: - /ai/docker-agent/reference/config/ --- @@ -212,6 +213,8 @@ Applies to: - `agents..toolsets[*].working_dir` (MCP, LSP) - `agents..toolsets[*].path` (memory, tasks) - `agents..toolsets[*].env` values (MCP, shell, script, LSP) +- `agents..toolsets[*].shell..working_dir` (script tools) +- `agents..hooks.*.working_dir` - The `~` prefix is also accepted in any path-like field documented as such. ```yaml @@ -227,6 +230,21 @@ agents: Unlike the JS-templated fields above, these accept only a plain variable reference: richer JS expressions (e.g. `${env.VAR || 'default'}`) are **not** evaluated here, and the legacy `$VAR` / `${VAR}` forms keep working for backward compatibility. +Hook and script-tool `env` values expand only the plain `${env.VAR}` form, resolved against the **OS process environment** (dotenv/secret-provider values are not consulted); a bare `$VAR` or `${VAR}` is passed through **literally**, so values that legitimately contain `$` (passwords, templates) are never mangled: + +```yaml +agents: + root: + hooks: + session_start: + - type: command + command: ./notify.sh + working_dir: "~/scripts" # ~, $VAR, ${VAR}, ${env.VAR} all work + env: + API_TOKEN: "${env.NOTIFY_TOKEN}" # expanded + PASSWORD: "pa$$word" # kept literal +``` + Model definitions follow the same rule. The `models..model` and `models..base_url` fields are expanded when the provider is built, accepting both `${env.VAR}` and `${VAR}`. This is useful when the model id or endpoint is injected by the environment (for example a Docker Compose / DMR setup that exports the model reference as a variable): ```yaml @@ -248,10 +266,11 @@ models: | `commands.*` | ✓ | ✗ | ✗ | | `headers`, `remote.headers`, `api_config.headers` | ✓ | ✗ | ✗ | | `models.*.model`, `models.*.base_url` | ✓ | ✓ | ✗ | -| `working_dir`, `path` | ✓ | ✓ | ✓ | -| `env` values | ✓ | ✓ | ✗ | +| `working_dir`, `path` (toolset, script tool, hook) | ✓ | ✓ | ✓ | +| `env` values (toolset) | ✓ | ✓ | ✗ | +| `env` values (hook, script tool) | ✓ | literal | ✗ | -The `~` prefix is meaningful only in path-like fields (`working_dir`, `path`). +The `~` prefix is meaningful only in path-like fields (`working_dir`, `path`). In hook and script-tool `env` values, "literal" means a bare `$X` / `${X}` is passed to the process unchanged — only `${env.X}` is substituted there, so values containing `$` survive intact. Prefer `${env.X}` everywhere. The bare `$X` / `${X}` and `~` forms are accepted only in path and `env` value fields, where they remain supported for backward compatibility. diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/permissions/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/permissions/index.md index e06f7cb7363..42e27d2e924 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/permissions/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/permissions/index.md @@ -3,6 +3,7 @@ title: "Permissions" description: "Control which tools can execute automatically, require confirmation, or are blocked entirely." keywords: docker agent, ai agents, configuration, yaml, permissions weight: 70 +canonical: https://docs.docker.com/ai/docker-agent/configuration/permissions/ --- _Control which tools can execute automatically, require confirmation, or are blocked entirely._ @@ -25,6 +26,8 @@ Permissions can be defined at two levels: | **Agent-level** | Agent YAML config (`permissions:` section) | Applies to that specific agent config | | **Global (user-level)** | `~/.config/cagent/config.yaml` under `settings.permissions` | Applies to every agent you run | +Hooks follow the same user-config pattern: agent-level hooks live under `agents..hooks`, and global hooks live under `settings.hooks`. See [Hooks](../hooks/index.md#global-user-level-hooks). + Both levels use the same `allow`/`ask`/`deny` pattern syntax. When both are present, they are **merged** at startup -- patterns from both sources are combined into a single checker. See [Merging Behavior](#merging-behavior) for details. ## Agent-Level Configuration diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/routing/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/routing/index.md index 60f5bd5abaa..6cc224b1679 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/routing/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/routing/index.md @@ -3,6 +3,7 @@ title: "Model Routing" description: "Route requests to different models based on the content of user messages." keywords: docker agent, ai agents, configuration, yaml, model routing weight: 100 +canonical: https://docs.docker.com/ai/docker-agent/configuration/routing/ --- _Route requests to different models based on the content of user messages._ diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/sandbox/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/sandbox/index.md index fa7dcf4b971..015874e292d 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/sandbox/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/sandbox/index.md @@ -3,6 +3,7 @@ title: "Sandbox Mode" description: "Run agents in an isolated Docker sandbox VM for enhanced security." keywords: docker agent, ai agents, configuration, yaml, sandbox mode weight: 80 +canonical: https://docs.docker.com/ai/docker-agent/configuration/sandbox/ --- _Run agents in an isolated Docker sandbox VM for enhanced security._ diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/structured-output/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/structured-output/index.md index 5f0adddd739..ee370e7d6c9 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/structured-output/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/structured-output/index.md @@ -3,6 +3,7 @@ title: "Structured Output" description: "Force the agent to respond with JSON matching a specific schema." keywords: docker agent, ai agents, configuration, yaml, structured output weight: 90 +canonical: https://docs.docker.com/ai/docker-agent/configuration/structured-output/ --- _Force the agent to respond with JSON matching a specific schema._ diff --git a/_vendor/github.com/docker/docker-agent/docs/configuration/tools/index.md b/_vendor/github.com/docker/docker-agent/docs/configuration/tools/index.md index db3e16aaea9..57e683e445f 100644 --- a/_vendor/github.com/docker/docker-agent/docs/configuration/tools/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/configuration/tools/index.md @@ -4,6 +4,7 @@ description: "Complete reference for configuring built-in tools, MCP tools, and keywords: docker agent, ai agents, configuration, yaml, tool configuration linkTitle: "Tool Config" weight: 50 +canonical: https://docs.docker.com/ai/docker-agent/configuration/tools/ aliases: - /ai/docker-agent/reference/toolsets/ --- @@ -17,7 +18,8 @@ Built-in tools are included with docker-agent and require no external dependenci | Type | Description | Page | | --- | --- | --- | | `filesystem` | Read, write, list, search, navigate | [Filesystem](../../tools/filesystem/index.md) | -| `shell` | Execute shell commands (sync + background jobs) | [Shell](../../tools/shell/index.md) | +| `shell` | Execute shell commands synchronously | [Shell](../../tools/shell/index.md) | +| `background_jobs` | Run and manage long-running shell commands | [Background Jobs](../../tools/background-jobs/index.md) | | `think` | Reasoning scratchpad | [Think](../../tools/think/index.md) | | `plan` | Shared persistent scratchpad for multi-agent collaboration | [Plan](../../tools/plan/index.md) | | `session_plan` | Per-session markdown plan for the draft-review-execute workflow | [Session Plan](../../tools/session_plan/index.md) | @@ -46,6 +48,7 @@ Built-in tools are included with docker-agent and require no external dependenci toolsets: - type: filesystem - type: shell + - type: background_jobs - type: think - type: todo - type: memory @@ -126,7 +129,7 @@ toolsets: | Property | Type | Description | | ----------------------- | ------- | --------------------------------------------------------------------------------------------------------------------- | -| `remote.url` | string | Base URL of the MCP server | +| `remote.url` | string | URL of the MCP server. Accepts `https://`, `http://`, and `unix://` (Unix domain socket) schemes. | | `remote.transport_type` | string | `streamable` or `sse` | | `remote.headers` | object | HTTP headers (typically for auth) | | `allow_private_ips` | boolean | Permit remote MCP OAuth helper requests to dial non-public IP addresses. Use only for trusted internal servers. | diff --git a/_vendor/github.com/docker/docker-agent/docs/features/a2a/index.md b/_vendor/github.com/docker/docker-agent/docs/features/a2a/index.md index 0413e9e0354..886619afd48 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/a2a/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/a2a/index.md @@ -3,6 +3,7 @@ title: "A2A Protocol" description: "Expose docker-agent agents via Google's Agent-to-Agent (A2A) protocol for interoperability with other agent frameworks." keywords: docker agent, ai agents, features, a2a protocol weight: 60 +canonical: https://docs.docker.com/ai/docker-agent/features/a2a/ aliases: - /ai/docker-agent/integrations/a2a/ --- diff --git a/_vendor/github.com/docker/docker-agent/docs/features/acp/index.md b/_vendor/github.com/docker/docker-agent/docs/features/acp/index.md index 5152353abe0..86dd9dbd3ec 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/acp/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/acp/index.md @@ -4,6 +4,7 @@ description: "Expose docker-agent agents via the Agent Client Protocol for integ keywords: docker agent, ai agents, features, acp (agent client protocol) linkTitle: "ACP" weight: 70 +canonical: https://docs.docker.com/ai/docker-agent/features/acp/ aliases: - /ai/docker-agent/integrations/acp/ --- diff --git a/_vendor/github.com/docker/docker-agent/docs/features/api-server/index.md b/_vendor/github.com/docker/docker-agent/docs/features/api-server/index.md index f5da934988e..2a1ba6432d8 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/api-server/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/api-server/index.md @@ -3,6 +3,7 @@ title: "API Server" description: "Expose your agents via an HTTP API for programmatic access, web frontends, and integrations." keywords: docker agent, ai agents, features, api server weight: 80 +canonical: https://docs.docker.com/ai/docker-agent/features/api-server/ --- _Expose your agents via an HTTP API for programmatic access, web frontends, and integrations._ @@ -182,7 +183,7 @@ docker agent serve api | [flags] | `-s, --session-db` | `session.db` | Path to the SQLite session database | | `--pull-interval` | `0` (disabled) | Auto-pull OCI reference every N minutes | | `--fake` | (none) | Replay AI responses from cassette file (testing) | -| `--record` | (none) | Record AI API interactions to cassette file | +| `--record` | (none) | Record AI API interactions to cassette file. Routes through `--models-gateway` when one is configured. | | `--mcp-oauth-redirect-uri` | (none) | Public HTTPS URL advertised as the OAuth `redirect_uri` for unmanaged MCP OAuth flows. When set, docker-agent drives PKCE and code exchange in-process and sends the full authorize URL to the client via elicitation. See [Remote MCP](../remote-mcp/index.md) for details. | > [!TIP] diff --git a/_vendor/github.com/docker/docker-agent/docs/features/board/index.md b/_vendor/github.com/docker/docker-agent/docs/features/board/index.md new file mode 100644 index 00000000000..dbda07e67e1 --- /dev/null +++ b/_vendor/github.com/docker/docker-agent/docs/features/board/index.md @@ -0,0 +1,83 @@ +--- +title: "Kanban Board" +description: "Orchestrate multiple agents from a Kanban TUI: each card runs an agent in a tmux session on an isolated git worktree." +keywords: docker agent, ai agents, features, board, kanban, orchestration +linkTitle: "Kanban Board" +weight: 15 +canonical: https://docs.docker.com/ai/docker-agent/features/board/ +--- + +_Board is a Kanban TUI for orchestrating agents. Each card launches an agent +in a tmux session on an isolated git worktree, and moving a card forward +through the pipeline sends the destination column's prompt to its agent._ + +## Launching the board + +```bash +$ docker agent board +``` + +Requirements: `tmux` and `git` must be installed. + +## How it works + +- **Cards run agents.** Creating a card (`n`) launches `docker agent run` in + a dedicated tmux session, working in a fresh git worktree branched from the + project's upstream default branch. The card's title, running/idle status, + and failures are mirrored live from the agent's control plane. +- **Columns are a pipeline.** The default pipeline is + Dev → Review → Push → Done. Moving a card forward (`]`) + sends the destination column's prompt to the card's agent; moving it back + (`[`) sends nothing. +- **Attach anytime.** Press `enter` (or double-click a card) to attach your + terminal to the agent's session and interact with it directly; `ctrl+q` + detaches and returns to the board. +- **Everything is recoverable.** Quitting the board leaves agents running in + tmux; restarting it reattaches to them. If an agent process dies, the board + relaunches it and resumes the same conversation and worktree. + +## Key bindings + +| Key | Action | +| ------------- | --------------------------------------------------- | +| `n` | Create a card (project + prompt) | +| `enter` | Attach to the card's agent (`ctrl+q` detaches) | +| `d` | View the card's worktree diff | +| `o` | Open the card's worktree in `$BOARD_EDITOR` (`code`) | +| `[` / `]` | Move the card back / forward | +| `x` | Delete the card, its session, worktree, and branch | +| `p` | Manage projects | +| `e` | Edit the selected column's prompt | +| `←↓↑→` `hjkl` | Navigate | +| mouse | Click selects, double-click attaches, wheel scrolls | +| `?` | Help | +| `q` | Quit (agents keep running) | + +## Configuration + +Everything is configured in the global config file +(`~/.config/cagent/config.yaml`) or through the TUI itself (`p` for projects, +`e` for column prompts): + +```yaml +board: + projects: + - name: my-app + path: /Users/me/src/my-app + agent: coder # any agent ref; defaults to the built-in agent + columns: + - id: dev + name: Dev + emoji: 🔨 + - id: review + name: Review + emoji: 🔍 + prompt: Review the local changes and fix any issues you find. + - id: done + name: Done + emoji: ✅ +``` + +Omitting `columns` keeps the default pipeline. When a card enters a column +with a `prompt`, that prompt is delivered to the card's agent as its next +message. diff --git a/_vendor/github.com/docker/docker-agent/docs/features/chat-server/index.md b/_vendor/github.com/docker/docker-agent/docs/features/chat-server/index.md index f88377550ad..bf7efcf559c 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/chat-server/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/chat-server/index.md @@ -3,6 +3,7 @@ title: "Chat Server" description: "Expose your agents through an OpenAI-compatible Chat Completions API so any tool that already speaks OpenAI can drive a docker-agent agent." keywords: docker agent, ai agents, features, chat server weight: 90 +canonical: https://docs.docker.com/ai/docker-agent/features/chat-server/ --- _Expose your agents through an OpenAI-compatible Chat Completions API so any tool that already speaks OpenAI can drive a docker-agent agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/features/cli/index.md b/_vendor/github.com/docker/docker-agent/docs/features/cli/index.md index 66e6954ed83..7af7da4df7e 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/cli/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/cli/index.md @@ -3,6 +3,7 @@ title: "CLI Reference" description: "Complete reference for all docker-agent command-line commands and flags." keywords: docker agent, ai agents, features, cli reference weight: 30 +canonical: https://docs.docker.com/ai/docker-agent/features/cli/ aliases: - /ai/docker-agent/reference/cli/ --- @@ -50,7 +51,7 @@ $ docker agent run [config] [message...] [flags] | `--template ` | Template image for the sandbox (default: `docker/sandbox-templates:docker-agent`) | | `--sbx` | Prefer the `sbx` CLI backend when available (default `true`; set `--sbx=false` to force `docker sandbox`) | | `--no-kit` | Disable the [auto-kit](../../configuration/sandbox/index.md#auto-kit): do not stage skills or prompt files into the sandbox | -| `--agent-picker [refs]` | Show a full-screen interactive picker before launching, letting you browse and select an agent. Accepts an optional comma-separated list of agent references to show (defaults to `default,coder`). Arrow keys navigate; `?` toggles the YAML preview panel; Enter confirms. Not available in `--exec` or non-TTY modes. | +| `--agent-picker [refs]` | Show a full-screen interactive picker before launching, letting you browse and select an agent. Accepts an optional comma-separated list of agent references to show (defaults to the built-in `default` and `coder` agents plus any agent configs found in `~/.agents`). Arrow keys navigate; `?` toggles the YAML preview panel; `l` (or mouse-click) toggles the **Lean Mode** checkbox to launch in the lean TUI; Enter confirms. Not available in `--exec` or non-TTY modes. | | `-w, --worktree [name]` | Run the agent in a fresh git worktree of the working directory, isolating its changes from your checkout. Optionally name it (`--worktree=my-feature`); otherwise a name is generated. Requires the working directory to be inside a git repository. Every tool (the shell included) runs inside the worktree. Combine with `--working-dir` to branch from another repository, and with `--session` to resume into the same worktree later. Cannot be combined with `--remote` or `--sandbox`. When the session ends, a clean worktree is removed automatically; one with work prompts to keep or remove (never in `--exec`). | | `--worktree-base ` | Branch the `--worktree` from `` (a branch, tag, commit, or remote-tracking ref like `origin/main`) instead of the current `HEAD`. A remote-tracking ref is fetched first so the worktree starts from the latest remote state. Requires `--worktree`; cannot be combined with `--worktree-pr`, `--remote`, or `--sandbox`. | | `--worktree-pr ` | Run the agent in a git worktree checked out on an existing GitHub pull request (PR number, `#123`, or PR URL). Continues the PR's branch so commits push back to it. Requires the [GitHub CLI](https://cli.github.com/) (`gh`). Cannot be combined with `--worktree`, `--remote`, or `--sandbox`. | @@ -66,7 +67,7 @@ $ docker agent run [config] [message...] [flags] | `--hook-stop ` | Add a stop hook command, fired when the model finishes responding (repeatable) | | `--fake ` | Replay AI responses from a cassette file (for testing). Mutually exclusive with `--record`. | | `--fake-stream [ms]` | When replaying with `--fake`, simulate streaming with a delay between chunks (defaults to 15ms when given without a value). | -| `--record [path]` | Record AI API interactions to a cassette file (auto-generates filename if no path given) | +| `--record [path]` | Record AI API interactions to a cassette file and generate a TUI e2e test from the session (auto-generates filename if no path given). Routes through `--models-gateway` when one is configured. | | `-d, --debug` | Enable debug logging | | `--log-file ` | Custom debug log location | | `-o, --otel` | Enable OpenTelemetry observability: traces, metrics, and logs. Requires `OTEL_EXPORTER_OTLP_ENDPOINT` to export to a collector. | @@ -213,7 +214,7 @@ $ docker agent serve api || [flags] | `-s, --session-db ` | `session.db` | Path to the SQLite session database (relative paths resolve against the working directory). | | `--pull-interval `| `0` | Periodically re-pull OCI/URL references and refresh the agent definition. `0` disables auto-pull. | | `--fake ` | (none) | Replay AI responses from a cassette file (for testing). Mutually exclusive with `--record`. | -| `--record [path]` | (none) | Record AI API interactions to a cassette file. | +| `--record [path]` | (none) | Record AI API interactions to a cassette file. Routes through `--models-gateway` when one is configured. | | `--mcp-oauth-redirect-uri ` | (none) | OAuth redirect URI for the unmanaged MCP OAuth flow in server mode. When set, the runtime drives PKCE and code exchange in-process and sends the full authorize URL to the client via elicitation. See [Remote MCP](../remote-mcp/index.md) for details. | > **Diagnostics:** Set `CAGENT_PPROF_ADDR=127.0.0.1:6060` (or `--pprof-addr`, a hidden flag) to start a live Go pprof server at `/debug/pprof/`. Use a loopback address; a non-loopback binding logs a security warning. diff --git a/_vendor/github.com/docker/docker-agent/docs/features/evaluation/index.md b/_vendor/github.com/docker/docker-agent/docs/features/evaluation/index.md index 3cd64217251..19f00a47426 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/evaluation/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/evaluation/index.md @@ -3,6 +3,7 @@ title: "Evaluation" description: "Measure agent quality with automated evaluations — tool call accuracy, response relevance, output size, and more." keywords: docker agent, ai agents, features, evaluation weight: 100 +canonical: https://docs.docker.com/ai/docker-agent/features/evaluation/ aliases: - /ai/docker-agent/evals/ --- @@ -68,7 +69,6 @@ Each eval file is a JSON session that captures a complete conversation. The key "messages": [ { "message": { - "agentFilename": "./agent.yaml", "message": { "role": "user", "content": "How many files in the local folder?" @@ -77,7 +77,7 @@ Each eval file is a JSON session that captures a complete conversation. The key }, { "message": { - "agentName": "root", + "agent_name": "root", "message": { "role": "assistant", "tool_calls": [ @@ -95,7 +95,7 @@ Each eval file is a JSON session that captures a complete conversation. The key }, { "message": { - "agentName": "root", + "agent_name": "root", "message": { "role": "assistant", "content": "There are 2 files in the local folder..." diff --git a/_vendor/github.com/docker/docker-agent/docs/features/harnesses/index.md b/_vendor/github.com/docker/docker-agent/docs/features/harnesses/index.md index 356be97ef2d..2acd78c4bb4 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/harnesses/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/harnesses/index.md @@ -3,6 +3,7 @@ title: "Coding Harnesses" description: "Delegate coding tasks to external AI coding CLIs (Claude Code, Codex, opencode) as sub-agents." keywords: docker agent, ai agents, features, coding harnesses weight: 50 +canonical: https://docs.docker.com/ai/docker-agent/features/harnesses/ --- _Delegate coding tasks to external AI coding CLIs (Claude Code, Codex, opencode) as sub-agents._ diff --git a/_vendor/github.com/docker/docker-agent/docs/features/mcp-mode/index.md b/_vendor/github.com/docker/docker-agent/docs/features/mcp-mode/index.md index 1f9f312d7eb..2609d5e3571 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/mcp-mode/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/mcp-mode/index.md @@ -3,6 +3,7 @@ title: "MCP Mode" description: "Expose your docker-agent agents as MCP tools for use in Claude Desktop, Claude Code, and other MCP-compatible applications." keywords: docker agent, ai agents, features, mcp mode weight: 40 +canonical: https://docs.docker.com/ai/docker-agent/features/mcp-mode/ --- _Expose your docker-agent agents as MCP tools for use in Claude Desktop, Claude Code, and other MCP-compatible applications._ diff --git a/_vendor/github.com/docker/docker-agent/docs/features/remote-mcp/index.md b/_vendor/github.com/docker/docker-agent/docs/features/remote-mcp/index.md index 87d29c7b0fa..dbf77433659 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/remote-mcp/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/remote-mcp/index.md @@ -3,13 +3,14 @@ title: "Remote MCP Servers" description: "Connect docker-agent to cloud services via remote MCP servers with built-in OAuth authentication." keywords: docker agent, ai agents, features, remote mcp servers weight: 120 +canonical: https://docs.docker.com/ai/docker-agent/features/remote-mcp/ --- _Connect docker-agent to cloud services via remote MCP servers with built-in OAuth authentication._ ## Overview -Docker Agent supports connecting to remote MCP servers over **Streamable HTTP** and **SSE** (Server-Sent Events) transports. Streamable HTTP is the current recommended transport for most hosted MCP servers. Many popular services offer MCP endpoints with OAuth — docker-agent handles the authentication flow automatically. +Docker Agent supports connecting to remote MCP servers over **Streamable HTTP**, **SSE** (Server-Sent Events), and **Unix domain sockets**. Streamable HTTP is the current recommended transport for most hosted MCP servers. Many popular services offer MCP endpoints with OAuth — docker-agent handles the authentication flow automatically. ```yaml toolsets: @@ -19,6 +20,20 @@ toolsets: transport_type: "streamable" ``` +## Unix Domain Sockets + +Use a `unix://` URL to connect to an MCP server listening on a local Unix socket. This is useful when running docker-agent inside a container and exposing an MCP server from the host via a bind-mounted socket: + +```yaml +toolsets: + - type: mcp + remote: + url: "unix:///tmp/mcp-notify.sock" + transport_type: "streamable" +``` + +The path after `unix://` is the absolute path to the socket file. Configured `headers` are forwarded over the socket connection. OAuth discovery is not supported for Unix socket URLs. + > [!TIP] > **OAuth flow** > diff --git a/_vendor/github.com/docker/docker-agent/docs/features/skills/index.md b/_vendor/github.com/docker/docker-agent/docs/features/skills/index.md index c76101ea7c4..d55b7b36b07 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/skills/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/skills/index.md @@ -3,6 +3,7 @@ title: "Skills" description: "Skills provide specialized instructions that agents can load on demand when a task matches a skill's description." keywords: docker agent, ai agents, features, skills weight: 110 +canonical: https://docs.docker.com/ai/docker-agent/features/skills/ --- _Skills provide specialized instructions that agents can load on demand when a task matches a skill's description._ diff --git a/_vendor/github.com/docker/docker-agent/docs/features/snapshots/index.md b/_vendor/github.com/docker/docker-agent/docs/features/snapshots/index.md index 1f152baca82..d3bd939421e 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/snapshots/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/snapshots/index.md @@ -3,6 +3,7 @@ title: "Snapshots" description: "Shadow-git snapshots capture your workspace at turn boundaries so you can review what an agent changed and undo it without touching your real git history." keywords: docker agent, ai agents, features, snapshots weight: 20 +canonical: https://docs.docker.com/ai/docker-agent/features/snapshots/ --- _Shadow-git snapshots capture your workspace at turn boundaries so you can review what an agent changed and undo it without touching your real git history._ diff --git a/_vendor/github.com/docker/docker-agent/docs/features/tui/index.md b/_vendor/github.com/docker/docker-agent/docs/features/tui/index.md index 922b1105958..9bfc1ebee9c 100644 --- a/_vendor/github.com/docker/docker-agent/docs/features/tui/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/features/tui/index.md @@ -4,6 +4,7 @@ description: "docker-agent's default interface is a rich, interactive terminal U keywords: docker agent, ai agents, features, terminal ui (tui) linkTitle: "Terminal UI" weight: 10 +canonical: https://docs.docker.com/ai/docker-agent/features/tui/ --- _docker-agent's default interface is a rich, interactive terminal UI with file attachments, themes, session management, and more._ @@ -56,6 +57,8 @@ settings: Omit `lean` or set it to `false` to keep the full TUI as the default. You can still use `--lean` for a single run, or `--lean=false` to use the full TUI when `settings.lean` is enabled. +The lean TUI supports **steering**: messages submitted while the agent is running are queued and delivered to the active session. Pending steering messages appear with muted styling at the end of the live stream so you can see what will be sent next. + ## Slash Commands Type `/` during a session to see available commands, or press Ctrl+K for the command palette: @@ -73,13 +76,15 @@ Type `/` during a session to see available commands, or press Ctrl+`, reasoning models only) | +| `/effort` | Set the current model's reasoning-effort level (`/effort `, or `/effort` alone to pick from the supported levels; reasoning models only) | | `/theme` | Change the color theme | | `/yolo` | Toggle automatic tool call approval | | `/title` | Set or regenerate session title | | `/attach` | Attach a file to your message | | `/shell` | Open a shell | | `/star` | Star/unstar the current session | +| `/context` | Show a context-window breakdown: estimated tokens per category (system prompt, tool definitions, prompt files, messages, tool results, compaction summary), plus a per-file inventory of attached files and prompt files. Select an attached file with the arrow keys and press d to drop it | +| `/drop` | Remove an attached file from the session context (`/drop `, or `/drop` alone to review and drop from the `/context` dialog) | | `/cost` | Show cost breakdown for this session | | `/eval` | Create an evaluation report | | `/pause` | Pause/resume the runtime loop. While the agent is mid-request, the resize handle shows "Pausing…" until the in-flight request completes; once the loop is blocked the indicator changes to "⏸ Paused". Run `/pause` again to resume. | @@ -95,7 +100,7 @@ Slash commands (both built-in and named) execute immediately when entered. Regul ### Agents Panel -The sidebar's **Agents** section lists every agent in the team. The current agent is shown as a focus **card** (rendered in place at its position in the list) with its name, a wrapped description, its full `provider/model`, and a thinking line. Every other agent is shown as a compact **two-line row** — line 1 is the shortcut/spinner, the agent name (in its accent color), and a right-aligned thinking **gauge**; line 2 is the indented full `provider/model` — so a large team stays scannable while still showing each model. Agents are separated by a blank line so the two-line rows stay visually distinct. The effort **gauge** is the only visual language for thinking; the focus card and the Agent Inspector spell out the exact level alongside it. Left-click any agent to switch to it. +The sidebar's **Agents** section lists every agent in the team. The current agent is shown as a focus **card** (rendered in place at its position in the list) with its name, a wrapped description, its full `provider/model`, and a thinking line. Every other agent is shown as a compact **two-line row** — line 1 is the shortcut/spinner, the agent name (in its accent color), and a right-aligned thinking **gauge**; line 2 is the indented full `provider/model` — so a large team stays scannable while still showing each model. Once an agent has run (in the main session, as a delegated sub-agent, or as a background agent task), line 2 also carries its latest **context usage** as a right-aligned percentage of its context window, so per-agent context accounting is visible at a glance across the whole team. Agents are separated by a blank line so the two-line rows stay visually distinct. The effort **gauge** is the only visual language for thinking; the focus card and the Agent Inspector spell out the exact level alongside it. Left-click any agent to switch to it. #### Agent inspector @@ -110,6 +115,7 @@ The title is rendered in the agent's accent color. Sections appear in this order - **Description** — the agent's wrapped description. - **Live state** — a `● current agent` line when the inspected agent is the one currently running. - **Model / Fallback / Thinking** — the `provider/model`, any fallback models, and the gauge + value thinking line (omitted for models with no selectable thinking, e.g. harness-backed agents). +- **Context** — the agent's latest known context usage, e.g. `Context: 12.8K of 128.0K tokens (10%)` (a bare token count when the context limit is unknown; omitted until the agent has run). Sub-agent and background-agent runs are accounted for. - **Sub-agents (N) / Handoffs (N) / Skills (N)** — compact, inline, comma-separated lists wrapped to the dialog width. - **Limits** — the configured per-agent limits that are set, e.g. `Limits: max-iter 50 · history 40 · max-tool-calls 5`. - **Options** — the enabled option flags, e.g. `Options: add-date · add-environment-info · redact-secrets`. @@ -183,6 +189,8 @@ Explain what the code in @pkg/agent/agent.go does The agent receives the full file contents in a structured `` block, while the UI shows just the reference. +Attached files are also recorded on the session so sub-agents spawned by task transfer can read them. To review what is attached, open `/context`: the dialog lists every attached file (and resolved prompt file) with a per-file token estimate. Use / to select an attached file and press d (or x/Del) to drop it, or run `/drop ` directly. Dropping stops sharing the file with sub-agents and skills; content already inlined in earlier messages stays in the conversation until compaction, and the file can always be re-attached with `@` or `/attach`. + ## Runtime Model Switching Change the AI model during a session with `/model` or Ctrl+M: @@ -211,6 +219,7 @@ Each error message includes a clickable **↻ retry** button. Clicking it resume docker-agent automatically saves your sessions. Use `/sessions` to browse past conversations: - **Browse** past sessions with search and filtering +- **Workspace grouping**: sessions started in the current directory are listed first under "This workspace", everything else under "Other locations" with its originating directory shown next to each entry; press Ctrl+G in the browser to cycle between all, current-directory only, and other-directory views. Restoring a session reopens it in its original directory, so the label always matches where a restore will land - **Star** important sessions with `/star` - **Branch** conversations by editing any previous user message — preserving the original session history - **Resume** sessions with `docker agent run config.yaml --session ` diff --git a/_vendor/github.com/docker/docker-agent/docs/getting-started/installation/index.md b/_vendor/github.com/docker/docker-agent/docs/getting-started/installation/index.md index 6d1e6da8123..75b0ebbe857 100644 --- a/_vendor/github.com/docker/docker-agent/docs/getting-started/installation/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/getting-started/installation/index.md @@ -3,6 +3,7 @@ title: "Installation" description: "Get docker-agent running on your system in minutes." keywords: docker agent, ai agents, getting started, installation weight: 20 +canonical: https://docs.docker.com/ai/docker-agent/getting-started/installation/ --- _Get docker-agent running on your system in minutes._ diff --git a/_vendor/github.com/docker/docker-agent/docs/getting-started/introduction/index.md b/_vendor/github.com/docker/docker-agent/docs/getting-started/introduction/index.md index 8b95a6f8661..0ade379b873 100644 --- a/_vendor/github.com/docker/docker-agent/docs/getting-started/introduction/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/getting-started/introduction/index.md @@ -3,6 +3,7 @@ title: "Introduction" description: "Docker Agent is a multi-agent runtime that lets you build, run, and share AI agents with a YAML or HCL config — no glue code required." keywords: docker agent, ai agents, getting started, introduction weight: 10 +canonical: https://docs.docker.com/ai/docker-agent/getting-started/introduction/ --- _Docker Agent is a multi-agent runtime that lets you build, run, and share AI agents with a YAML or HCL config — no glue code required._ diff --git a/_vendor/github.com/docker/docker-agent/docs/getting-started/quickstart/index.md b/_vendor/github.com/docker/docker-agent/docs/getting-started/quickstart/index.md index c0f7dc4a048..cc65bb8441e 100644 --- a/_vendor/github.com/docker/docker-agent/docs/getting-started/quickstart/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/getting-started/quickstart/index.md @@ -3,6 +3,7 @@ title: "Quick Start" description: "Get up and running with Docker Agent in under 5 minutes. Pick whichever path suits you best." keywords: docker agent, ai agents, getting started, quick start weight: 30 +canonical: https://docs.docker.com/ai/docker-agent/getting-started/quickstart/ aliases: - /ai/docker-agent/tutorial/ --- diff --git a/_vendor/github.com/docker/docker-agent/docs/guides/go-sdk/index.md b/_vendor/github.com/docker/docker-agent/docs/guides/go-sdk/index.md index ede2272bc28..6fa025a0315 100644 --- a/_vendor/github.com/docker/docker-agent/docs/guides/go-sdk/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/guides/go-sdk/index.md @@ -3,6 +3,7 @@ title: "Go SDK" description: "Use docker-agent as a Go library to embed AI agents in your applications." keywords: docker agent, ai agents, guides, go sdk weight: 40 +canonical: https://docs.docker.com/ai/docker-agent/guides/go-sdk/ --- _Use docker-agent as a Go library to embed AI agents in your applications._ diff --git a/_vendor/github.com/docker/docker-agent/docs/guides/secrets/index.md b/_vendor/github.com/docker/docker-agent/docs/guides/secrets/index.md index 1ebc7cb1068..596cadcbe66 100644 --- a/_vendor/github.com/docker/docker-agent/docs/guides/secrets/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/guides/secrets/index.md @@ -3,6 +3,7 @@ title: "Managing Secrets" description: "How to securely provide API keys and credentials to docker-agent using environment variables, env files, Docker Compose secrets, macOS Keychain, pass, and 1Password references." keywords: docker agent, ai agents, guides, managing secrets weight: 30 +canonical: https://docs.docker.com/ai/docker-agent/guides/secrets/ --- _How to securely provide API keys and credentials to docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/guides/thinking/index.md b/_vendor/github.com/docker/docker-agent/docs/guides/thinking/index.md index 0464aece638..60792a7fceb 100644 --- a/_vendor/github.com/docker/docker-agent/docs/guides/thinking/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/guides/thinking/index.md @@ -3,6 +3,7 @@ title: "Thinking / Reasoning" description: "Control how much a model reasons before responding. Works across OpenAI, Anthropic, Google Gemini, AWS Bedrock, and Docker Model Runner." keywords: docker agent, ai agents, guides, thinking / reasoning weight: 20 +canonical: https://docs.docker.com/ai/docker-agent/guides/thinking/ --- _Control how much a model reasons before responding. Works across OpenAI, Anthropic, Google Gemini, AWS Bedrock, and Docker Model Runner._ @@ -325,7 +326,7 @@ models: ## Changing Thinking Level at Runtime -While running in the TUI, press **Shift+Tab** to cycle the thinking effort level for the current model without editing your YAML config, or type `/effort ` to jump straight to a specific level (e.g. `/effort high`): +While running in the TUI, press **Shift+Tab** to cycle the thinking effort level for the current model without editing your YAML config, or type `/effort ` to jump straight to a specific level (e.g. `/effort high`). Running `/effort` without an argument opens a picker listing the levels the current model supports: - The level steps through the model's supported range (model-specific), wrapping around — for example `none → minimal → low → medium → high → none` on OpenAI gpt-5/o-series, `none → minimal → low → medium → high → xhigh → none` on gpt-5.2+, `none → low → medium → high → max → none` on Anthropic Opus 4.6 and Sonnet 4.6, and `none → low → medium → high → xhigh → max → none` on Anthropic Opus 4.7+, Fable 5, and Mythos 5. For older Anthropic models (e.g. Sonnet 4.5) that only accept token budgets, effort-string cycling has no effect — use an integer `thinking_budget` in your YAML config instead. - The current level is shown in the sidebar next to the model name (e.g. `openai/gpt-5 • high`). diff --git a/_vendor/github.com/docker/docker-agent/docs/guides/tips/index.md b/_vendor/github.com/docker/docker-agent/docs/guides/tips/index.md index b51de422dce..49dad40d332 100644 --- a/_vendor/github.com/docker/docker-agent/docs/guides/tips/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/guides/tips/index.md @@ -3,6 +3,7 @@ title: "Tips & Best Practices" description: "Expert guidance for building effective, efficient, and secure agents." keywords: docker agent, ai agents, guides, tips & best practices weight: 10 +canonical: https://docs.docker.com/ai/docker-agent/guides/tips/ aliases: - /ai/docker-agent/best-practices/ --- diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/anthropic/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/anthropic/index.md index c9d8107fde8..c7e8804190a 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/anthropic/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/anthropic/index.md @@ -3,6 +3,7 @@ title: "Anthropic" description: "Use Claude Sonnet 4, Claude Sonnet 4.5, and other Anthropic models with docker-agent." keywords: docker agent, ai agents, model providers, llm, anthropic weight: 20 +canonical: https://docs.docker.com/ai/docker-agent/providers/anthropic/ --- _Use Claude Sonnet 4, Claude Sonnet 4.5, and other Anthropic models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/baseten/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/baseten/index.md index 38c36a1811f..16337d3cf8b 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/baseten/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/baseten/index.md @@ -3,6 +3,7 @@ title: "Baseten" description: "Use Baseten AI models with docker-agent." keywords: docker agent, ai agents, model providers, llm, baseten weight: 40 +canonical: https://docs.docker.com/ai/docker-agent/providers/baseten/ --- _Use Baseten AI models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/bedrock/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/bedrock/index.md index 1641bf48664..7aae4d68783 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/bedrock/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/bedrock/index.md @@ -3,6 +3,7 @@ title: "AWS Bedrock" description: "Access Claude, Nova, Llama, and more through AWS infrastructure with enterprise-grade security and compliance." keywords: docker agent, ai agents, model providers, llm, aws bedrock weight: 30 +canonical: https://docs.docker.com/ai/docker-agent/providers/bedrock/ --- _Access Claude, Nova, Llama, and more through AWS infrastructure with enterprise-grade security and compliance._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/cerebras/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/cerebras/index.md index cd3bd715f0f..42523309247 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/cerebras/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/cerebras/index.md @@ -3,6 +3,7 @@ title: "Cerebras" description: "Use Cerebras models with docker-agent." keywords: docker agent, ai agents, model providers, llm, cerebras weight: 50 +canonical: https://docs.docker.com/ai/docker-agent/providers/cerebras/ --- _Use Cerebras models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/cloudflare-ai-gateway/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/cloudflare-ai-gateway/index.md index b4ddc559e33..175d537fd40 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/cloudflare-ai-gateway/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/cloudflare-ai-gateway/index.md @@ -3,6 +3,7 @@ title: "Cloudflare AI Gateway" description: "Use Cloudflare AI Gateway models with docker-agent." keywords: docker agent, ai agents, model providers, llm, cloudflare ai gateway weight: 60 +canonical: https://docs.docker.com/ai/docker-agent/providers/cloudflare-ai-gateway/ --- _Use Cloudflare AI Gateway models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/cloudflare-workers-ai/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/cloudflare-workers-ai/index.md index 16ab3e156bb..181878c4f78 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/cloudflare-workers-ai/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/cloudflare-workers-ai/index.md @@ -3,6 +3,7 @@ title: "Cloudflare Workers AI" description: "Use Cloudflare Workers AI models with docker-agent." keywords: docker agent, ai agents, model providers, llm, cloudflare workers ai weight: 70 +canonical: https://docs.docker.com/ai/docker-agent/providers/cloudflare-workers-ai/ --- _Use Cloudflare Workers AI models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/custom/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/custom/index.md index 240acddb60e..3eca864189b 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/custom/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/custom/index.md @@ -3,6 +3,7 @@ title: "Provider Definitions" description: "Define reusable provider configurations with shared defaults for any provider type — OpenAI, Anthropic, Google, Bedrock, and more." keywords: docker agent, ai agents, model providers, llm, provider definitions weight: 280 +canonical: https://docs.docker.com/ai/docker-agent/providers/custom/ --- _Define reusable provider configurations with shared defaults for any provider type — OpenAI, Anthropic, Google, Bedrock, and more._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/deepseek/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/deepseek/index.md index 75c922afdac..212fb870d7b 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/deepseek/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/deepseek/index.md @@ -3,6 +3,7 @@ title: "DeepSeek" description: "Use DeepSeek models with docker-agent." keywords: docker agent, ai agents, model providers, llm, deepseek weight: 80 +canonical: https://docs.docker.com/ai/docker-agent/providers/deepseek/ --- _Use DeepSeek models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/dmr/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/dmr/index.md index b245ef914e0..ea1f34422b8 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/dmr/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/dmr/index.md @@ -3,6 +3,7 @@ title: "Docker Model Runner" description: "Run AI models locally with Docker — no API keys, no costs, full data privacy." keywords: docker agent, ai agents, model providers, llm, docker model runner weight: 90 +canonical: https://docs.docker.com/ai/docker-agent/providers/dmr/ --- _Run AI models locally with Docker — no API keys, no costs, full data privacy._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/fireworks/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/fireworks/index.md index 85417b0c300..8ccdf36876e 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/fireworks/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/fireworks/index.md @@ -3,6 +3,7 @@ title: "Fireworks AI" description: "Use Fireworks AI models with docker-agent." keywords: docker agent, ai agents, model providers, llm, fireworks ai weight: 100 +canonical: https://docs.docker.com/ai/docker-agent/providers/fireworks/ --- _Use Fireworks AI models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/github-copilot/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/github-copilot/index.md index 6ce5fe34460..9111e0a5d82 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/github-copilot/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/github-copilot/index.md @@ -3,6 +3,7 @@ title: "GitHub Copilot" description: "Use GitHub Copilot's hosted models (GPT-4o, Claude, Gemini, and more) with docker-agent through your GitHub subscription." keywords: docker agent, ai agents, model providers, llm, github copilot weight: 110 +canonical: https://docs.docker.com/ai/docker-agent/providers/github-copilot/ --- _Use GitHub Copilot's hosted models with docker-agent through your existing GitHub subscription._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/google/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/google/index.md index bbe071c46b8..4f2a788139c 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/google/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/google/index.md @@ -3,6 +3,7 @@ title: "Google Gemini" description: "Use Gemini 2.5 Flash, Gemini 3 Pro, and other Google models with docker-agent." keywords: docker agent, ai agents, model providers, llm, google gemini weight: 120 +canonical: https://docs.docker.com/ai/docker-agent/providers/google/ --- _Use Gemini 2.5 Flash, Gemini 3 Pro, and other Google models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/groq/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/groq/index.md index 50464afcfdd..110ac699aad 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/groq/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/groq/index.md @@ -3,6 +3,7 @@ title: "Groq" description: "Use Groq fast-inference models with docker-agent." keywords: docker agent, ai agents, model providers, llm, groq weight: 130 +canonical: https://docs.docker.com/ai/docker-agent/providers/groq/ --- _Use Groq models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/huggingface/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/huggingface/index.md index 685b4899df0..be46c30771e 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/huggingface/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/huggingface/index.md @@ -3,6 +3,7 @@ title: "Hugging Face" description: "Use Hugging Face Inference Providers with docker-agent." keywords: docker agent, ai agents, model providers, llm, hugging face weight: 140 +canonical: https://docs.docker.com/ai/docker-agent/providers/huggingface/ --- _Use Hugging Face Inference Providers with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/local/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/local/index.md index ad11fcc9494..341c4672bc1 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/local/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/local/index.md @@ -4,6 +4,7 @@ description: "Run docker-agent with locally hosted models for privacy, offline u keywords: docker agent, ai agents, model providers, llm, local models (ollama, vllm, localai) linkTitle: "Local Models" weight: 150 +canonical: https://docs.docker.com/ai/docker-agent/providers/local/ aliases: - /ai/docker-agent/local-models/ --- diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/minimax/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/minimax/index.md index 1f62da36777..84ebf0ce58a 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/minimax/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/minimax/index.md @@ -3,6 +3,7 @@ title: "MiniMax" description: "Use MiniMax AI models with docker-agent." keywords: docker agent, ai agents, model providers, llm, minimax weight: 160 +canonical: https://docs.docker.com/ai/docker-agent/providers/minimax/ --- _Use MiniMax AI models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/mistral/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/mistral/index.md index 92b70f5d2a8..db977d44514 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/mistral/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/mistral/index.md @@ -3,6 +3,7 @@ title: "Mistral" description: "Use Mistral AI models with docker-agent." keywords: docker agent, ai agents, model providers, llm, mistral weight: 170 +canonical: https://docs.docker.com/ai/docker-agent/providers/mistral/ --- _Use Mistral AI models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/moonshot/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/moonshot/index.md index b48684481ae..f937beb2f26 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/moonshot/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/moonshot/index.md @@ -3,6 +3,7 @@ title: "Moonshot AI" description: "Use Moonshot AI (Kimi) models with docker-agent." keywords: docker agent, ai agents, model providers, llm, moonshot ai weight: 180 +canonical: https://docs.docker.com/ai/docker-agent/providers/moonshot/ --- _Use Moonshot AI (Kimi) models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/nebius/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/nebius/index.md index 295efa2bfd5..3b062a0d117 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/nebius/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/nebius/index.md @@ -3,6 +3,7 @@ title: "Nebius" description: "Use Nebius AI models with docker-agent." keywords: docker agent, ai agents, model providers, llm, nebius weight: 190 +canonical: https://docs.docker.com/ai/docker-agent/providers/nebius/ --- _Use Nebius AI models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/nvidia/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/nvidia/index.md new file mode 100644 index 00000000000..916b8674576 --- /dev/null +++ b/_vendor/github.com/docker/docker-agent/docs/providers/nvidia/index.md @@ -0,0 +1,115 @@ +--- +title: "NVIDIA NIM" +description: "Use NVIDIA NIM models with docker-agent." +keywords: docker agent, ai agents, model providers, llm, nvidia, nim, nemotron +weight: 290 +canonical: https://docs.docker.com/ai/docker-agent/providers/nvidia/ +--- + +_Use NVIDIA NIM models with docker-agent._ + +## Overview + +NVIDIA provides access to Nemotron and many other open-weight models through +[build.nvidia.com](https://build.nvidia.com/) (with a free tier) via an +OpenAI-compatible API. docker-agent includes built-in support for NVIDIA as an +alias provider. The same alias also works against a self-hosted +[NVIDIA NIM](https://docs.nvidia.com/nim/) deployment by overriding `base_url`. + +## Setup + +1. Get an API key from [build.nvidia.com](https://build.nvidia.com/) +2. Set the environment variable: + + ```bash + export NVIDIA_API_KEY=your-api-key + ``` + +## Usage + +### Inline Syntax + +The simplest way to use NVIDIA NIM: + +```yaml +agents: + root: + model: nvidia/nvidia/nemotron-3-super-120b-a12b + description: Assistant using NVIDIA NIM + instruction: You are a helpful assistant. +``` + +### Named Model + +For more control over parameters: + +```yaml +models: + nemotron: + provider: nvidia + model: nvidia/nemotron-3-super-120b-a12b + temperature: 0.7 + max_tokens: 8192 + +agents: + root: + model: nemotron + description: Assistant using NVIDIA NIM + instruction: You are a helpful assistant. +``` + +## Available Models + +NVIDIA NIM hosts Nemotron alongside many other open models (Llama, Qwen, +DeepSeek, Mistral, ...). Check the [NVIDIA API catalog](https://build.nvidia.com/) +for the current model list. + +| Model | Description | +| -------------------------------------------- | ---------------------------------- | +| `nvidia/nemotron-3-super-120b-a12b` | Nemotron 3 Super, reasoning + tool calling | +| `nvidia/nemotron-3-nano-30b-a3b` | Nemotron 3 Nano, smaller/faster | +| `meta/llama-3.3-70b-instruct` | Llama 3.3 70B instruction-tuned | +| `qwen/qwen3-coder-480b-a35b-instruct` | Qwen3 Coder, code-focused | + +## On-Prem / Self-Hosted NIM + +For self-hosted NIM deployments, point `base_url` at your own endpoint instead +of the hosted `integrate.api.nvidia.com` API: + +```yaml +models: + local_nim: + provider: nvidia + model: meta/llama-3.3-70b-instruct + base_url: http://localhost:8000/v1 +``` + +## How It Works + +NVIDIA is implemented as a built-in alias in docker-agent: + +- **API Type:** OpenAI-compatible (`openai_chatcompletions`) +- **Base URL:** `https://integrate.api.nvidia.com/v1` +- **Token Variable:** `NVIDIA_API_KEY` + +Because NIM fronts open-weight models whose chat templates often only accept +a single system message, docker-agent coalesces the agent instruction and any +toolset instructions into one leading system message before sending the +request. + +## Example: Code Assistant + +```yaml +agents: + coder: + model: nvidia/nvidia/nemotron-3-super-120b-a12b + description: Code assistant using Nemotron + instruction: | + You are an expert programmer using NVIDIA Nemotron. + Write clean, well-documented code. + Follow best practices for the language being used. + toolsets: + - type: filesystem + - type: shell + - type: think +``` diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/openai/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/openai/index.md index 2ef18bbbddd..70f64b81e8d 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/openai/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/openai/index.md @@ -3,6 +3,7 @@ title: "OpenAI" description: "Use GPT-4o, GPT-5, GPT-5-mini, and other OpenAI models with docker-agent." keywords: docker agent, ai agents, model providers, llm, openai weight: 200 +canonical: https://docs.docker.com/ai/docker-agent/providers/openai/ --- _Use GPT-4o, GPT-5, GPT-5-mini, and other OpenAI models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/opencode-go/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/opencode-go/index.md index 8c6f2bb0bca..fa6abe5de18 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/opencode-go/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/opencode-go/index.md @@ -3,6 +3,7 @@ title: "OpenCode Go" description: "Use OpenCode Go models with docker-agent." keywords: docker agent, ai agents, model providers, llm, opencode go weight: 210 +canonical: https://docs.docker.com/ai/docker-agent/providers/opencode-go/ --- _Use OpenCode Go models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/opencode-zen/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/opencode-zen/index.md index 545bc3e2c42..ab997252cad 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/opencode-zen/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/opencode-zen/index.md @@ -3,6 +3,7 @@ title: "OpenCode Zen" description: "Use OpenCode Zen models with docker-agent." keywords: docker agent, ai agents, model providers, llm, opencode zen weight: 220 +canonical: https://docs.docker.com/ai/docker-agent/providers/opencode-zen/ --- _Use OpenCode Zen models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/openrouter/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/openrouter/index.md index d7664036e45..19dbca4d4ab 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/openrouter/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/openrouter/index.md @@ -3,6 +3,7 @@ title: "OpenRouter" description: "Use OpenRouter models with docker-agent." keywords: docker agent, ai agents, model providers, llm, openrouter weight: 230 +canonical: https://docs.docker.com/ai/docker-agent/providers/openrouter/ --- _Use OpenRouter models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/overview/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/overview/index.md index c3b09ee5d2e..5a7f2f1b7af 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/overview/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/overview/index.md @@ -4,6 +4,7 @@ description: "docker-agent supports multiple AI model providers. Choose the righ keywords: docker agent, ai agents, model providers, llm linkTitle: "Overview" weight: 10 +canonical: https://docs.docker.com/ai/docker-agent/providers/overview/ aliases: - /ai/docker-agent/model-providers/ --- @@ -40,6 +41,7 @@ docker-agent also includes built-in aliases for these providers: | Mistral | `mistral` | `MISTRAL_API_KEY` | | xAI (Grok) | `xai` | `XAI_API_KEY` | | Nebius | `nebius` | `NEBIUS_API_KEY` | +| NVIDIA NIM | `nvidia` | `NVIDIA_API_KEY` | | MiniMax | `minimax` | `MINIMAX_API_KEY` | | Baseten | `baseten` | `BASETEN_API_KEY` | | OVHcloud | `ovhcloud` | `OVH_AI_ENDPOINTS_ACCESS_TOKEN` | diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/ovhcloud/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/ovhcloud/index.md index bba906bc88b..c58cc295c32 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/ovhcloud/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/ovhcloud/index.md @@ -3,6 +3,7 @@ title: "OVHcloud" description: "Use OVHcloud AI Endpoints models with docker-agent." keywords: docker agent, ai agents, model providers, llm, ovhcloud weight: 240 +canonical: https://docs.docker.com/ai/docker-agent/providers/ovhcloud/ --- _Use OVHcloud AI Endpoints models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/together/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/together/index.md index 9cf541f2164..2bf83457b67 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/together/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/together/index.md @@ -3,6 +3,7 @@ title: "Together AI" description: "Use Together AI models with docker-agent." keywords: docker agent, ai agents, model providers, llm, together ai weight: 250 +canonical: https://docs.docker.com/ai/docker-agent/providers/together/ --- _Use Together AI models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/vercel/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/vercel/index.md index 8db5d1163ed..197610ec3fc 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/vercel/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/vercel/index.md @@ -3,6 +3,7 @@ title: "Vercel AI Gateway" description: "Use Vercel AI Gateway models with docker-agent." keywords: docker agent, ai agents, model providers, llm, vercel ai gateway weight: 260 +canonical: https://docs.docker.com/ai/docker-agent/providers/vercel/ --- _Use Vercel AI Gateway models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/providers/xai/index.md b/_vendor/github.com/docker/docker-agent/docs/providers/xai/index.md index efa4e15591b..0e9fa089a7c 100644 --- a/_vendor/github.com/docker/docker-agent/docs/providers/xai/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/providers/xai/index.md @@ -3,6 +3,7 @@ title: "xAI (Grok)" description: "Use xAI's Grok models with docker-agent." keywords: docker agent, ai agents, model providers, llm, xai (grok) weight: 270 +canonical: https://docs.docker.com/ai/docker-agent/providers/xai/ --- _Use xAI's Grok models with docker-agent._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/a2a/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/a2a/index.md index 3d26bfbf8d2..9e405ab4945 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/a2a/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/a2a/index.md @@ -4,6 +4,7 @@ description: "Connect to remote agents via the Agent-to-Agent protocol." keywords: docker agent, ai agents, tools, toolsets, a2a tool linkTitle: "A2A" weight: 60 +canonical: https://docs.docker.com/ai/docker-agent/tools/a2a/ --- _Connect to remote agents via the Agent-to-Agent protocol._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/api/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/api/index.md index ba3a2bcb759..73e802bd5b8 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/api/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/api/index.md @@ -4,6 +4,7 @@ description: "Create custom tools that call HTTP APIs." keywords: docker agent, ai agents, tools, toolsets, api tool linkTitle: "API" weight: 240 +canonical: https://docs.docker.com/ai/docker-agent/tools/api/ --- _Create custom tools that call HTTP APIs._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/background-agents/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/background-agents/index.md index 93ed5d021cc..ccdb66f2d1f 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/background-agents/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/background-agents/index.md @@ -4,6 +4,7 @@ description: "Dispatch work to sub-agents concurrently and collect results async keywords: docker agent, ai agents, tools, toolsets, background agents tool linkTitle: "Background Agents" weight: 90 +canonical: https://docs.docker.com/ai/docker-agent/tools/background-agents/ --- _Dispatch work to sub-agents concurrently and collect results asynchronously._ @@ -75,6 +76,8 @@ agents: > > Use `background_agents` when your orchestrator needs to fan out work to multiple specialists in parallel — for example, researching several topics simultaneously or running independent code analyses side by side. +In the TUI, each background task's token usage is accounted for live: the sidebar's Agents panel shows the sub-agent's context usage percentage on its roster row, the Agent Inspector shows its exact token counts, and the task's cost joins the session total. + ## Using Harness Sub-Agents Background agents work equally well with [harness-backed sub-agents](../../features/harnesses/index.md) — sub-agents driven by external coding CLIs such as Claude Code or Codex. This lets you dispatch multiple independent coding tasks in parallel: diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/background-jobs/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/background-jobs/index.md new file mode 100644 index 00000000000..158d4b1473e --- /dev/null +++ b/_vendor/github.com/docker/docker-agent/docs/tools/background-jobs/index.md @@ -0,0 +1,89 @@ +--- +title: "Background Jobs Tool" +description: "Run and manage long-running shell commands." +keywords: docker agent, ai agents, tools, toolsets, background jobs, shell +linkTitle: "Background Jobs" +weight: 21 +canonical: https://docs.docker.com/ai/docker-agent/tools/background-jobs/ +--- + +_Run and manage long-running shell commands._ + +## Overview + +The `background_jobs` toolset starts shell commands that should keep running while the agent continues with other work, such as local servers, file watchers, long builds, or test suites. It returns a job ID immediately, captures combined stdout/stderr up to 10 MB per job, and terminates all running jobs when the agent session ends. + +Use the [`shell`](../shell/index.md) toolset for short synchronous commands. Add both toolsets when an agent needs both synchronous commands and long-running processes. + +## Configuration + +```yaml +toolsets: + - type: shell + - type: background_jobs +``` + +### Options + +| Property | Type | Description | +| -------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `env` | object | Environment variables to set for all background job commands. | +| `recall` | boolean | Let `run_background_job` expose a `recall` parameter so jobs can steer the agent when they finish (see [Background job recall](#background-job-recall)). Default `false`. | + +### Custom Environment Variables + +```yaml +toolsets: + - type: background_jobs + env: + MY_VAR: "value" + PATH: "${env.PATH}:/custom/bin" +``` + +### Background job recall + +Set `recall: true` to let the `run_background_job` tool expose a `recall` boolean parameter: + +```yaml +toolsets: + - type: background_jobs + recall: true +``` + +When the agent starts a background job with `recall: true`, docker-agent sends a steering message back into the running agent loop after the job finishes. The message contains a short completion sentence and the job output, so the agent can react without polling `view_background_job`. + +Use recall for finite background work where completion matters (for example, a long build or test suite). Avoid it for servers and watchers that are expected to run until stopped. See [`examples/shell_recall.yaml`](https://github.com/docker/docker-agent/blob/main/examples/shell_recall.yaml) for a complete configuration. + +## Available Tools + +The background jobs toolset exposes five tools: + +| Tool Name | Description | +| ---------------------- | ---------------------------------------------------------------------------------------------- | +| `run_background_job` | Start a command asynchronously and return a job ID immediately. Use for servers/watchers/etc. | +| `list_background_jobs` | List all background jobs with their status, runtime, and metadata. | +| `view_background_job` | View the buffered output and status of a specific background job by ID. | +| `stop_background_job` | Stop a running background job. Child processes are terminated too. | +| `wait_background_job` | Block until a job finishes and return its exit code and output. Safe on already-finished jobs. | + +### `run_background_job` parameters + +| Parameter | Type | Required | Description | +| --------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| `cmd` | string | ✓ | The shell command to execute in the background. | +| `cwd` | string | ✗ | Working directory to run the command in (default: `.`). | +| `recall` | boolean | ✗ | Only available when the `background_jobs` toolset has `recall: true`. When true, send a steering message with the job output when it finishes. | + +`view_background_job` and `stop_background_job` each take a single required `job_id` string returned by `run_background_job` or `list_background_jobs`. + +### `wait_background_job` parameters + +| Parameter | Type | Required | Description | +| --------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | +| `job_id` | string | ✓ | Job ID returned by `run_background_job` or `list_background_jobs`. | +| `timeout` | integer | ✗ | Maximum seconds to wait (default: `60`). If the job is still running when the limit fires, the tool returns the current output with a notice and the job continues in the background. | + +> [!WARNING] +> **Safety** +> +> Background jobs run shell commands with the same access as the agent process. Stop servers and watchers when they are no longer needed, and use [Sandbox Mode](../../configuration/sandbox/index.md) for additional isolation. diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/fetch/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/fetch/index.md index dcc8b53377d..fa793a54ac0 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/fetch/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/fetch/index.md @@ -4,6 +4,7 @@ description: "Read content from HTTP/HTTPS URLs." keywords: docker agent, ai agents, tools, toolsets, fetch tool linkTitle: "Fetch" weight: 50 +canonical: https://docs.docker.com/ai/docker-agent/tools/fetch/ --- _Read content from HTTP/HTTPS URLs._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/filesystem/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/filesystem/index.md index c0e372879ac..8f0d49fe464 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/filesystem/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/filesystem/index.md @@ -4,6 +4,7 @@ description: "Read, write, list, search, and navigate files and directories." keywords: docker agent, ai agents, tools, toolsets, filesystem tool linkTitle: "Filesystem" weight: 10 +canonical: https://docs.docker.com/ai/docker-agent/tools/filesystem/ --- _Read, write, list, search, and navigate files and directories._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/handoff/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/handoff/index.md index c3922c15c4c..4375be03daa 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/handoff/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/handoff/index.md @@ -4,6 +4,7 @@ description: "Hand off the active conversation to another local agent defined in keywords: docker agent, ai agents, tools, toolsets, handoff tool linkTitle: "Handoff" weight: 70 +canonical: https://docs.docker.com/ai/docker-agent/tools/handoff/ --- _Hand off the active conversation to another local agent defined in the same config._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/lsp/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/lsp/index.md index 84329f24a6d..0cb6216fd17 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/lsp/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/lsp/index.md @@ -4,6 +4,7 @@ description: "Connect to Language Server Protocol servers for code intelligence. keywords: docker agent, ai agents, tools, toolsets, lsp tool linkTitle: "LSP" weight: 220 +canonical: https://docs.docker.com/ai/docker-agent/tools/lsp/ --- _Connect to Language Server Protocol servers for code intelligence._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/mcp-catalog/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/mcp-catalog/index.md index 28d7c0aec58..b2fbdf3d48d 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/mcp-catalog/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/mcp-catalog/index.md @@ -4,6 +4,7 @@ description: "Let the agent discover and activate remote MCP servers from the Do keywords: docker agent, ai agents, tools, toolsets, mcp catalog tool linkTitle: "MCP Catalog" weight: 120 +canonical: https://docs.docker.com/ai/docker-agent/tools/mcp-catalog/ --- _Let the agent discover and activate remote MCP servers from the Docker MCP Catalog on demand._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/mcp/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/mcp/index.md index dbc845b5593..510bc83112b 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/mcp/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/mcp/index.md @@ -4,6 +4,7 @@ description: "Extend agents with external tools via the Model Context Protocol." keywords: docker agent, ai agents, tools, toolsets, mcp tool linkTitle: "MCP" weight: 130 +canonical: https://docs.docker.com/ai/docker-agent/tools/mcp/ aliases: - /ai/docker-agent/integrations/mcp/ --- diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/memory/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/memory/index.md index 1bfb93fbd10..1e5671a304e 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/memory/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/memory/index.md @@ -4,6 +4,7 @@ description: "Persistent key-value storage backed by SQLite for cross-session re keywords: docker agent, ai agents, tools, toolsets, memory tool linkTitle: "Memory" weight: 100 +canonical: https://docs.docker.com/ai/docker-agent/tools/memory/ --- _Persistent key-value storage backed by SQLite for cross-session recall._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/model-picker/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/model-picker/index.md index 9ec4e55a6b1..0c0d4613021 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/model-picker/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/model-picker/index.md @@ -4,6 +4,7 @@ description: "Let the agent pick between several models per turn." keywords: docker agent, ai agents, tools, toolsets, model picker tool linkTitle: "Model Picker" weight: 200 +canonical: https://docs.docker.com/ai/docker-agent/tools/model-picker/ --- _Let the agent pick between several models per turn._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/open-url/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/open-url/index.md index 93c1ab0290a..bb07b93970f 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/open-url/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/open-url/index.md @@ -4,6 +4,7 @@ description: "Open a fixed URL in the user's default browser." keywords: docker agent, ai agents, tools, toolsets, open url tool linkTitle: "Open URL" weight: 40 +canonical: https://docs.docker.com/ai/docker-agent/tools/open-url/ --- _Open a fixed URL in the user's default browser._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/openapi/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/openapi/index.md index 34dd64a6430..56c0c30561c 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/openapi/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/openapi/index.md @@ -4,6 +4,7 @@ description: "Automatically generate tools from an OpenAPI specification." keywords: docker agent, ai agents, tools, toolsets, openapi tool linkTitle: "OpenAPI" weight: 230 +canonical: https://docs.docker.com/ai/docker-agent/tools/openapi/ --- _Automatically generate tools from an OpenAPI specification._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/plan/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/plan/index.md index be388c96c79..e1d15c8ce10 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/plan/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/plan/index.md @@ -4,6 +4,7 @@ description: "Shared persistent scratchpad for multi-agent collaboration." keywords: docker agent, ai agents, tools, toolsets, plan tool linkTitle: "Plan" weight: 150 +canonical: https://docs.docker.com/ai/docker-agent/tools/plan/ --- _Shared persistent scratchpad for multi-agent collaboration._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/rag/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/rag/index.md index 8d86c1ae018..f47dd070c61 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/rag/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/rag/index.md @@ -4,6 +4,7 @@ description: "Give your agents access to document knowledge bases with backgroun keywords: docker agent, ai agents, tools, toolsets, rag tool linkTitle: "RAG" weight: 110 +canonical: https://docs.docker.com/ai/docker-agent/tools/rag/ aliases: - /ai/docker-agent/rag/ --- diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/script/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/script/index.md index 89f7edc9fb2..b4f91270551 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/script/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/script/index.md @@ -4,6 +4,7 @@ description: "Define custom shell scripts as named tools with typed parameters." keywords: docker agent, ai agents, tools, toolsets, script tool linkTitle: "Script" weight: 30 +canonical: https://docs.docker.com/ai/docker-agent/tools/script/ --- _Define custom shell scripts as named tools with typed parameters._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/session_context/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/session_context/index.md index 0336972d6c5..9f241bb551d 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/session_context/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/session_context/index.md @@ -4,6 +4,7 @@ description: "Reference a previous session as context in the current one." keywords: docker agent, ai agents, tools, toolsets, session context tool linkTitle: "Session Context" weight: 210 +canonical: https://docs.docker.com/ai/docker-agent/tools/session_context/ --- _Reference a previous session as context, without manual export/import._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/session_plan/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/session_plan/index.md index 450b607d330..e39bfd60f9a 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/session_plan/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/session_plan/index.md @@ -4,6 +4,7 @@ description: "Per-session plan tracker for the draft, review, execute workflow." keywords: docker agent, ai agents, tools, toolsets, session plan tool linkTitle: "Session Plan" weight: 160 +canonical: https://docs.docker.com/ai/docker-agent/tools/session_plan/ --- _Per-session plan tracker for the "draft, review, execute" workflow._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/shell/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/shell/index.md index cee6d149706..2921f629c10 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/shell/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/shell/index.md @@ -4,15 +4,16 @@ description: "Execute arbitrary shell commands in the user's environment." keywords: docker agent, ai agents, tools, toolsets, shell tool linkTitle: "Shell" weight: 20 +canonical: https://docs.docker.com/ai/docker-agent/tools/shell/ --- _Execute arbitrary shell commands in the user's environment._ ## Overview -The shell tool allows agents to execute arbitrary shell commands. This is one of the most powerful tools — it lets agents run builds, install dependencies, query APIs, and interact with the system. Each call runs in a fresh, isolated shell session — no state persists between calls. +The shell tool allows agents to execute arbitrary shell commands synchronously. This is one of the most powerful tools — it lets agents run builds, install dependencies, query APIs, and interact with the system. Each call runs in a fresh, isolated shell session — no state persists between calls. -Commands have a default 30-second timeout and require user confirmation unless `--yolo` is used. +Commands have a default 30-second timeout and require user confirmation unless `--yolo` is used. For servers, watchers, and other long-running commands, add the [`background_jobs`](../background-jobs/index.md) toolset alongside `shell`. ## Configuration @@ -83,22 +84,16 @@ Notes and limitations: - Interactive UI only. In headless / non-interactive runs the prompt is declined automatically and `sudo` fails as before. - Only a bare `sudo ...` invocation in a POSIX shell (`sh`, `bash`, `zsh`, ...) is handled. `sudo` called by absolute path (`/usr/bin/sudo`), via `env sudo`, from inside a nested script, or under a non-POSIX shell (e.g. `fish`) is not intercepted and behaves as before. - Caching is `sudo`'s own. Because each shell tool call runs in a fresh shell with no controlling terminal, `sudo`'s credential cache does not persist across separate tool calls: you are prompted once per shell command that uses `sudo`. Within a single command, multiple `sudo` calls (e.g. `sudo a && sudo b`) usually share one prompt, subject to `sudo`'s own timestamp configuration. -- The prompt must be answered within the command's timeout; raise the `timeout` parameter for `sudo` commands that may wait on input. Background jobs (`run_background_job`) are wired too, but their prompt only works while the originating turn is still active. +- The prompt must be answered within the command's timeout; raise the `timeout` parameter for `sudo` commands that may wait on input. - Prompts are serialized: if a single command runs two `sudo` calls in parallel (e.g. `sudo a & sudo b`), the second waits for the first prompt to be answered rather than opening two dialogs at once. ## Available Tools -The shell toolset exposes five tools: +The shell toolset exposes one tool: -| Tool Name | Description | -| ---------------------- | ---------------------------------------------------------------------------------------------- | -| `shell` | Run a command synchronously and return its combined output when it finishes. | -| `run_background_job` | Start a command asynchronously and return a job ID immediately. Use for servers/watchers/etc. | -| `list_background_jobs` | List all background jobs with their status, runtime, and metadata. | -| `view_background_job` | View the buffered output and status of a specific background job by ID. | -| `stop_background_job` | Stop a running background job. Child processes are terminated too. | - -Background job output is captured up to 10 MB per job. All background jobs are automatically terminated when the agent session ends. +| Tool Name | Description | +| --------- | ---------------------------------------------------------------------------- | +| `shell` | Run a command synchronously and return its combined output when it finishes. | ### `shell` parameters @@ -108,15 +103,6 @@ Background job output is captured up to 10 MB per job. All background jobs are a | `cwd` | string | ✗ | Working directory to run the command in (default: `.`). | | `timeout` | integer | ✗ | Per-call execution timeout in seconds (default: `30`). | -### `run_background_job` parameters - -| Parameter | Type | Required | Description | -| --------- | ------ | -------- | ----------------------------------------------------------------------- | -| `cmd` | string | ✓ | The shell command to execute in the background. | -| `cwd` | string | ✗ | Working directory to run the command in (default: `.`). | - -`view_background_job` and `stop_background_job` each take a single required `job_id` string returned by `run_background_job` or `list_background_jobs`. - > [!WARNING] > **Safety** > diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/tasks/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/tasks/index.md index c6cf8db5dda..9d399f96958 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/tasks/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/tasks/index.md @@ -4,6 +4,7 @@ description: "Persistent task database with priorities and dependencies, shared keywords: docker agent, ai agents, tools, toolsets, tasks tool linkTitle: "Tasks" weight: 180 +canonical: https://docs.docker.com/ai/docker-agent/tools/tasks/ --- _Persistent task database with priorities and dependencies, shared across sessions._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/think/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/think/index.md index 033b2020d1c..24873fcacfe 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/think/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/think/index.md @@ -4,6 +4,7 @@ description: "Step-by-step reasoning scratchpad for planning and decision-making keywords: docker agent, ai agents, tools, toolsets, think tool linkTitle: "Think" weight: 140 +canonical: https://docs.docker.com/ai/docker-agent/tools/think/ --- _Step-by-step reasoning scratchpad for planning and decision-making._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/todo/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/todo/index.md index 264d1657de0..7f2154379cc 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/todo/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/todo/index.md @@ -4,6 +4,7 @@ description: "Task list management for complex multi-step workflows." keywords: docker agent, ai agents, tools, toolsets, todo tool linkTitle: "Todo" weight: 170 +canonical: https://docs.docker.com/ai/docker-agent/tools/todo/ --- _Task list management for complex multi-step workflows._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/transfer-task/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/transfer-task/index.md index 66bdd4e0eb8..ebbad527461 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/transfer-task/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/transfer-task/index.md @@ -4,6 +4,7 @@ description: "Delegate tasks to sub-agents in multi-agent setups." keywords: docker agent, ai agents, tools, toolsets, transfer task tool linkTitle: "Transfer Task" weight: 80 +canonical: https://docs.docker.com/ai/docker-agent/tools/transfer-task/ --- _Delegate tasks to sub-agents in multi-agent setups._ diff --git a/_vendor/github.com/docker/docker-agent/docs/tools/user-prompt/index.md b/_vendor/github.com/docker/docker-agent/docs/tools/user-prompt/index.md index 33f950cb5b5..739892c9375 100644 --- a/_vendor/github.com/docker/docker-agent/docs/tools/user-prompt/index.md +++ b/_vendor/github.com/docker/docker-agent/docs/tools/user-prompt/index.md @@ -4,6 +4,7 @@ description: "Ask the user questions and collect interactive input during agent keywords: docker agent, ai agents, tools, toolsets, user prompt tool linkTitle: "User Prompt" weight: 190 +canonical: https://docs.docker.com/ai/docker-agent/tools/user-prompt/ --- _Ask the user questions and collect interactive input during agent execution._ diff --git a/_vendor/modules.txt b/_vendor/modules.txt index 5ab27750d8f..456b2d36d23 100644 --- a/_vendor/modules.txt +++ b/_vendor/modules.txt @@ -4,4 +4,4 @@ # github.com/docker/cli v29.6.1+incompatible # github.com/docker/compose/v5 v5.3.0 # github.com/docker/model-runner v1.1.36 -# github.com/docker/docker-agent v1.96.0 +# github.com/docker/docker-agent v1.99.0 diff --git a/go.mod b/go.mod index 9df5b9ab3cf..5e1be296179 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/docker/buildx v0.35.0 github.com/docker/cli v29.6.1+incompatible github.com/docker/compose/v5 v5.3.0 - github.com/docker/docker-agent v1.96.0 + github.com/docker/docker-agent v1.99.0 github.com/docker/model-runner v1.1.36 github.com/moby/buildkit v0.31.0 github.com/moby/moby/api v1.55.0 diff --git a/go.sum b/go.sum index f3ac2b7f9d2..f71737d0bc2 100644 --- a/go.sum +++ b/go.sum @@ -128,6 +128,8 @@ github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaft github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-agent v1.96.0 h1:wt018652ejWtHpMOdhvjwIxaeI46rc6o8snqb9QsmiI= github.com/docker/docker-agent v1.96.0/go.mod h1:PJlLIntWPY0KPepCIeR4+WRo2fmQnmnONYBmb/ULorM= +github.com/docker/docker-agent v1.99.0 h1:VkU5S8TkpEyDuotU9nwkeZCsRJR30d8fHuolTX6NqJ4= +github.com/docker/docker-agent v1.99.0/go.mod h1:S2B28tEL1VNZIMIyZv8MKn5JWFZHEt0sQW80ruK/u1U= github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8= github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo= github.com/docker/docker-credential-helpers v0.9.5 h1:EFNN8DHvaiK8zVqFA2DT6BjXE0GzfLOZ38ggPTKePkY=