Skip to main content
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

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 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. 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 for Omni, Model Context Protocol 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