Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
f7b6878
docs: restructure factories documentation
rachaelrenk Sep 15, 2026
ec1997c
docs: fix factories restructure review findings
rachaelrenk Sep 15, 2026
b6453a3
docs: restore legacy CLI sidebar group
rachaelrenk Sep 15, 2026
2901556
docs: fix factory navigation checks
rachaelrenk Sep 15, 2026
ce60a89
docs: fix factories review checks
rachaelrenk Sep 15, 2026
ef10700
docs: complete factories GA phase 1
rachaelrenk Sep 15, 2026
5988485
docs: refine factories transition copy
rachaelrenk Sep 15, 2026
be1f580
docs: combine factories transition notice
rachaelrenk Sep 15, 2026
6bccbf6
docs: clarify factories and product overviews
rachaelrenk Sep 15, 2026
dd01342
docs: address factories restructure review
rachaelrenk Sep 15, 2026
3782f55
ci: avoid oversized agent review output
rachaelrenk Sep 16, 2026
5b5117d
ci: harden agent docs review handoff
rachaelrenk Sep 16, 2026
48eba7a
ci: capture agent docs review output to file
rachaelrenk Sep 16, 2026
2681cd9
docs: reconcile factories GA restructure with main
rachaelrenk Sep 16, 2026
faaf2cd
docs: remove redirect chains and orphaned files
rachaelrenk Sep 16, 2026
bdbaf21
ci: remove orphaned review signal files
rachaelrenk Sep 16, 2026
69a0542
docs: address final factories review findings
rachaelrenk Sep 16, 2026
8adc679
docs: address agent review follow-up
rachaelrenk Sep 16, 2026
5695be5
ci: pin and verify agent review CLI
rachaelrenk Sep 16, 2026
8397fca
docs: retarget self-hosted worker routing links
rachaelrenk Sep 16, 2026
e79711f
docs: refine Warp products introduction
rachaelrenk Sep 16, 2026
dea36bb
docs: consolidate factories sidebar group
rachaelrenk Sep 16, 2026
809ab2c
Update documentation for factory API and managed self-hosting
rachaelrenk Sep 16, 2026
cf148f0
docs: resolve self-hosting review feedback
rachaelrenk Sep 16, 2026
4ebc0e9
docs: refine product and transition copy
rachaelrenk Sep 17, 2026
30689ba
docs: refine factories and platform navigation
rachaelrenk Sep 17, 2026
6f844bc
docs: remove empty API troubleshooting page
rachaelrenk Sep 17, 2026
a4a17e3
fix: parse review findings with brace syntax
rachaelrenk Sep 17, 2026
9745f3a
docs: organize sidebar entry points
rachaelrenk Sep 17, 2026
3fa3e6a
docs: resolve terminology and redirect review
rachaelrenk Sep 17, 2026
74ede32
docs: simplify sidebar overview sections
rachaelrenk Sep 17, 2026
704ad97
docs: address sidebar navigation nits
rachaelrenk Sep 17, 2026
f2b1441
docs: clarify factory self-hosting guidance
rachaelrenk Sep 18, 2026
aeb03b7
docs: reconcile factories restructure with main
rachaelrenk Sep 18, 2026
81b41a2
docs: clarify legacy Oz workflow transition
rachaelrenk Sep 18, 2026
9f0253e
docs: align transition guide terminology
rachaelrenk Sep 18, 2026
44c8342
docs: unify platform API guidance
rachaelrenk Sep 18, 2026
e0e043c
docs: clarify transition review metadata
rachaelrenk Sep 18, 2026
4ac79e1
docs: tokenize API transition references
rachaelrenk Sep 18, 2026
fc2c1d6
docs: refine factories navigation and transition copy
rachaelrenk Sep 18, 2026
960f267
docs: audit self-hosting redirect and review CLI
rachaelrenk Sep 19, 2026
3d1bc76
docs: collapse managed self-hosting navigation
rachaelrenk Sep 19, 2026
ef2d3db
docs: reorder measure and improve navigation
rachaelrenk Sep 19, 2026
4edbe89
docs: clarify factory definition
rachaelrenk Sep 19, 2026
fa760ca
docs: condense factories quickstart
rachaelrenk Sep 20, 2026
a6a30e8
docs: remove stale LLM reference set
rachaelrenk Sep 20, 2026
98cc0cf
docs: address API documentation review
rachaelrenk Sep 21, 2026
dae5d4d
Apply suggestion from @rachaelrenk
rachaelrenk Sep 21, 2026
3cafb99
Apply suggestion from @rachaelrenk
rachaelrenk Sep 21, 2026
55bff5d
Merge branch 'main' into rrenk/grow-6127-factories-ga
rachaelrenk Sep 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .agents/references/terminology.md
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,6 @@ Not every "Oz" in the docs is stale. These are deliberate and correct until
- **The `oz` binary** and every `oz <command>` invocation. Commands inside code
fences are never rewritten. `{VARS.WARP_AGENT_CLI}` renders "Oz CLI".
- **`oz.warp.dev`** and the Oz v1 web app. `{VARS.WEB_APP}`, `{VARS.WEB_APP_URL}`.
- **`{VARS.API_SDK_NAME}`**, which renders "Oz API & SDK".
- **`oz-agent-worker`, `oz-agent-action`, `oz-skills`** — repository and package
names, not product names. These may never change.
- **The `@oz-agent` GitHub handle.** Handles are strings the product owns;
Expand All @@ -262,7 +261,8 @@ Not every "Oz" in the docs is stale. These are deliberate and correct until

