From 0ef33245a43eef0f53f9d84b59c943b6ea0c24ff Mon Sep 17 00:00:00 2001 From: DroidAgent <154886644+echobt@users.noreply.github.com> Date: Tue, 15 Sep 2026 21:41:04 +0000 Subject: [PATCH 1/2] docs: restructure the public IA and fix duplicate page titles The docs site worked but was harder to navigate than it needed to be. Two problems in particular: every product shipped both a `X/index` hub and a separate `X/overview` page competing as the entry point, and 26 pages rendered a second `
+Bots belong to a signed-in account. Your bots are listed once, in the sidebar; the pane is the open bot — conversation in the middle, its computer on the right.
+
+
+
+## What a bot is
+
+| Commitment | What it means |
+| --- | --- |
+| **A real desktop, not a transcript** | Each bot can have a computer: a screen, a browser, files. You watch it work instead of pasting a web page into chat. |
+| **Your bots listed once** | One list in the sidebar, in the web app and the [Bot desktop app](/bot/desktop). |
+| **Plugins you chose** | A bot never inherits a connection you did not assign to it. |
+| **One product, one sign-in** | The same account as Chat and Code. |
+
## Start here
-
-
-## The shape of the product
-
-| Commitment | What it means |
-| --- | --- |
-| **A real desktop, not a transcript** | Each bot can have a computer: a screen, a browser, files. You watch it work instead of pasting a web page into chat. |
-| **Your bots, listed once** | The account's bots live in the sidebar. The pane is the open bot — conversation in the middle, its computer on the right. |
-| **Plugins you chose** | A connected app reaches Chat, Bot, or both — you pick. A bot never inherits a tool you did not assign. |
-| **One product, one sign-in** | Create a bot after you sign in. A guest session cannot own something it could never come back to revoke. |
-
-## First run
-
-An account with no bots gets the **setup form**, not an empty list. Name the bot, decide what it is for, and create it. There are no pre-made bots with invented names waiting in the list.
-
-## The open bot
-
-| Area | What is there |
-| --- | --- |
-| **Sidebar** | Your bots, listed once |
-| **Centre** | The conversation — short bubbles from the bot, your replies, and parked approvals |
-| **Computer rail (right)** | The live desktop, with **Open desktop** and **Sleep**, plus routines |
-
-## Who can drive a bot
-
-Guests see the public product page at `/bot` and the **This space is reserved** gate on deep links. Signed-in members create and drive bots. Bots are private to the account — see [Sharing](/chat/sharing).
-
-## Bot compared with Chat and Code
-
-| | Chat | Code | Bot |
-| --- | --- | --- | --- |
-| Best at | Questions, writing, research | Changing a repository | Doing tasks on a desktop, on a schedule |
-| Runs in | A snippet sandbox | An isolated guest, headless | An isolated guest **with a desktop** |
-| You see | A streamed reply | A turn timeline | Short user-visible messages plus the live screen |
-| Guardrail | Tool round budget | Ask / Plan / Agent | Allow / Deny / Always approvals |
-
-## Where Bot lives
-
-| Surface | Host for the computer |
-| --- | --- |
-| Web app (`/bot`) | Cloud |
-| [Bot desktop app](/bot/desktop) | Cloud, This PC |
-| SSH | Shell only, no desktop |
-
-## Next
-
-- [Bot quickstart](/bot/quickstart)
-- [Computer](/bot/computer) · [Tools](/bot/tools) · [Approvals](/bot/approvals)
-- [Routines](/bot/routines) · [Skills](/bot/skills)
diff --git a/bot/troubleshooting.mdx b/bot/troubleshooting.mdx
index 4a2bcb4..532065f 100644
--- a/bot/troubleshooting.mdx
+++ b/bot/troubleshooting.mdx
@@ -57,3 +57,10 @@ Bot uses the same problem documents as the rest of Cortex. Common ones:
| [`invalid_state`](/problems/invalid_state) | The bot or its computer is not in a state that allows the action |
Full list: [Problem catalog](/problems).
+
+## Related
+
+- [Computer](/bot/computer) — the guest states behind Connecting and Stream Unavailable.
+- [Approvals](/bot/approvals) — why a parked step waits.
+- [Routines](/bot/routines) — local weekday timing.
+- [Troubleshooting](/getting-started/troubleshooting) — the same guidance across all products.
diff --git a/changelog.mdx b/changelog.mdx
index 9f8e737..a86ff2d 100644
--- a/changelog.mdx
+++ b/changelog.mdx
@@ -47,3 +47,9 @@ Dated notes on what the products ship. Each entry names a change the app or the
## How this page is kept
An entry names a change the product already ships, with a date, and links the surface. Product previews stay labelled as previews. The inference Platform API is not announced here until that product exists — see [Coming soon](/platform).
+
+## Related
+
+- [System status](/status) — outages and maintenance, which are not changelog entries.
+- [CLI](/cli) — install and update, including `cortex upgrade`.
+- [Platform API](/platform) — why no inference API is announced here yet.
diff --git a/chat/images.mdx b/chat/images.mdx
index 8a85ea4..d462266 100644
--- a/chat/images.mdx
+++ b/chat/images.mdx
@@ -49,3 +49,10 @@ A generated picture is a Library file like any other. **Check origin** is a diff
- One complete sentence beats a list of keywords: *A lighthouse on a granite headland at dusk, long exposure, soft teal sky.*
- Reuse the seed to iterate on a picture you like while changing one thing at a time.
- Use the negative prompt for the things the model keeps adding that you do not want.
+
+## Related
+
+- [Models](/chat/models) — Cortex-Image-1 beside the chat models.
+- [Library](/chat/library) — where generated pictures land.
+- [Plans and quotas](/getting-started/plans) — how `images_per_day` behaves.
+- [Origin check](/chat/origin-check) — ask whether a picture reads as generated.
diff --git a/chat/index.mdx b/chat/index.mdx
index 39ac813..1262e86 100644
--- a/chat/index.mdx
+++ b/chat/index.mdx
@@ -1,10 +1,12 @@
---
-title: "Chat guides"
-description: "Everything for Cortex Chat — conversations, projects, Library, plans, models, tools, research, images, and how a turn actually runs."
+title: "Cortex Chat"
+description: "The conversation product at cortex.foundation — projects, Library, plans, models, tools, Deep Research, images, and how a turn runs."
image: "/images/banners/chat.png"
---
-Cortex Chat is the conversation product at [cortex.foundation](https://cortex.foundation). Ask questions, write, research with citations, work with documents and images, and keep related work together in projects. Chat works before you sign in; projects, files, memory, plans, and connections belong to a signed-in account.
+Cortex Chat is the assistant for research, writing, and everyday questions. It streams answers as they are written, keeps documents and threads together in projects, and hands off to Code or Bot when the job is a repository or a computer rather than a conversation.
+
+Chat works before you sign in. Projects, files, memory, plans, and connections belong to a signed-in account.
@@ -16,14 +18,54 @@ Cortex Chat is the conversation product at [cortex.foundation](https://cortex.fo
+
+
## Core guides
-
-
-## The sidebar
-
-| Entry | What it opens |
-| --- | --- |
-| **Chat · Code · Bot** | The product switcher. Chat is the default; Code and Bot need a signed-in account. |
-| **New chat** | Starts a thread. It is an action, not a selected row. |
-| **Projects** | Standing instructions plus the chats and files that belong together. See [Projects](/chat/projects). |
-| **Artifacts** | Opens the [Library](/chat/library) — your uploads and everything the assistant produced. |
-| **Customize** | **Connectors**: connect apps and choose whether each reaches Chat, Bot, or both. See [Tools](/chat/tools). |
-| **Pinned** | Projects you pinned for quick access. |
-| **Recents** | Your latest conversations. Guests see the current session only. |
-| **Guest / your account** | Sign in, or open [Settings](/getting-started/settings). |
-
-## The composer
-
-- **+** opens **Attach file**, **Image**, and **Check origin**.
-- The **model chip** (for example *Cortex 1 Mini · Preview · Thinking Low*) switches model, sets the Thinking level, and toggles **Deep Research**.
-- **Enter** sends; **Shift + Enter** adds a line; **Esc** stops a response.
-- While a turn runs, the placeholder reads **Cortex is responding…** and the send button becomes a stop control.
-
-## Home starting points
-
-The four cards on Chat home are shortcuts, not separate products:
-
-| Card | What it does |
-| --- | --- |
-| **Code** — *The Cortex agent working inside your repos* | Opens Cortex Code |
-| **Research** — *Cited answers from live sources* | Prefills the composer and turns on Deep Research |
-| **Docs** — *Drafts that structure themselves* | Opens a new chat with a document canvas beside it |
-| **Agents** — *Background runs on schedules* | Opens Cortex Bot |
-
-## A thread
-
-Every reply carries **Copy**, **Listen** (when voice is available), and thumbs up / down. The thread header offers **Start a plan** — turn this conversation into a task list — and **Move to project**. Replies render markdown: headings, tables, and syntax-highlighted code blocks with their own **Copy** button. A small line under the composer reminds you that Cortex is an AI and can make mistakes.
-
-## When to switch
-
-| Stay in Chat | Open Code | Open Bot |
-| --- | --- | --- |
-| Questions, writing, research, pictures, origin checks, documents, plans | A repository, an isolated Cloud guest, diffs, a pull request | An always-on teammate with a computer, routines, approvals |
-
-Chat does not run Code's workspace shell or Bot's computer. Chat's Python tool is a snippet sandbox with no workspace; it cannot see a repository. How the loop runs: [How Chat works](/chat/how-it-works).
-
-## Next
-
-- [Chat quickstart](/chat/quickstart) — from open to a useful first conversation.
-- [Projects](/chat/projects) · [Library](/chat/library) · [Plans](/chat/plans)
-- [Models](/chat/models) · [Tools and connectors](/chat/tools)
diff --git a/chat/plans.mdx b/chat/plans.mdx
index 4ff6b3b..03234b4 100644
--- a/chat/plans.mdx
+++ b/chat/plans.mdx
@@ -47,3 +47,10 @@ Choose **New plan**. Give it a title and, optionally, steps. Bullets and numbers
## Guests and members
Plans persist on a signed-in account. A guest can open the dialog, but a plan needs somewhere to live once the tab closes — sign in first. See [Accounts](/getting-started/accounts).
+
+## Related
+
+- [Projects](/chat/projects) — instructions that apply to every chat in them.
+- [Canvases](/chat/canvases) — a document beside one conversation.
+- [Deep Research](/chat/deep-research) — the research plan, which is not a task list.
+- [CLI goals](/cli/goal) — a long-horizon objective in the terminal.
diff --git a/chat/projects.mdx b/chat/projects.mdx
index 3c0e324..68b469e 100644
--- a/chat/projects.mdx
+++ b/chat/projects.mdx
@@ -61,3 +61,10 @@ Add documents to a project so every chat in it can use them. Files come from you
+
+
+## What Code is
+
+| Commitment | What it means for you |
+| --- | --- |
+| **One repository per runtime** | Each session gets an isolated guest on the same farm as Cortex Bot, without a desktop. The environment is installed by the agent, not guessed from a filename. |
+| **Reviews stay failed when they fail** | A Cortex Security review is one pass over a diff. A failed review is stored as failed — never rewritten as an approval. |
+| **No pasted diff** | Code writes the change in the repository; Cortex Security reads the pull request in place. Neither asks you to paste a patch into a box. |
+| **The same account as Chat** | Sign in on cortex.foundation. No second identity. |
+
+## Who can open it
+
+Code is a member surface. A guest visiting `/code` sees the public product page, and deep links show **This space is reserved** with **Continue in Chat** or **Sign in**. Once signed in, `/code` opens Code Home: connect GitHub, pick a repository, start a session. See [Accounts](/getting-started/accounts).
+
@@ -16,14 +35,26 @@ Cortex Code is a coding agent, not a chat with a different icon. You point it at
-
-
-## What Code is
-
-| Commitment | What it means for you |
-| --- | --- |
-| **One repository per runtime** | Each session gets an isolated guest on the same farm as Cortex Bot, without a desktop. The environment is installed by the agent, not guessed from a filename. |
-| **Reviews stay failed when they fail** | A Cortex Security review is one pass over a diff. A failed review is stored as failed — never rewritten as an approval. |
-| **No pasted diff** | Code writes the change in the repository; Cortex Security reads the pull request in place. Neither asks you to paste a patch into a box. |
-| **The same account as Chat** | Sign in on cortex.foundation. No second identity. |
-
-## Who can open it
-
-Code is a member surface. A guest visiting `/code` sees the public product page, and deep links show **This space is reserved** with **Continue in Chat** or **Sign in**. Once signed in, `/code` opens Code Home: connect GitHub, pick a repository, start a session. See [Accounts](/getting-started/accounts).
-
-## Where it runs
-
-| Surface | Host | Notes |
-| --- | --- | --- |
-| Web app | **Cloud** | Web Code is Cloud-only |
-| Desktop app | Cloud, **This PC**, **SSH** | [Code on desktop](/code/desktop) |
-| CLI | Cloud by default; This PC and SSH by opt-in | [Code in the terminal](/code/cli) |
-
-## What Code is not
-
-| Not this | Use instead |
-| --- | --- |
-| A Chat transcript | A [session](/code/sessions) is a turn timeline — files read, edits, commands, plans |
-| Chat's Python sandbox | [Cloud runtimes](/code/cloud) — an isolated guest with your repository |
-| A Chat plugin | [Connect GitHub](/code/github) — the repository connection lives in Code |
-| The public `/security` page | [Cortex Security](/code/security) — the signed-in review inbox at `/code/security` |
-| A place to store secrets | There is no Secrets page. Environment for a guest belongs to that guest; `/code/secrets` sends you home. |
-
-## Modes in one line
-
-**Ask** reads and explains. **Plan** proposes without changing anything. **Agent** edits files and runs commands. Pick per turn; the session row holds the default. See [Ask, Plan, Agent](/code/interactions).
-
-## Next
-
-- [Code quickstart](/code/quickstart) — first session in the web app.
-- [Sessions](/code/sessions) — reading the timeline.
-- [CLI](/cli) — the terminal front-end to the same sessions.
diff --git a/code/troubleshooting.mdx b/code/troubleshooting.mdx
index 197ee0b..5d30ce7 100644
--- a/code/troubleshooting.mdx
+++ b/code/troubleshooting.mdx
@@ -60,3 +60,10 @@ Every failure is a problem document with a stable `code` and a `request_id`. Com
| [`upstream_timeout`](/problems/upstream_timeout) | The runtime did not answer in time; retry |
Full list: [Problem catalog](/problems).
+
+## Related
+
+- [Code](/code) — what Code is and who can open it.
+- [Ask, Plan, Agent](/code/interactions) — the modes that withhold mutating tools.
+- [How Code works](/code/how-it-works) — where workspace tools execute.
+- [Troubleshooting](/getting-started/troubleshooting) — the same guidance across all products.
diff --git a/design/index.mdx b/design/index.mdx
index 1a843c1..cdcd379 100644
--- a/design/index.mdx
+++ b/design/index.mdx
@@ -1,26 +1,46 @@
---
-title: "Design guides"
-description: "Cortex Design — persistable canvases hosted from Chat or Code and edited in the Design desktop app. Frames, notes, options, and a Library of components, pages, and tokens."
+title: "Cortex Design"
+description: "Persistable canvases hosted from Chat or Code and edited in the Design desktop app. Frames, notes, options, and a Library of components, pages, and tokens."
image: "/images/banners/design.png"
---
Cortex Design is where visual work lives. A canvas is a board of frames, notes, and options that you host from a Chat conversation or a Code session and then open in the **Design desktop app** to work on. There is no Design mode in the web shell: the browser creates and lists canvases, the desktop app is where you edit them.
-docs.cortex.foundation
-Product docs for the Cortex app — how to chat, ship code, run bots, design with your team, and drive Code from a terminal. One account, one domain. **Platform API lives elsewhere.**
+Product docs for the Cortex app — how to chat, ship code, run bots, design canvases, and drive Code from a terminal. One account, one domain. **Platform API lives elsewhere.**
@@ -17,6 +17,8 @@ Product docs for the Cortex app — how to chat, ship code, run bots, design wit
Download Cortex
+## Start here
+
-# System status
-
Cortex publishes live component health, incident history, and scheduled maintenance on the public status page.
@@ -52,3 +50,9 @@ User-facing error text names a Cortex surface, never a vendor. Status updates ar
## Brand
Status communications use Cortex green (`#1F4945`) and the Cortex logo. The status site is hosted under the `cortex.foundation` domain so it stays available when you need it most.
+
+## Related
+
+- [Troubleshooting](/getting-started/troubleshooting) — what a message in the product means.
+- [Chat](/chat) · [Code](/code) · [Bot](/bot) · [CLI](/cli) — the surfaces status reports on.
+- [Problem catalog](/problems) — the error codes behind a failed request.
From 4bb57c47a005fa8034f5dbdc9f40ba91f8a97658 Mon Sep 17 00:00:00 2001
From: DroidAgent <154886644+echobt@users.noreply.github.com>
Date: Tue, 15 Sep 2026 21:48:49 +0000
Subject: [PATCH 2/2] docs: make pages findable by the labels the product uses
Follow-up polish on the IA pass. Two things made pages harder to find than
they needed to be: the sidebar and the docs disagreed on names, and several
descriptions were long enough to be truncated before they said anything
useful.
Search
- Added `keywords` to every content page, mapping the label a reader sees in
the product to the page that documents it. The sidebar says **Artifacts**
and the page is Library; it says **Planning** and the page is Plans; it
says **Agents** and the page is Cortex Bot. Searching either term now
finds the page. No content page relied on this before.
- Gave `Sessions` and `Canvases` product-qualified titles, because each name
covered two different pages and the pair was indistinguishable in search.
`sidebarTitle` keeps the sidebar short, so the pages still read
"Sessions" and "Canvases" where space is tight.
Metadata
- Trimmed 19 descriptions to fit under 160 characters. Longer text is cut
off in search results and link previews, so the trailing half was doing no
work. No claim changed; where the cut cost a possessive, it was restored.
- Fixed the image inventory: `images/product/README.md` still pointed at the
four overview pages this branch removed, and `bot-public.png` had gone
unused when the Bot pages were merged. The capture is placed again, so
every product screenshot is now used on exactly one page.
Docs
- README and AGENTS record the description limit, the unique-title rule, and
the keyword convention, so the next page follows them.
Validation: check-docs-site, its shell suite, docs-ui, and mint validate all
pass. Re-checked structurally: no orphans, no dead navigation, no broken
internal links, no duplicate titles.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
---
AGENTS.md | 4 ++++
README.md | 11 +++++++++++
api/errors.mdx | 1 +
api/overview.mdx | 1 +
bot/approvals.mdx | 1 +
bot/computer.mdx | 3 ++-
bot/desktop.mdx | 1 +
bot/how-it-works.mdx | 3 ++-
bot/index.mdx | 7 ++++++-
bot/quickstart.mdx | 1 +
bot/routines.mdx | 3 ++-
bot/skills.mdx | 1 +
bot/tools.mdx | 3 ++-
bot/troubleshooting.mdx | 1 +
changelog.mdx | 1 +
chat/canvases.mdx | 4 +++-
chat/deep-research.mdx | 1 +
chat/how-it-works.mdx | 3 ++-
chat/images.mdx | 1 +
chat/index.mdx | 1 +
chat/library.mdx | 1 +
chat/memory.mdx | 1 +
chat/models.mdx | 1 +
chat/origin-check.mdx | 1 +
chat/plans.mdx | 1 +
chat/projects.mdx | 1 +
chat/quickstart.mdx | 1 +
chat/sharing.mdx | 1 +
chat/streaming.mdx | 1 +
chat/tools.mdx | 3 ++-
chat/troubleshooting.mdx | 1 +
chat/voice.mdx | 1 +
cli/configuration.mdx | 1 +
cli/extend.mdx | 1 +
cli/goal.mdx | 3 ++-
cli/headless.mdx | 1 +
cli/index.mdx | 3 ++-
cli/install.mdx | 1 +
cli/keyboard.mdx | 1 +
cli/modes-and-permissions.mdx | 3 ++-
cli/quickstart.mdx | 1 +
cli/sessions.mdx | 4 +++-
cli/sign-in.mdx | 3 ++-
cli/slash-commands.mdx | 1 +
cli/troubleshooting.mdx | 3 ++-
cli/tui.mdx | 3 ++-
code/cli.mdx | 3 ++-
code/cloud.mdx | 1 +
code/desktop.mdx | 1 +
code/github.mdx | 3 ++-
code/how-it-works.mdx | 3 ++-
code/index.mdx | 3 ++-
code/interactions.mdx | 3 ++-
code/quickstart.mdx | 1 +
code/security.mdx | 3 ++-
code/sessions.mdx | 4 +++-
code/troubleshooting.mdx | 1 +
design/canvases.mdx | 4 +++-
design/desktop.mdx | 1 +
design/index.mdx | 1 +
design/library.mdx | 1 +
getting-started/accounts.mdx | 1 +
getting-started/desktop.mdx | 1 +
getting-started/downloads.mdx | 1 +
getting-started/plans.mdx | 1 +
getting-started/quickstart.mdx | 1 +
getting-started/settings.mdx | 1 +
getting-started/troubleshooting.mdx | 1 +
getting-started/what-is-cortex.mdx | 1 +
images/product/README.md | 6 +++---
index.mdx | 1 +
platform.mdx | 1 +
problems/index.mdx | 1 +
security/overview.mdx | 1 +
status.mdx | 1 +
75 files changed, 121 insertions(+), 26 deletions(-)
diff --git a/AGENTS.md b/AGENTS.md
index 2c314bc..7be4f2c 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -13,6 +13,10 @@ repository root, not in `apps/docs`. Preview and validation commands are in
- One hub page per product (`
+
+
diff --git a/bot/quickstart.mdx b/bot/quickstart.mdx
index 210c83d..8494c0e 100644
--- a/bot/quickstart.mdx
+++ b/bot/quickstart.mdx
@@ -2,6 +2,7 @@
title: "Bot quickstart"
description: "Sign in, create your first bot, open its computer, give it a task, and approve its first consequential step."
image: "/images/banners/bot.png"
+keywords: ["tutorial", "first bot", "getting started", "create bot"]
---
This quickstart uses the web app, where a bot's computer runs in the Cloud. The [Bot desktop app](/bot/desktop) adds **This PC**.
diff --git a/bot/routines.mdx b/bot/routines.mdx
index a837d1b..34445a5 100644
--- a/bot/routines.mdx
+++ b/bot/routines.mdx
@@ -1,6 +1,7 @@
---
title: "Routines"
-description: "Scheduled work on a bot you own. Routines fire in the owner's local weekday hours, pause and resume from the Computer rail, and follow your account across devices."
+description: "Scheduled work on a bot you own. Routines fire in your local weekday hours, pause and resume from the Computer rail."
+keywords: ["schedule", "recurring", "cron", "automation", "timers"]
---
A routine is work a bot repeats on a schedule: every weekday morning, pull the report; on Fridays, check the release page; every hour during business hours, watch the queue. Routines belong to a bot you own and fire in **your** local weekday hours.
diff --git a/bot/skills.mdx b/bot/skills.mdx
index 8e591b1..827a8d0 100644
--- a/bot/skills.mdx
+++ b/bot/skills.mdx
@@ -1,6 +1,7 @@
---
title: "Skills"
description: "Skills are instruction bundles a bot can follow. Enable first-party skills on a bot you own; the bot loads one when the task calls for it."
+keywords: ["instructions", "bundles", "procedures"]
---
A skill tells a bot **how** a particular job is done — the checklist for a weekly report, the steps for a support triage, the way your team wants a summary written. Instead of carrying every procedure in its context all the time, the bot loads a skill when the task calls for it.
diff --git a/bot/tools.mdx b/bot/tools.mdx
index f964664..980d933 100644
--- a/bot/tools.mdx
+++ b/bot/tools.mdx
@@ -1,6 +1,7 @@
---
title: "Bot tools"
-description: "The parent tool catalog a bot receives — files and shell, computer use, browser, web, memory and skills, user-visible messages, nested tasks, agents, artifacts, and the plugins you enabled for Bot."
+description: "The parent catalog a bot receives — files and shell, computer use, browser, web, memory and skills, messaging, nested tasks, agents, and your plugins."
+keywords: ["capabilities", "catalog", "computer use", "browser"]
---
A bot receives the **parent catalog**: everything below, plus the connected apps you enabled for Bot. It is not a subset of Chat's tools or Code's workspace catalog — it is its own set, built around having a computer.
diff --git a/bot/troubleshooting.mdx b/bot/troubleshooting.mdx
index 532065f..251013a 100644
--- a/bot/troubleshooting.mdx
+++ b/bot/troubleshooting.mdx
@@ -1,6 +1,7 @@
---
title: "Bot troubleshooting"
description: "Connecting versus Stream Unavailable, parked steps that do not run, the setup form, missing tools, and turns that stop."
+keywords: ["errors", "problems", "fixes", "not working"]
---
Bot names its states plainly. This page maps them to causes and fixes. For the rest of the app see [Troubleshooting](/getting-started/troubleshooting).
diff --git a/changelog.mdx b/changelog.mdx
index a86ff2d..a47438a 100644
--- a/changelog.mdx
+++ b/changelog.mdx
@@ -2,6 +2,7 @@
title: "Changelog"
description: "What shipped in Cortex Chat, Code, Bot, Design, and the CLI — dated, with a link to the surface it changed."
image: "/images/banners/changelog.png"
+keywords: ["release notes", "updates", "what is new"]
---
Dated notes on what the products ship. Each entry names a change the app or the CLI already carries and links the surface it touched. Announcements from the Foundation are on [cortex.foundation/news](https://cortex.foundation/news).
diff --git a/chat/canvases.mdx b/chat/canvases.mdx
index ab885b4..fbf9fe0 100644
--- a/chat/canvases.mdx
+++ b/chat/canvases.mdx
@@ -1,6 +1,8 @@
---
-title: "Canvases"
+title: "Chat canvases"
+sidebarTitle: "Canvases"
description: "A document that sits beside the conversation. Draft it yourself or ask Cortex to — and keep editing after the chat moves on."
+keywords: ["document", "sidecar", "editor", "draft"]
---
A Chat canvas is a document panel beside a conversation. Cortex can draft it, you can edit it, and it keeps your edits when you close it. It is the right place for a launch announcement, a spec, or anything you want to shape over several turns instead of scrolling back through replies.
diff --git a/chat/deep-research.mdx b/chat/deep-research.mdx
index 9890668..1dce74e 100644
--- a/chat/deep-research.mdx
+++ b/chat/deep-research.mdx
@@ -1,6 +1,7 @@
---
title: "Deep Research"
description: "Plan the questions, read live sources, and write a cited report. A Chat feature — not a Code tool and not a Bot skill."
+keywords: ["research", "citations", "sources", "report"]
---
Deep Research turns a conversation into a research run. Instead of one answer, Cortex plans a set of questions, reads live sources for each in parallel, and writes a report with citations. You review the plan before it runs and read the report on the thread when it is done.
diff --git a/chat/how-it-works.mdx b/chat/how-it-works.mdx
index 3ddb541..b12a524 100644
--- a/chat/how-it-works.mdx
+++ b/chat/how-it-works.mdx
@@ -1,6 +1,7 @@
---
title: "How Chat works"
-description: "A Chat turn is one tool-calling loop: the model asks for tools, Chat runs them, results flow back, and the loop ends when the model stops or hits Chat's round budget."
+description: "A Chat turn is one tool-calling loop: the model asks for tools, Chat runs them, results flow back, and the loop ends when the model stops."
+keywords: ["tool loop", "context", "compaction", "rounds"]
---
A Chat turn is a real tool loop. The model emits tool calls, Chat executes them, the results re-enter the context, and the loop continues until the model stops or Chat reaches its round budget. What you see is the streamed result of that loop: tokens, then tools, then the finished reply.
diff --git a/chat/images.mdx b/chat/images.mdx
index d462266..7415e05 100644
--- a/chat/images.mdx
+++ b/chat/images.mdx
@@ -1,6 +1,7 @@
---
title: "Image generation"
description: "Ask Chat for a picture and Cortex-Image-1 paints it. Generated images land in Library. On Free and Guest, images are a daily quota — not a paywall."
+keywords: ["pictures", "Cortex-Image-1", "generation", "text to image"]
---
Ask for a picture in plain language, or choose **+ → Image** on the composer. Chat loads its image skill, turns your ask into a complete scene description, and calls **Cortex-Image-1**. The finished picture is a Library file you can reuse in any chat or project.
diff --git a/chat/index.mdx b/chat/index.mdx
index 1262e86..e2eff6d 100644
--- a/chat/index.mdx
+++ b/chat/index.mdx
@@ -2,6 +2,7 @@
title: "Cortex Chat"
description: "The conversation product at cortex.foundation — projects, Library, plans, models, tools, Deep Research, images, and how a turn runs."
image: "/images/banners/chat.png"
+keywords: ["assistant", "conversations", "chat app"]
---
Cortex Chat is the assistant for research, writing, and everyday questions. It streams answers as they are written, keeps documents and threads together in projects, and hands off to Code or Bot when the job is a repository or a computer rather than a conversation.
diff --git a/chat/library.mdx b/chat/library.mdx
index 9543ad8..f8c15a6 100644
--- a/chat/library.mdx
+++ b/chat/library.mdx
@@ -1,6 +1,7 @@
---
title: "Library"
description: "Everything you uploaded to a chat or a project, and everything the assistant produced. Files stay in Library when a chat is deleted."
+keywords: ["Artifacts", "files", "uploads", "attachments", "file store"]
---
Library is the file store on your account. Anything you attach in a chat, add to a project, or upload directly lands here, and so does everything the assistant generates — pictures from Cortex-Image-1 included. Open it from **Artifacts** in the sidebar.
diff --git a/chat/memory.mdx b/chat/memory.mdx
index 93bc855..253652f 100644
--- a/chat/memory.mdx
+++ b/chat/memory.mdx
@@ -1,6 +1,7 @@
---
title: "Memory"
description: "Cortex remembers preferences and facts you share so answers get more personal over time. Review or delete individual memories under Settings → Data & privacy."
+keywords: ["preferences", "personalisation", "saved facts", "forget"]
---
Memory is a short list of standing preferences and facts about you that Chat keeps on your account and reads into every conversation. It is how Cortex remembers that you prefer British spelling, work in euros, or want answers to start with the conclusion — without you repeating it.
diff --git a/chat/models.mdx b/chat/models.mdx
index edc10c5..e41b4d5 100644
--- a/chat/models.mdx
+++ b/chat/models.mdx
@@ -1,6 +1,7 @@
---
title: "Models and thinking"
description: "Pick a model per conversation from the composer chip, set how long Cortex thinks before answering, and know what happens at peak hours."
+keywords: ["Cortex 1 Mini", "Cortex Teutonic-1", "thinking level", "model picker", "context window"]
---
Every conversation runs on a Cortex model. The chip under the composer — *Cortex 1 Mini · Preview · Thinking Low* by default — is where you change it. The choice belongs to the conversation: existing threads keep the model they were created with, and new chats start from the default.
diff --git a/chat/origin-check.mdx b/chat/origin-check.mdx
index f69a34b..eb43819 100644
--- a/chat/origin-check.mdx
+++ b/chat/origin-check.mdx
@@ -1,6 +1,7 @@
---
title: "Origin check"
description: "Attach media and ask whether it is authentic. Cortex waits for a verdict, and says so plainly when the check cannot run."
+keywords: ["authenticity", "AI detection", "verify media"]
---
**Check origin** answers one question about a picture or a video you attach: does it look authentic, or does it carry the marks of generation or manipulation? It is an explicit ask on attached media — not something that runs silently on every image in a thread.
diff --git a/chat/plans.mdx b/chat/plans.mdx
index 03234b4..8150301 100644
--- a/chat/plans.mdx
+++ b/chat/plans.mdx
@@ -1,6 +1,7 @@
---
title: "Plans"
description: "A plan is a task list the model can build and keep up to date while you work. Start one from any chat, or from Planning."
+keywords: ["Planning", "task list", "checklist", "steps"]
---
A plan turns a long answer into steps you can tick off. Start one from a thread with **Start a plan**, or from the **Planning** page with **New plan**. Plans are kept up to date as the work moves, and a plan started from a chat outlives that chat if you delete it.
diff --git a/chat/projects.mdx b/chat/projects.mdx
index 68b469e..c09d016 100644
--- a/chat/projects.mdx
+++ b/chat/projects.mdx
@@ -1,6 +1,7 @@
---
title: "Projects"
description: "A project keeps its own instructions, its chats, and its files together. Everything you say in a project's chats is read with those instructions in front of it."
+keywords: ["instructions", "folders", "workspace"]
---
A **project** is a folder with standing instructions. Create one for a piece of work you keep coming back to, give it instructions once, and every chat inside it starts from them. Projects belong to a signed-in account.
diff --git a/chat/quickstart.mdx b/chat/quickstart.mdx
index 3c5ef12..0809d10 100644
--- a/chat/quickstart.mdx
+++ b/chat/quickstart.mdx
@@ -2,6 +2,7 @@
title: "Chat quickstart"
description: "From an open tab to a useful first conversation — send, attach, pick a model, and keep the thread in a project."
image: "/images/banners/chat.png"
+keywords: ["tutorial", "first chat", "getting started", "first message"]
---
This walk-through takes about five minutes. Steps 1–3 work as a guest; step 4 needs a signed-in account.
diff --git a/chat/sharing.mdx b/chat/sharing.mdx
index e46dc33..4aa9587 100644
--- a/chat/sharing.mdx
+++ b/chat/sharing.mdx
@@ -1,6 +1,7 @@
---
title: "Sharing and teams"
description: "Cortex Chat is per account. What that means for threads, projects, plans, and files — and where team features live."
+keywords: ["teams", "invite", "collaboration", "privacy"]
---
Cortex Chat is a **per-account** product. Your threads, projects, Library, memory, and plans belong to your signed-in account and follow you across devices. Another account cannot see them, and there is no “invite a teammate to this thread” control.
diff --git a/chat/streaming.mdx b/chat/streaming.mdx
index f875c65..14e5f4a 100644
--- a/chat/streaming.mdx
+++ b/chat/streaming.mdx
@@ -1,6 +1,7 @@
---
title: "Streaming"
description: "Answers appear as they are written — tokens, then tools, then the finished reply. If the connection drops, the thread reconnects; you do not resend."
+keywords: ["tokens", "live reply", "reconnect"]
---
Chat streams. You see the answer being written rather than a block of text after the turn ends, and you can stop it at any point.
diff --git a/chat/tools.mdx b/chat/tools.mdx
index f3d5595..bd44762 100644
--- a/chat/tools.mdx
+++ b/chat/tools.mdx
@@ -1,6 +1,7 @@
---
title: "Tools and connectors"
-description: "Built-in Chat tools, connected apps under Customize → Connectors, GitHub in Settings → Integrations, and MCP servers — and which product each connection reaches."
+description: "Built-in Chat tools, connected apps under Customize → Connectors, GitHub in Settings → Integrations, and MCP servers."
+keywords: ["Customize", "Connectors", "integrations", "plugins", "MCP", "connected apps"]
---
A Chat turn can call tools. Some are built in — web search, Python snippets, image generation, memory, canvases. Others come from apps you connect, and from MCP servers you attach. This page explains where each lives and how to scope it.
diff --git a/chat/troubleshooting.mdx b/chat/troubleshooting.mdx
index a46228b..2262c4d 100644
--- a/chat/troubleshooting.mdx
+++ b/chat/troubleshooting.mdx
@@ -1,6 +1,7 @@
---
title: "Chat troubleshooting"
description: "What Chat shows when a turn, a file, a model, or a connection does not behave — and what to do about it."
+keywords: ["errors", "problems", "fixes", "not working"]
---
Chat says what is wrong in plain words rather than spinning. This page maps those messages to causes and fixes. For the whole app, see [Troubleshooting](/getting-started/troubleshooting); for the terminal, [CLI troubleshooting](/cli/troubleshooting).
diff --git a/chat/voice.mdx b/chat/voice.mdx
index 63f22da..b774b63 100644
--- a/chat/voice.mdx
+++ b/chat/voice.mdx
@@ -1,6 +1,7 @@
---
title: "Voice"
description: "Dictate with the mic and hear an answer with Listen. Both controls appear only when the deployment can transcribe or speak."
+keywords: ["dictation", "speech", "listen", "microphone", "text to speech"]
---
Chat has two voice controls: a **mic** in the composer for dictation, and **Listen** under each answer to hear it read aloud. Each appears only when the deployment behind it can actually do the work.
diff --git a/cli/configuration.mdx b/cli/configuration.mdx
index 803c065..de063a4 100644
--- a/cli/configuration.mdx
+++ b/cli/configuration.mdx
@@ -1,6 +1,7 @@
---
title: "Configuration"
description: "config.toml keys, profiles, precedence, the environment variables the CLI reads, where data lives on disk, and how to select the Cloud, This PC, or SSH host."
+keywords: ["config.toml", "settings", "environment variables", "profiles"]
---
Cortex reads a **global** config file, an optional **project** config file, and any overrides you pass on the command line — in that order, later sources winning. Environment variables sit between the files and the flags.
diff --git a/cli/extend.mdx b/cli/extend.mdx
index e30a7a6..1596992 100644
--- a/cli/extend.mdx
+++ b/cli/extend.mdx
@@ -1,6 +1,7 @@
---
title: "Extend the CLI"
description: "MCP servers, skills, agents and subagents, hooks, plugins, custom commands, and themes — every extension point in the Cortex CLI."
+keywords: ["MCP", "plugins", "hooks", "skills", "agents", "themes"]
---
The CLI ships with the tools a coding agent needs. You extend it in six ways: connect **MCP servers** for more tools, write **skills** for how a job is done, define **agents** for who is working, run **hooks** on lifecycle events, install **plugins**, and add **custom commands**.
diff --git a/cli/goal.mdx b/cli/goal.mdx
index f1d99fb..11e611a 100644
--- a/cli/goal.mdx
+++ b/cli/goal.mdx
@@ -1,6 +1,7 @@
---
title: "Goals"
-description: "/goal keeps a long-horizon objective attached to the session. It survives the end of a turn, context compaction, and resume — the agent keeps planning, acting, and verifying until the work is evidence-complete."
+description: "/goal attaches a long-horizon objective to the session. It survives compaction and resume while the agent keeps planning, acting, and verifying."
+keywords: ["objective", "long running", "/goal"]
---
A normal turn ends when the model stops. A **goal** does not: `/goal` attaches an objective to the session, and the agent keeps working toward it across turns — planning, acting, verifying — until the work is **evidence-complete**, until you pause or clear it, or until the budget runs out. The goal survives the end of a turn, context compaction, and closing and resuming the TUI.
diff --git a/cli/headless.mdx b/cli/headless.mdx
index f8e35cf..7ef9f59 100644
--- a/cli/headless.mdx
+++ b/cli/headless.mdx
@@ -1,6 +1,7 @@
---
title: "Headless and one-shot runs"
description: "cortex exec for CI and scripts — autonomy levels, JSON output, turn and time limits — and cortex run for a single streamed request from your own shell."
+keywords: ["CI", "automation", "exec", "scripts", "JSON output"]
---
Two entry points work without a terminal, so they are safe in pipelines where the TUI refuses to start:
diff --git a/cli/index.mdx b/cli/index.mdx
index fb055e6..df7cba6 100644
--- a/cli/index.mdx
+++ b/cli/index.mdx
@@ -1,7 +1,8 @@
---
title: "Cortex CLI"
-description: "Cortex Code in your terminal — an interactive session view, one-shot runs, headless mode for CI, and the extension points: MCP servers, skills, agents, hooks, plugins."
+description: "Cortex Code in your terminal — an interactive session view, one-shot runs, headless mode for CI, and the extension points."
image: "/images/banners/code.png"
+keywords: ["terminal", "command line", "cortex command"]
---
The Cortex CLI is **Cortex Code for the terminal**. One binary, `cortex`, gives you an interactive TUI with a live timeline and approvals, one-shot runs from your own shell, and a headless mode for scripts and CI. It uses the same account and the same Code sessions as the web and desktop apps, runs on the Cloud runtime by default, and never runs the model on your laptop.
diff --git a/cli/install.mdx b/cli/install.mdx
index 27d13ae..2754c66 100644
--- a/cli/install.mdx
+++ b/cli/install.mdx
@@ -1,6 +1,7 @@
---
title: "Install the CLI"
description: "Install Cortex CLI on macOS, Linux, or Windows. The installer verifies a SHA-256 checksum before it writes anything; cortex upgrade keeps it current."
+keywords: ["setup", "download", "upgrade", "update", "checksum"]
---
The installer downloads the release build for your platform from [software.cortex.foundation](https://software.cortex.foundation), verifies its SHA-256 checksum against the release manifest, and installs the binary. Nothing is written until the checksum matches.
diff --git a/cli/keyboard.mdx b/cli/keyboard.mdx
index fcbd426..d3fe21f 100644
--- a/cli/keyboard.mdx
+++ b/cli/keyboard.mdx
@@ -1,6 +1,7 @@
---
title: "Keyboard shortcuts"
description: "Every key binding in the Cortex CLI, grouped by where it applies. Press Ctrl+X in the TUI for the in-app overlay, or ? for help."
+keywords: ["shortcuts", "keybindings", "hotkeys"]
---
Press **Ctrl+X** at any time for the shortcuts overlay, or **?** / **F1** for help. The footer always shows one hint for the current context.
diff --git a/cli/modes-and-permissions.mdx b/cli/modes-and-permissions.mdx
index a7f6553..e7a6f56 100644
--- a/cli/modes-and-permissions.mdx
+++ b/cli/modes-and-permissions.mdx
@@ -1,6 +1,7 @@
---
title: "Modes and permissions"
-description: "Agent / Plan / Ask, the Spec lock, approval prompts, the sandbox, the permission table, and the model picker's effort radios — every control over what the CLI may do."
+description: "Agent / Plan / Ask, the Spec lock, approval prompts, the sandbox, the permission table, and the model picker's effort radios."
+keywords: ["Agent", "Plan", "Ask", "sandbox", "approvals", "autonomy"]
---
Every CLI session runs under three controls: a **mode** that decides which tools the model is even offered, an **approval policy** that decides when you are asked, and a **sandbox** that decides what a tool may touch when it runs. Effort, on the model picker, decides how hard the model thinks.
diff --git a/cli/quickstart.mdx b/cli/quickstart.mdx
index b44439b..407c345 100644
--- a/cli/quickstart.mdx
+++ b/cli/quickstart.mdx
@@ -2,6 +2,7 @@
title: "CLI quickstart"
description: "From nothing installed to a working Cortex Code session in the terminal — install, sign in, first turn, AGENTS.md, and how much autonomy to grant."
image: "/images/banners/code.png"
+keywords: ["tutorial", "first run", "getting started"]
---
Ten minutes, end to end. The TUI and `cortex exec` run on the **Cloud** Code runtime by default, so a fresh install completes a turn without any extra configuration.
diff --git a/cli/sessions.mdx b/cli/sessions.mdx
index 30bc42e..78223ff 100644
--- a/cli/sessions.mdx
+++ b/cli/sessions.mdx
@@ -1,6 +1,8 @@
---
-title: "Sessions"
+title: "CLI sessions"
+sidebarTitle: "Sessions"
description: "Every interactive run is a session written to disk as you go — list, resume, rewind, fork, export, import, share, lock, and clean up."
+keywords: ["resume", "fork", "rewind", "export", "share", "history"]
---
Every interactive run is a session: the transcript, the tool calls, and the context Cortex built up along the way. Sessions are written to disk as you go, so you can close the terminal and pick the work back up later. The CLI also remembers the server-side Code session id for each workspace, so terminal turns continue the same coding session you see in the web app.
diff --git a/cli/sign-in.mdx b/cli/sign-in.mdx
index 6d8ad44..965b00e 100644
--- a/cli/sign-in.mdx
+++ b/cli/sign-in.mdx
@@ -1,6 +1,7 @@
---
title: "Sign in"
-description: "cortex login opens the browser flow; a device code covers machines without one; API keys and tokens cover CI. Credentials live in your OS keyring, never in a file in the repository."
+description: "cortex login opens the browser flow; a device code covers machines without one; API keys cover CI. Credentials live in your OS keyring."
+keywords: ["login", "authentication", "API key", "device code", "token"]
---
The CLI uses the same Cortex account as the web app. Sign in once per machine; the session is stored in your operating system's keyring.
diff --git a/cli/slash-commands.mdx b/cli/slash-commands.mdx
index b956052..2504a7b 100644
--- a/cli/slash-commands.mdx
+++ b/cli/slash-commands.mdx
@@ -1,6 +1,7 @@
---
title: "Slash commands"
description: "Everything you can type after / in the Cortex CLI composer — model, mode, permissions, plan, goal, sessions, files, MCP, diagnostics — and how to add your own."
+keywords: ["commands", "/help", "/model", "/goal", "palette"]
---
Type `/` in the composer to open the command list. It shows the most-used commands first and filters as you type; the trailer *N more — keep typing to filter* means there is more below. A line beginning with `/` that is not a known command is sent to the agent as an ordinary message.
diff --git a/cli/troubleshooting.mdx b/cli/troubleshooting.mdx
index 9ded827..d068b7c 100644
--- a/cli/troubleshooting.mdx
+++ b/cli/troubleshooting.mdx
@@ -1,6 +1,7 @@
---
title: "CLI troubleshooting"
-description: "Start with four commands, then work through the product-facing messages — the coding service, hosts that refuse, the agent that will not edit, MCP, quotas, timeouts, disk."
+description: "Start with four commands, then work through the messages — the coding service, hosts that refuse, the agent that will not edit, MCP, quotas, timeouts."
+keywords: ["errors", "problems", "fixes", "not working"]
---
## Start here
diff --git a/cli/tui.mdx b/cli/tui.mdx
index 2073eec..3b62ac4 100644
--- a/cli/tui.mdx
+++ b/cli/tui.mdx
@@ -1,6 +1,7 @@
---
title: "The TUI"
-description: "What is on screen when you run cortex — the timeline and its rows, the composer, the status line, the footer, queueing follow-ups, interrupting, and the panels behind Ctrl+K."
+description: "What is on screen when you run cortex — the timeline and its rows, the composer, the status line, queueing follow-ups, and the panels behind Ctrl+K."
+keywords: ["interface", "screen", "layout", "panels"]
---
`cortex` with a terminal attached starts the interactive UI. It takes the full viewport by default (the alternate screen) and gives you three things: a **timeline** of the conversation and the agent's work, a **composer** at the bottom, and a **footer** with the model, the mode, and the most useful shortcut.
diff --git a/code/cli.mdx b/code/cli.mdx
index eec5c96..daf9636 100644
--- a/code/cli.mdx
+++ b/code/cli.mdx
@@ -1,6 +1,7 @@
---
title: "Code in the terminal"
-description: "The Cortex CLI drives the same Code sessions from a terminal — interactive, one-shot, or headless in CI. Same account, Cloud by default, This PC and SSH by opt-in."
+description: "The Cortex CLI drives the same Code sessions from a terminal — interactive, one-shot, or headless in CI. Same account, Cloud by default."
+keywords: ["terminal", "command line"]
---
The Cortex CLI is Cortex Code for the terminal. One binary, `cortex`, gives you an interactive session view, one-shot runs from your shell, and a headless mode for scripts and CI. It talks to the same Code sessions as the web and desktop apps and signs in with the same account. The full documentation lives in the [CLI tab](/cli); this page is the map from Code concepts to CLI commands.
diff --git a/code/cloud.mdx b/code/cloud.mdx
index d806be6..64853bb 100644
--- a/code/cloud.mdx
+++ b/code/cloud.mdx
@@ -1,6 +1,7 @@
---
title: "Cloud runtimes"
description: "Every web Code session runs in its own isolated Cloud guest, prepared by the agent for that repository. Not the Chat Python sandbox, not the API process."
+keywords: ["runtime", "guest", "sandbox", "environment"]
---
Web Code runs your repository in an **isolated Cloud guest** — a headless virtual machine on the same farm as Bot computers. The guest is started for the session, attached, and prepared by the agent. Workspace tools execute inside it and nowhere else.
diff --git a/code/desktop.mdx b/code/desktop.mdx
index fa4b905..9a0fa87 100644
--- a/code/desktop.mdx
+++ b/code/desktop.mdx
@@ -1,6 +1,7 @@
---
title: "Code on desktop"
description: "This PC and SSH hosts for Code sessions exist on the desktop app and the CLI. The browser stays Cloud-only — that is where the code runs, not a missing feature."
+keywords: ["This PC", "SSH", "local", "app"]
---
In the browser, a Code session runs in the Cloud. Install the [Cortex desktop app](/getting-started/desktop) or the [CLI](/cli) and two more hosts appear: **This PC**, which runs the workspace tools on your own machine, and **SSH**, which runs them over the shell of a host you register.
diff --git a/code/github.mdx b/code/github.mdx
index 057d093..bbbbfcb 100644
--- a/code/github.mdx
+++ b/code/github.mdx
@@ -1,6 +1,7 @@
---
title: "Connect GitHub"
-description: "Cortex Code reaches repositories through Connect GitHub — on Code Home, in the repository picker, and under Settings → Integrations. No personal-access-token field."
+description: "Cortex Code reaches repositories through Connect GitHub — on Code Home, in the repository picker, and under Settings → Integrations."
+keywords: ["repository", "repos", "connection", "Reconnect"]
---
Code needs a repository to work on. You give it one by connecting GitHub from the product; Cortex then lists the repositories the grant covers and starts sessions on them. The same connection adds GitHub tools to Chat.
diff --git a/code/how-it-works.mdx b/code/how-it-works.mdx
index 2f707bc..8c97c0c 100644
--- a/code/how-it-works.mdx
+++ b/code/how-it-works.mdx
@@ -1,6 +1,7 @@
---
title: "How Code works"
-description: "Workspace tools execute inside the attached Cloud guest — never in the API process, never in Chat's Python sandbox. Modes withhold mutating tools; compaction fails closed."
+description: "Workspace tools execute inside the attached guest — never in the API process or Chat sandbox. Modes withhold mutating tools; compaction fails closed."
+keywords: ["tool loop", "context", "compaction"]
---
A Code turn is a tool loop like Chat's, with two differences that define the product: the tools operate on a real repository inside an isolated guest, and the mode you choose decides which tools the model is offered at all.
diff --git a/code/index.mdx b/code/index.mdx
index 938ced1..9f5a4b5 100644
--- a/code/index.mdx
+++ b/code/index.mdx
@@ -1,7 +1,8 @@
---
title: "Cortex Code"
-description: "A coding agent that works inside your repository on an isolated runtime. Sessions, Ask / Plan / Agent, GitHub, Cloud guests, desktop hosts, and pull-request review."
+description: "A coding agent that works inside your repository on an isolated runtime — sessions, Ask / Plan / Agent, GitHub, Cloud guests, and review."
image: "/images/banners/code.png"
+keywords: ["coding agent", "repository", "developer"]
---
Cortex Code is a coding agent, not a chat with a different icon. You point it at a repository, describe the change, and it works through the task inside an isolated runtime — reading, editing, running your build and tests — while you watch a timeline of what it did and decide how much it may do on its own.
diff --git a/code/interactions.mdx b/code/interactions.mdx
index f1ed3b2..62aacd2 100644
--- a/code/interactions.mdx
+++ b/code/interactions.mdx
@@ -1,6 +1,7 @@
---
title: "Ask, Plan, Agent"
-description: "Choose how much a Code turn may change. Ask reads and explains, Plan proposes, Agent edits and runs. The choice rides on the turn; the session row holds the default."
+description: "Choose how much a Code turn may change. Ask reads and explains, Plan proposes, Agent edits and runs. The choice rides on the turn."
+keywords: ["Ask", "Plan", "Agent", "modes", "permissions"]
---
Every Code turn runs in one of three modes. Pick it on the turn, or leave the session's default. A follow-up can pick a different mode — tighten to Ask to understand, widen to Agent to ship.
diff --git a/code/quickstart.mdx b/code/quickstart.mdx
index 4db82cc..e109efb 100644
--- a/code/quickstart.mdx
+++ b/code/quickstart.mdx
@@ -2,6 +2,7 @@
title: "Code quickstart"
description: "Sign in, connect GitHub, start a Cloud session on a repository, and read the timeline — in the web app."
image: "/images/banners/code.png"
+keywords: ["tutorial", "first session", "getting started", "repository"]
---
This quickstart uses the web app, where Code runs in the Cloud. For This PC or SSH, use the [desktop app](/code/desktop) or the [CLI](/cli/quickstart).
diff --git a/code/security.mdx b/code/security.mdx
index 9f62465..4fe509a 100644
--- a/code/security.mdx
+++ b/code/security.mdx
@@ -1,6 +1,7 @@
---
title: "Cortex Security"
-description: "GitHub pull-request review without pasting a diff. The change stays in the repository; Cortex reads it there and posts a check run that stays failed when it fails."
+description: "GitHub pull-request review without pasting a diff. Cortex reads the change in place and posts a check run that stays failed when it fails."
+keywords: ["pull request review", "check run", "GitHub App"]
---
Cortex Security reviews GitHub pull requests in place. Install its GitHub App from the product, and each pull request gets one review pass posted as a check run named **Cortex Security**. A review that could not run is stored as failed — never rewritten as an approval so a dashboard can look green.
diff --git a/code/sessions.mdx b/code/sessions.mdx
index b23039a..655bb0b 100644
--- a/code/sessions.mdx
+++ b/code/sessions.mdx
@@ -1,6 +1,8 @@
---
-title: "Sessions"
+title: "Code sessions"
+sidebarTitle: "Sessions"
description: "A Code session is a timeline of the task you asked for and the work that followed — files read, edits, commands, plans — not a chat transcript."
+keywords: ["timeline", "task", "transcript", "run"]
---
A session is where Code does its work on one repository. It records every turn as a timeline: what you asked, which files the agent read, what it edited, which commands it ran, and the plan it wrote when you asked for one. You can stop a turn at any point and follow up with another.
diff --git a/code/troubleshooting.mdx b/code/troubleshooting.mdx
index 5d30ce7..d23917d 100644
--- a/code/troubleshooting.mdx
+++ b/code/troubleshooting.mdx
@@ -1,6 +1,7 @@
---
title: "Code troubleshooting"
description: "Gates, Reconnect, Cloud availability, modes that will not edit, and what a failed Cortex Security review means."
+keywords: ["errors", "problems", "fixes", "not working"]
---
Code tells you what is wrong in plain words. This page maps those words to causes and fixes. For the terminal, see [CLI troubleshooting](/cli/troubleshooting); for the rest of the app, [Troubleshooting](/getting-started/troubleshooting).
diff --git a/design/canvases.mdx b/design/canvases.mdx
index 558f0b7..f7bd504 100644
--- a/design/canvases.mdx
+++ b/design/canvases.mdx
@@ -1,6 +1,8 @@
---
-title: "Canvases"
+title: "Design canvases"
+sidebarTitle: "Canvases"
description: "Boards you host from Chat or Code — frames, notes, options, and the host binding. Default title Untitled canvas; deleting hides it from the list."
+keywords: ["board", "frames", "notes", "options"]
---
A Design canvas starts life as **Untitled canvas**, created the moment Chat or Code writes to it. It belongs to your account, remembers which conversation or session hosted it, and is edited in the [Design desktop app](/design/desktop).
diff --git a/design/desktop.mdx b/design/desktop.mdx
index 5993e85..ddc57f8 100644
--- a/design/desktop.mdx
+++ b/design/desktop.mdx
@@ -1,6 +1,7 @@
---
title: "Design desktop"
description: "The working UI for Cortex Design is a separate desktop app. Chat and Code create canvases; you edit them here."
+keywords: ["app", "download", "editor"]
---
The Design working UI is a desktop app of its own. The web app creates and lists canvases when Chat or Code hosts one; editing frames, notes, options, and the Library drawer happens here.
diff --git a/design/index.mdx b/design/index.mdx
index cdcd379..3ea9315 100644
--- a/design/index.mdx
+++ b/design/index.mdx
@@ -2,6 +2,7 @@
title: "Cortex Design"
description: "Persistable canvases hosted from Chat or Code and edited in the Design desktop app. Frames, notes, options, and a Library of components, pages, and tokens."
image: "/images/banners/design.png"
+keywords: ["canvas", "board", "UI design", "mockups"]
---
Cortex Design is where visual work lives. A canvas is a board of frames, notes, and options that you host from a Chat conversation or a Code session and then open in the **Design desktop app** to work on. There is no Design mode in the web shell: the browser creates and lists canvases, the desktop app is where you edit them.
diff --git a/design/library.mdx b/design/library.mdx
index 17e2d9a..95fe4f5 100644
--- a/design/library.mdx
+++ b/design/library.mdx
@@ -1,6 +1,7 @@
---
title: "Design library"
description: "Components, pages, and tokens you reuse across canvases. Thumbnails are uploaded, not rendered on this site. Not the same object as Chat's file Library."
+keywords: ["components", "tokens", "assets", "design system"]
---
The Design library holds the reusable pieces of your visual work: **components** you place on frames, **pages** you build from them, and **tokens** — colours, spacing, type — that keep everything consistent. It lives in the Library drawer of a canvas in the Design desktop app and belongs to your signed-in account.
diff --git a/getting-started/accounts.mdx b/getting-started/accounts.mdx
index 8220bcf..76b8b01 100644
--- a/getting-started/accounts.mdx
+++ b/getting-started/accounts.mdx
@@ -1,6 +1,7 @@
---
title: "Accounts and sign-in"
description: "Chat works as a guest. Sign in once for projects, files, Code, Bot, and the CLI — the same account everywhere."
+keywords: ["guest", "sign in", "membership", "plan"]
---
You sign in from the product: choose **Sign in to save your work** in the sidebar footer, or the **Sign in** button on any public page at [cortex.foundation](https://cortex.foundation). This site describes what the account unlocks; it does not document the sign-in protocol.
diff --git a/getting-started/desktop.mdx b/getting-started/desktop.mdx
index 50af291..3e9d20e 100644
--- a/getting-started/desktop.mdx
+++ b/getting-started/desktop.mdx
@@ -1,6 +1,7 @@
---
title: "Desktop app (Chat + Code)"
description: "The Cortex desktop app carries Chat and Code, and adds This PC and SSH hosts for Code sessions. The browser stays Cloud-only."
+keywords: ["app", "This PC", "SSH", "local"]
---
The Cortex desktop app is the same Chat and Code you know from the browser, with one addition that only a native app can offer: Code sessions can run on **This PC** or over **SSH** as well as in the Cloud. Download it from [releases.cortex.foundation](https://releases.cortex.foundation) and sign in when the app asks — same account as the web.
diff --git a/getting-started/downloads.mdx b/getting-started/downloads.mdx
index 0afd773..102da94 100644
--- a/getting-started/downloads.mdx
+++ b/getting-started/downloads.mdx
@@ -1,6 +1,7 @@
---
title: "Downloads"
description: "Every way to run Cortex — the web app, the Cortex desktop app for Chat and Code, the Bot desktop app, the Design desktop app, and the CLI."
+keywords: ["install", "apps", "desktop", "releases"]
---
Cortex runs in the browser without installing anything. Download an app when you need a host the browser cannot offer: **This PC** and **SSH** for Code, a desktop home for your bots, or the Design working UI.
diff --git a/getting-started/plans.mdx b/getting-started/plans.mdx
index c3f3303..e6ae2ed 100644
--- a/getting-started/plans.mdx
+++ b/getting-started/plans.mdx
@@ -1,6 +1,7 @@
---
title: "Plans and quotas"
description: "Guest, Free, Go, Plus, and Pro as listed in Settings → Plan & billing. Quotas fail closed and tell you when they reset."
+keywords: ["pricing", "quotas", "limits", "billing", "Free", "Go", "Plus", "Pro"]
---
Your plan, today's usage, and the reset timers live under **Settings → Plan & billing**. The product is the source of truth for numbers; this page explains what each plan is for and how limits behave.
diff --git a/getting-started/quickstart.mdx b/getting-started/quickstart.mdx
index 347c2e1..7ee2863 100644
--- a/getting-started/quickstart.mdx
+++ b/getting-started/quickstart.mdx
@@ -2,6 +2,7 @@
title: "Quickstart"
description: "Open Cortex in a browser, get a first answer from Chat, then sign in for Code, Bot, and Design."
image: "/images/banners/getting-started.png"
+keywords: ["tutorial", "first steps", "getting started", "onboarding"]
---
Cortex is one account across four products: **Chat**, **Code**, **Bot**, and **Design**, plus a **CLI** for the terminal. This page takes you from a browser tab to a useful first session in about five minutes.
diff --git a/getting-started/settings.mdx b/getting-started/settings.mdx
index bbb2e71..00ec2e8 100644
--- a/getting-started/settings.mdx
+++ b/getting-started/settings.mdx
@@ -1,6 +1,7 @@
---
title: "Settings"
description: "Theme, language, answer font, keyboard shortcuts, default models, integrations, privacy, and billing — everything under Settings in the web app."
+keywords: ["preferences", "theme", "language", "shortcuts", "privacy"]
---
Open **Settings** from the sidebar footer, or go to `cortex.foundation/settings`. It is a panel with two sections: **Preferences** (General, Models, Integrations, Code) and **Account** (Data & privacy, Plan & billing). Guests can browse it; account controls unlock after you sign in.
diff --git a/getting-started/troubleshooting.mdx b/getting-started/troubleshooting.mdx
index 903d164..e8c3789 100644
--- a/getting-started/troubleshooting.mdx
+++ b/getting-started/troubleshooting.mdx
@@ -1,6 +1,7 @@
---
title: "Troubleshooting"
description: "What the web app shows when something is off, what it means, and what to do — gates, quotas, reconnects, and product-facing errors."
+keywords: ["errors", "problems", "fixes", "not working", "support"]
---
Cortex prefers a clear message over a spinner. When something cannot run, the product says so in plain words and, where it can, tells you what to do next. This page collects those messages across Chat, Code, and Bot. The CLI has [its own page](/cli/troubleshooting).
diff --git a/getting-started/what-is-cortex.mdx b/getting-started/what-is-cortex.mdx
index 08b36fc..9eb80cf 100644
--- a/getting-started/what-is-cortex.mdx
+++ b/getting-started/what-is-cortex.mdx
@@ -2,6 +2,7 @@
title: "What is Cortex"
description: "Four products and a CLI behind one account on cortex.foundation — Chat, Code, Bot, Design, and the Cortex CLI."
image: "/images/banners/getting-started.png"
+keywords: ["overview", "products", "comparison"]
---
Cortex is built by the Cortex Foundation, a research-first lab. The products share one account, one domain, and one set of models. Use **Chat** for conversation and research, **Code** for a repository, **Bot** for an always-on teammate with its own computer, **Design** for persistable canvases, and the **CLI** to drive Code from a terminal.
diff --git a/images/product/README.md b/images/product/README.md
index 65bc079..206cfcf 100644
--- a/images/product/README.md
+++ b/images/product/README.md
@@ -15,7 +15,7 @@ Cream / ink / `#1F4945` stay on site chrome. The pixels are the app.
| `chat-home-recents.png` | Chat home with Recents populated | `index` |
| `chat-home-dark.png` | Chat home, Dark theme | `chat/index` |
| `chat-home-fr.png` | Chat home, French interface | `getting-started/what-is-cortex` |
-| `chat-session.png` | A thread with a one-paragraph reply | `chat/overview` |
+| `chat-session.png` | A thread with a one-paragraph reply | `chat/index` |
| `chat-composer-typed.png` | A multi-line prompt typed in the composer | `chat/quickstart` |
| `chat-composer-menu.png` | The composer `+` menu: Attach file, Image, Check origin | `chat/images` |
| `chat-model-picker.png` | Model chip open: models, Thinking, Deep Research | `chat/models` |
@@ -54,10 +54,10 @@ Cream / ink / `#1F4945` stay on site chrome. The pixels are the app.
| File | Surface | Used on |
| --- | --- | --- |
| `code-public.png` | `cortex.foundation/code` public page | `code/index` |
-| `code-public-features.png` | Same page, feature grid | `code/overview` |
+| `code-public-features.png` | Same page, feature grid | `code/index` |
| `code-home.png` | Code guest gate (“This space is reserved”) | `code/quickstart` |
| `bot-public.png` | `cortex.foundation/bot` public page | `bot/index` |
-| `bot-public-features.png` | Same page, feature grid | `bot/overview` |
+| `bot-public-features.png` | Same page, feature grid | `bot/index` |
| `bot-home.png` | Bot guest gate | `bot/quickstart` |
| `security-public.png` | `cortex.foundation/security` public page | `code/security` |
| `security-public-features.png` | Same page, feature grid | `code/security` |
diff --git a/index.mdx b/index.mdx
index 31413a8..0bfdedb 100644
--- a/index.mdx
+++ b/index.mdx
@@ -2,6 +2,7 @@
title: "Guides for Chat, Code, Bot, Design, and the CLI"
description: "Product docs for the Cortex app — how to chat, ship code, run bots, design canvases, and drive Code from a terminal. Platform API lives elsewhere."
image: "/images/banners/getting-started.png"
+keywords: ["Cortex docs", "documentation", "help", "guides"]
---
docs.cortex.foundation
diff --git a/platform.mdx b/platform.mdx
index 5935b78..6c8eadf 100644
--- a/platform.mdx
+++ b/platform.mdx
@@ -1,6 +1,7 @@
---
title: "Platform API"
description: "Coming soon. There is no public inference API to document yet — no endpoints, SDKs, or API keys."
+keywords: ["inference API", "completions", "roadmap", "coming soon"]
---
Cortex does not have a public inference API today. There is no completions
diff --git a/problems/index.mdx b/problems/index.mdx
index 6e0f794..6136bc7 100644
--- a/problems/index.mdx
+++ b/problems/index.mdx
@@ -1,6 +1,7 @@
---
title: "Problem catalog"
description: "Every Cortex error code, its HTTP status, whether retrying helps, and the page that explains it."
+keywords: ["error codes", "troubleshooting", "status codes"]
---
Every Cortex failure carries a `code` and a `type`. The `type` is a URL that resolves to a page on this site, so an error message can point at its own explanation.
diff --git a/security/overview.mdx b/security/overview.mdx
index f14d824..7339731 100644
--- a/security/overview.mdx
+++ b/security/overview.mdx
@@ -2,6 +2,7 @@
title: "Security and privacy"
description: "What Cortex stores, what it never stores, which cookies run, where your code executes, and how to export or delete your data."
image: "/images/banners/security.png"
+keywords: ["privacy", "data", "cookies", "storage", "export", "delete"]
---
This page is about **how Cortex handles your data and where code runs**. It is not a status page, and it is not the [Cortex Security](/code/security) product that reviews pull requests.
diff --git a/status.mdx b/status.mdx
index a81a568..b38cc13 100644
--- a/status.mdx
+++ b/status.mdx
@@ -1,6 +1,7 @@
---
title: "System status"
description: "Live availability for Cortex Web, API, Chat, Code, and Bot — incidents, maintenance, and history."
+keywords: ["uptime", "outage", "incident", "maintenance", "availability"]
---