> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xpander.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Desktop AI clients

> Claude Code, Codex, Cursor, OpenCode, Claude Desktop and ChatGPT: which run as harnesses inside xpander, which connect from a laptop, and what each connection carries.

The same names appear in two roles. As a **harness**, the client runs inside xpander in a cloud session. As a **desktop client**, it runs on a laptop and reaches xpander over MCP.

## As harnesses inside xpander

| Harness     | Runs on xpander    | Default when the organization's default provider is  |
| ----------- | ------------------ | ---------------------------------------------------- |
| Claude Code | Yes                | Anthropic, or Amazon Bedrock with an Anthropic model |
| Codex       | Yes                | OpenAI                                               |
| OpenCode    | Yes                | Any other provider the gateway routes                |
| Cursor      | Not selectable yet |                                                      |

Each conversation runs in its own isolated sandbox with memory and CPU limits. It receives the approved skills and a short-lived token for the [AI gateway](/run/integrations/ai-gateway) instead of a provider key, and every turn is recorded on the conversation's task. The composer can switch a conversation to another of Claude Code, Codex or OpenCode, or to another model, and the history carries over.

## As desktop clients

Any MCP client, Claude Code, Claude Desktop, Cursor, ChatGPT or another, can connect to either endpoint. The two differ in what is behind them, not in which client they accept.

| Endpoint                      | What is behind it                                                                                                                                                                                                                               | Auth                                                               |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| `https://omni.xpander.ai/mcp` | Omni, the built-in agent, as one endpoint for everything you can do through Xpander Chat and Omni: find and task the organization's agents, assemble skills and agents from what your admins approved, start cloud sessions, ask what a run did | OAuth 2.1 in the browser, per person                               |
| `https://api.xpander.ai/mcp/` | The xpander API itself, control plane and data plane, exposed over MCP: agents, tasks and threads, skills and their operations, custom functions, workspace files, schedules, usage. It is not an agent; each operation is one API call         | OAuth 2.1, per person; an API key is not accepted on this endpoint |

Connect a person's own client to Omni: one URL covers everything Xpander Chat offers, and a request like "Deploy this agent to xpander as a scheduled task" ends with an agent running in a cloud session. Connect an integration or an automation to the API endpoint when it needs the raw calls, listing agents, starting tasks and reading threads, without an agent deciding in between. Setup per client: [Connect your MCP client](/guides/deploy/omni-mcp) for Omni, [Model Context Protocol](/api-reference/mcp) for the API.

On a self-hosted install the endpoint exists once the chart sets `global.mcp.publicUrl`; until then Settings > Channels lists MCP as not configured on this install.

## What is different between the two roles

| On the laptop                                              | In a cloud session                                                                |
| ---------------------------------------------------------- | --------------------------------------------------------------------------------- |
| The client holds its own provider key and calls the vendor | The session holds a gateway token; the controller holds the key                   |
| Actions run when the model decides                         | Risky actions wait for a named person's approval                                  |
| History lives on the laptop                                | Every task, skill call and answer is in the record                                |
| Runs while the laptop is open                              | Runs unattended and answers in Xpander Chat, Slack, Teams, email or on a schedule |