## Platform terms

- **Agent API** — The HTTP API for triggering and inspecting Platform runs programmatically.
- **Warp Platform API** — The HTTP API for sending work to factories and triggering and inspecting cloud agent runs programmatically.
*Usage note:* Use `{VARS.WARP_PLATFORM_API}` in body prose and `{{WARP_PLATFORM_API}}` in frontmatter.

- **Auth** — The agent settings field for choosing or creating the credential (a team-owned secret) a harness uses to authenticate with its provider, matched to that harness's supported credential types (Anthropic keys for Claude Code, an OpenAI key for Codex).
*Usage note:* Capitalize as **Auth** when referring to the settings field name.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,20 @@ def test_all_review_findings_must_supply_actionable_details(self):
self.assertIn("critical, important, suggestion, or nit", self.workflow)
self.assertIn("file and line or quoted text", self.workflow)

def test_review_signal_is_passed_through_a_file(self):
self.assertIn('oz "${args[@]}" > /tmp/agent-output.txt', self.workflow)
self.assertIn("--agent-output /tmp/agent-output.txt", self.workflow)
self.assertNotIn(".agent-docs-review-signal.txt", self.workflow)
self.assertNotIn(
"AGENT_OUTPUT: ${{ steps.oz-review.outputs.agent_output }}", self.workflow
)

def test_review_uses_a_signed_oz_package(self):
self.assertIn("0913165C78D5B7A41B42AC657FF7AB39D60F803F", self.workflow)
self.assertIn("signed-by=/etc/apt/keyrings/warpdotdev.gpg", self.workflow)
self.assertIn("sudo apt-get install -y oz-stable", self.workflow)
self.assertIn("oz --version", self.workflow)


if __name__ == "__main__":
unittest.main()
12 changes: 12 additions & 0 deletions .agents/skills/doc_quality_policy/test_verify_review_signal.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,18 @@ def test_escaped_action_output_signal_passes(self):
problems = vrs.check_review_signal("o/r", "1", "sha1", output)
self.assertEqual(problems, [])

def test_signal_with_braces_in_an_actionable_finding_passes(self):
output = (
'[SIGNAL:pr-review] {"pr":"1","head_sha":"sha1",'
'"reviewer_login":"github-actions[bot]","verdict":"Approve with nits",'
'"critical":0,"important":0,"suggestions":1,"nits":0,'
'"actionable_findings":["`factory-api.mdx:20` — Check '
'`POST /factory/{uid}/runs`."]}'
)
with mock.patch.object(vrs.cpc, "_fetch_reviews", return_value=[{**GOOD_REVIEW, "body": output}]):
problems = vrs.check_review_signal("o/r", "1", "sha1", output)
self.assertEqual(problems, [])

def test_distinct_signals_fail(self):
different_signal = GOOD_OUTPUT.replace('"Approve"', '"Approve with nits"')
output = f"{GOOD_OUTPUT}\n\n{different_signal}"
Expand Down
32 changes: 15 additions & 17 deletions .agents/skills/doc_quality_policy/verify_review_signal.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import argparse
import importlib.util
import json
import re
import sys
from pathlib import Path
from typing import Dict, List, Optional, Tuple
Expand All @@ -16,7 +15,7 @@
sys.modules[_spec.name] = cpc
_spec.loader.exec_module(cpc)

_SIGNAL_RE = re.compile(r"\[SIGNAL:pr-review\]\s*(\{.*?\})", re.DOTALL)
_SIGNAL_PREFIX = "[SIGNAL:pr-review]"
_PASSING_VERDICTS = {"approve", "approve with nits", "approve_with_nits"}


Expand All @@ -25,25 +24,24 @@ def _parse_signal(
pr_number: Optional[str] = None,
head_sha: Optional[str] = None,
) -> Tuple[Optional[Dict[str, object]], List[str]]:
matches = _SIGNAL_RE.findall(text)
if not matches:
occurrences = text.count(_SIGNAL_PREFIX)
if not occurrences:
return None, ["expected exactly one [SIGNAL:pr-review] record, found 0"]

unique_signals = {}
for match in matches:
try:
signal = json.loads(match)
except json.JSONDecodeError as original_error:
offset = 0
while True:
marker = text.find(_SIGNAL_PREFIX, offset)
if marker == -1:
break
offset = marker + len(_SIGNAL_PREFIX)
candidate = text[offset:].lstrip()
signal = None
for payload in (candidate, candidate.replace('\\"', '"')):
try:
# The GitHub Action can serialize its text output once more,
# leaving an otherwise valid object in the form
# {\"key\":\"value\"}. Decode that wrapper only after direct
# JSON parsing has failed.
signal = json.loads(match.replace('\\"', '"'))
signal, _ = json.JSONDecoder().raw_decode(payload)
break
except json.JSONDecodeError:
# Agent output includes the skill's marker examples and prior
# review transcripts. Ignore malformed candidates and require
# a valid, current-head record below.
continue
if not isinstance(signal, dict):
continue
Expand All @@ -57,7 +55,7 @@ def _parse_signal(
if len(signals) != 1:
return None, [
"expected one valid [SIGNAL:pr-review] record for the current PR head, "
f"found {len(signals)} across {len(matches)} occurrences"
f"found {len(signals)} across {occurrences} occurrences"
]
return signals[0], []

Expand Down
3 changes: 2 additions & 1 deletion .agents/skills/style_lint/style_lint.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,8 @@
("oz.warp.dev", "WEB_APP_URL", "{VARS.WEB_APP_URL} in prose or {{WEB_APP_URL}} in frontmatter"),
("Oz dashboard", "DASHBOARD", "{VARS.DASHBOARD} in prose or {{DASHBOARD}} in frontmatter"),
("Oz run", "PLATFORM_RUN", "{VARS.PLATFORM_RUN} in prose or {{PLATFORM_RUN}} in frontmatter"),
("Oz API & SDK", "API_SDK_NAME", "{VARS.API_SDK_NAME} in prose or {{API_SDK_NAME}} in frontmatter"),
("Oz API & SDK", "WARP_PLATFORM_API", "{VARS.WARP_PLATFORM_API} in prose or {{WARP_PLATFORM_API}} in frontmatter"),
("Warp Platform API", "WARP_PLATFORM_API", "{VARS.WARP_PLATFORM_API} in prose or {{WARP_PLATFORM_API}} in frontmatter"),
("Oz Platform", "WARP_AUTOMATION_PLATFORM", "{VARS.WARP_AUTOMATION_PLATFORM} in prose or {{WARP_AUTOMATION_PLATFORM}} in frontmatter"),
("Automation Platform", "WARP_AUTOMATION_PLATFORM", "{VARS.WARP_AUTOMATION_PLATFORM} in prose or {{WARP_AUTOMATION_PLATFORM}} in frontmatter"),
("Oz", "WARP_AUTOMATION_PLATFORM", "{VARS.WARP_AUTOMATION_PLATFORM} in prose or {{WARP_AUTOMATION_PLATFORM}} in frontmatter"),
Expand Down
13 changes: 12 additions & 1 deletion .agents/skills/sync-openapi-spec/references/sync-policy.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ This skill is the manual fallback for the same job, so its output has to match t
top-level path operations.
2. Drop every tag listed in `EXCLUDED_TAGS`.
3. Drop every path whose tags are a subset of `EXCLUDED_TAGS`, plus every path listed explicitly in `EXCLUDED_PATHS` or matching a prefix in `EXCLUDED_PATH_PREFIXES`.
4. Keep top-level `openapi`, `info`, `servers`, and `components.securitySchemes` verbatim.
4. Keep top-level `openapi`, `servers`, and `components.securitySchemes` verbatim. Keep `info` from the source except for the docs-specific title and description override in `DOCS_INFO_OVERRIDES`.
5. Keep only reusable component entries that are reachable from surviving paths via `$ref` walking (recursive over `allOf`/`oneOf`/`anyOf`/`items`/`additionalProperties`/etc.).
6. Remove Factory-only values and matching description lines from `RunSourceType`.
7. Recursively strip every key in `STRIP_FLAGS` from whatever survives
Expand All @@ -27,6 +27,17 @@ This skill is the manual fallback for the same job, so its output has to match t

Rule 1 mirrors warp-server's own filter, so a surface the server team marks private stays private here without anyone having to maintain a matching allowlist entry.

## Public API metadata

The docs copy keeps endpoint behavior, contact details, licensing, and server
configuration from `warp-server/public_api/openapi.yaml`. It overrides only
`info.title` and `info.description` through `DOCS_INFO_OVERRIDES` in
`scripts/sync_openapi.py`, so the Scalar reference uses the public docs name,
**Warp Platform API**, and describes both factory and cloud-agent runs.

Keep this override when syncing the docs subset. Update the source spec when
its endpoint behavior or non-product metadata changes.

## `x-internal` deletes the whole marked object, not just the flag (`_prune_internal`)

`x-internal: true` mirrors openapi-format's `flagValues` semantics in
Expand Down
15 changes: 15 additions & 0 deletions .agents/skills/sync-openapi-spec/scripts/sync_openapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,17 @@
EXCLUDED_RUN_SOURCE_VALUES: frozenset[str] = frozenset(
{"BENCHMARK_TRIAL", "CREATE_BENCHMARK_TASK", "CUSTOM_WEBHOOK"}
)
# The upstream spec owns endpoint behavior and non-product metadata. The docs
# copy uses the public product name and description that frame the Scalar
# reference alongside the Factory and cloud-agent documentation.
DOCS_INFO_OVERRIDES: dict[str, str] = {
"title": "Warp Platform API",
"description": (
"API for creating, managing, and querying factory and cloud agent runs.\n\n"
"These endpoints allow users to send work to factories, start standalone agents, "
"list runs, and retrieve detailed run information.\n"
),
}

# Default checkout layout: docs/ and warp-server/ as siblings.
DEFAULT_SOURCE = Path("../warp-server/public_api/openapi.yaml")
Expand Down Expand Up @@ -411,6 +422,8 @@ def transform(source: dict[str, Any]) -> dict[str, Any]:
for top_key in ("openapi", "info", "servers"):
if top_key in source:
out[top_key] = source[top_key]
if isinstance(out.get("info"), dict):
out["info"] = {**out["info"], **DOCS_INFO_OVERRIDES}

src_tags = source.get("tags") or []
out_tags = [
Expand Down Expand Up @@ -743,6 +756,8 @@ def _self_test() -> int:
assert tag_names == ["agent"], f"unexpected tags: {tag_names}"

assert out["components"].get("securitySchemes"), "securitySchemes should be preserved"
assert out["info"]["title"] == "Warp Platform API"
assert out["info"]["description"] == DOCS_INFO_OVERRIDES["description"]

ref_errors = _validate_output(out)
assert not ref_errors, f"unexpected unresolved refs: {ref_errors}"
Expand Down
43 changes: 33 additions & 10 deletions .github/workflows/agent-docs-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,30 @@ jobs:
uses: actions/checkout@v4

- name: Run independent review-docs-pr agent
id: oz-review
uses: warpdotdev/oz-agent-action@main
with:
warp_api_key: ${{ secrets.WARP_API_KEY }}
profile: ${{ vars.WARP_AGENT_PROFILE || '' }}
prompt: |
env:
WARP_API_KEY: ${{ secrets.WARP_API_KEY }}
WARP_AGENT_PROFILE: ${{ vars.WARP_AGENT_PROFILE || '' }}
run: |
sudo apt-get update
sudo apt-get install -y gpg
curl --fail --location https://releases.warp.dev/linux/keys/warp.asc \
--output /tmp/warpdotdev.asc
# Verified against releases.warp.dev/linux/keys/warp.asc on 2026-09-18.
# Reverify this fingerprint before updating the Warp signing key.
test "$(
gpg --show-keys --with-colons /tmp/warpdotdev.asc |
awk -F: '/^fpr:/ { print $10; exit }'
)" = "0913165C78D5B7A41B42AC657FF7AB39D60F803F"
gpg --dearmor --output /tmp/warpdotdev.gpg /tmp/warpdotdev.asc
sudo install -D -o root -g root -m 644 /tmp/warpdotdev.gpg \
/etc/apt/keyrings/warpdotdev.gpg
sudo tee /etc/apt/sources.list.d/warpdotdev.list > /dev/null <<'EOF'
deb [arch=amd64 signed-by=/etc/apt/keyrings/warpdotdev.gpg] https://releases.warp.dev/linux/deb stable main
EOF
sudo apt-get update
sudo apt-get install -y oz-stable
oz --version
PROMPT="$(cat <<'EOF'
Run the review-docs-pr skill against warpdotdev/docs PR #${{ github.event.pull_request.number }}
at head SHA ${{ github.event.pull_request.head.sha }}. This PR carries the warpy-factory agent
marker, so it requires the independent v1 agent-doc quality review pass (see
Expand All @@ -60,6 +78,15 @@ jobs:
changed file and line or quoted text, explain the problem, and state the requested
resolution. Set reviewer_login to `github-actions[bot]`, the runner account that
will publish the review.
5. Your final response must contain only the single [SIGNAL:pr-review] JSON record.
Do not repeat the diff, review rationale, or findings outside that record.
EOF
)"
args=(agent run --output-format text --prompt "$PROMPT")
if [ -n "$WARP_AGENT_PROFILE" ]; then
args+=(--profile "$WARP_AGENT_PROFILE")
fi
oz "${args[@]}" > /tmp/agent-output.txt
- name: Dismiss stale automated change requests
env:
GH_TOKEN: ${{ github.token }}
Expand All @@ -78,9 +105,7 @@ jobs:
- name: Publish the independent review
env:
GH_TOKEN: ${{ github.token }}
AGENT_OUTPUT: ${{ steps.oz-review.outputs.agent_output }}
run: |
printf '%s' "$AGENT_OUTPUT" > /tmp/agent-output.txt
python3 .agents/skills/doc_quality_policy/publish_review_signal.py \
--agent-output /tmp/agent-output.txt \
--pr "${{ github.event.pull_request.number }}" \
Expand All @@ -96,9 +121,7 @@ jobs:
- name: Verify the current review signal and GitHub review
env:
GH_TOKEN: ${{ github.token }}
AGENT_OUTPUT: ${{ steps.oz-review.outputs.agent_output }}
run: |
printf '%s' "$AGENT_OUTPUT" > /tmp/agent-output.txt
python3 .agents/skills/doc_quality_policy/verify_review_signal.py \
--repo "${{ github.repository }}" \
--pr "${{ github.event.pull_request.number }}" \
Expand Down
1 change: 0 additions & 1 deletion astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,6 @@ export default defineConfig({
{ label: 'Enterprise', description: 'Enterprise features, SSO, team management, and security.', paths: ['enterprise/**'] },
{ label: 'Getting Started', description: 'Installation, quickstart, and migration guides.', paths: ['index', 'quickstart', 'getting-started/**'] },
{ label: 'Knowledge and Collaboration', description: 'Warp Drive, teams, and the Admin Panel.', paths: ['knowledge-and-collaboration/**'] },
{ label: 'API & Reference', description: 'CLI and API reference.', paths: ['reference/**'] },
// All support-and-community/ pages. open-source-licenses.mdx is excluded
// globally above (stack overflow in hast-util-to-text); the patch ensures
// it's excluded from this custom set as well.
Expand Down
4 changes: 2 additions & 2 deletions developers/agent-api-openapi.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
openapi: 3.0.0
info:
title: Warp Agent API
title: Warp Platform API
version: 1.0.0
description: "API for creating, managing, and querying Warp cloud agent runs.\n\nThese endpoints allow users to programmatically spawn agents, list runs, \nand retrieve detailed run information.\n"
description: "API for creating, managing, and querying factory and cloud agent runs.\n\nThese endpoints allow users to send work to factories, start standalone agents, list runs, \nand retrieve detailed run information.\n"
contact:
name: Warp Support
url: https://docs.warp.dev
Expand Down
4 changes: 2 additions & 2 deletions src/content/docs/agents/agent-memory/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,8 @@ Attach stores to agents with read-only or read-write access. Each attachment inc

These capabilities aren't part of the research preview yet, but they're on the way:

* **Programmatic API access** - Read and manage memories and stores through the [{VARS.API_SDK_NAME}](/reference/api-and-sdk/), in addition to managing them in the {VARS.WEB_APP}.
* **Self-hosting support** - Run Agent Memory on a [self-hosted {VARS.WARP_AUTOMATION_PLATFORM}](/platform/self-hosting/) instance to meet security, privacy, and compliance requirements.
* **Programmatic API access** - Read and manage memories and stores through the [{VARS.WARP_PLATFORM_API}](/factories/api-and-sdk/), in addition to managing them in the {VARS.WEB_APP}.
* **Self-hosting support** - Run Agent Memory on a [self-hosted {VARS.WARP_AUTOMATION_PLATFORM}](/factories/self-hosting/) instance to meet security, privacy, and compliance requirements.

## Join the waitlist

Expand Down
6 changes: 3 additions & 3 deletions src/content/docs/agents/capabilities/computer-use/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ Runs started from the Warp app don't use the server default: they always follow

### CLI

When running cloud agents with the [{VARS.WARP_AGENT_CLI}](/reference/cli/), use flags to control Computer Use per run:
When running cloud agents with the [{VARS.WARP_AGENT_CLI}](/agents/cli/oz-cli/), use flags to control Computer Use per run:

```bash
oz agent run-cloud --computer-use --prompt "<task>"
Expand All @@ -53,7 +53,7 @@ oz agent run-cloud --no-computer-use --prompt "<task>"

### API

When creating a cloud agent run with the [{VARS.API_SDK_NAME}](/reference/api-and-sdk/), the optional `config.computer_use_enabled` field controls Computer Use. When omitted, it defaults to `true` for runs on Warp's built-in harness and `false` for runs on third-party harnesses. Set it to `false` to disable Computer Use for the run:
When creating a cloud agent run with the [{VARS.WARP_PLATFORM_API}](/factories/api-and-sdk/), the optional `config.computer_use_enabled` field controls Computer Use. When omitted, it defaults to `true` for runs on Warp's built-in harness and `false` for runs on third-party harnesses. Set it to `false` to disable Computer Use for the run:

```json
{
Expand All @@ -65,7 +65,7 @@ When creating a cloud agent run with the [{VARS.API_SDK_NAME}](/reference/api-an
}
```

For full API documentation, see the [{VARS.API_SDK_NAME}](/reference/api-and-sdk/) reference.
For full API documentation, see the [{VARS.WARP_PLATFORM_API}](/factories/api-and-sdk/) reference.

### Web app

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ sidebar:
import { VARS } from '@data/vars';

:::caution
The {VARS.WARP_AGENT_CLI} (the `oz` binary) is being deprecated in favor of the {VARS.WARP_CLI} (the `warp` binary). `oz` commands remain supported through the end of September 2026. See the [Warp Agent CLI docs](/agents/cli/) for what is available today.
The {VARS.WARP_AGENT_CLI} (the `oz` binary) is a supported legacy interface. Existing users do not need to change their workflows. For new multi-stage development workflows, use [Warp Factories](/factories/). Warp will publish guidance before any support change.
:::

Agent profiles control what the agent can do, how it behaves, and where it can act when running from the {VARS.WARP_AGENT_CLI}. Create profiles in the Warp app to configure file access, command execution, MCP server usage, model selection, and directory permissions, then reference them by ID in CLI commands.
Expand Down
Loading
Loading