Skip to content

Self-Hosted Claude Code Web UI and Desktop App ​

Clusto gives Claude Code a graphical interface that runs against your own machines. You install a small daemon (clustod) on a server or workstation, and Claude Code runs there. You use it through a desktop app for Windows and Linux, an Android app, or a web app in the browser. All of them show the same sessions, and your code and sessions stay on your nodes.

One detail on what "self-hosted" means here. The daemon, the sessions and your files are yours and run on hardware you control. The web app's static files are served from clusto.app, and the web client signs in with a Clusto account. The web client then connects straight to your daemon.

One app, three forms ​

The Clusto app is one codebase shipped three ways:

  • Desktop app for Windows (installer) and Linux (.deb, .rpm, AppImage and tarball). There is no native macOS build in the current release.
  • Android app, distributed as an APK from the download page.
  • Web app at clusto.app/app, installable as a PWA. It is the way to use Clusto on iPhone, iPad and macOS today. On iPhone and iPad, Safari's Add to Home Screen gives you a standalone app.

Get any of them from clusto.app/download. See Downloads and Installation for the platform list and Web Client (PWA) for browser details.

The daemon runs your agents ​

The apps are clients. Install the daemon on the machine where you want Claude Code to run:

bash
curl -fsSL https://dl.clusto.app/install.sh | sh
clusto install

On Windows, use the PowerShell installer from the same page. Then add the node's host, port and token under Connection in the app. You can connect several nodes, and the app lists sessions from all of them. For the full path on a server, see Run Claude Code on a Server or VPS.

The web client needs a way to reach the node over wss://, because browsers block plain ws:// from an HTTPS page. Use a Tailscale MagicDNS name with a certificate from clusto cert, a domain with its own certificate, or Clusto Tunnel, which relays the web app without TLS setup on the node. There is no offline mode: the web client needs a live daemon connection.

Terminal sessions or chats ​

Clusto offers two ways to talk to an agent.

Terminal sessions run the real Claude Code CLI in a terminal on the node. This is the full interface you know, rendered in the app, with split panes, scrollback and a key bar for phones. Sessions persist on the daemon, so you can close the app and reattach later. See Terminal Workspace and Terminal History.

Chats are a conversation view with a durable transcript. Pick Claude, Codex, OpenCode or OpenRouter as the provider when you create a chat. A chat shows:

  • Markdown replies with syntax-highlighted code blocks, tables and Mermaid diagrams, with a Copy button on each code block.
  • A Permission needed card when Claude wants to use a tool, so you can review the full input and approve it. Claude's questions render as selectable options.
  • A message queue and a steer option, so you can line up follow-ups or interrupt a reply.
  • Pasted images and files, with limits of 10 MiB per file and 16 files per message.
  • Model, effort and permission chips under the message box, a workspace per chat, and a pin to a specific cluster node.

Chats suit a phone, where a conversation is easier to read than a terminal. See Chats.

Files, git, notes and tasks ​

Beside the agent, the app has the tools you reach for while reviewing its work:

  • A file explorer in the sidebar for the active project, and a Files view for browsing any path on a node, with preview, upload and download.
  • A built-in editor with conflict detection when a file changes on disk.
  • A git panel with status, diffs, commit, pull and push.
  • A Run panel for project commands.
  • A Notes vault of Markdown files that agents can read and write.
  • Scheduled Tasks that run commands, including claude -p, on a cron or interval schedule.

The F1 command palette reaches every action from the keyboard. On the desktop app you can also move a terminal, note or chat into its own window; see Separate Desktop Windows.

Alerts when an agent needs you ​

A ? marks sessions where an agent is waiting for an answer, and you can get a notification with a Copy button for the prompt. The desktop and Android apps raise popups when a session goes idle, and Android can check for missed alerts about every 15 minutes while closed. See Agent Waiting Marker and Background Notifications.

FAQ ​

Is this the same as Claude Code on the web? ​

No. Anthropic's hosted offerings run in Anthropic's environment or relay your session through their service. Clusto runs the agents on machines you install the daemon on and connects your devices to them. If you do not want to install anything on a server, Anthropic's own options may suit you better.

Does it work with Codex and OpenCode? ​

Yes. Chats support Claude, Codex, OpenCode and OpenRouter, and terminal sessions can run any CLI, including GitHub Copilot CLI.

Do I need an account? ​

You need a Clusto license. The Personal plan is free for one user on up to three native devices, and it is claimed at clusto.app/pricing. The web client checks your license when you sign in and does not use a device slot. See Accounts and Licensing.

Does the desktop app bundle the daemon? ​

No. The app connects to a daemon you install separately, on the same machine or another one. It does not install or manage a local service.

Is it open source? ​

No. Clusto is proprietary software.

Get started ​

  1. Download the desktop or Android app from clusto.app/download, or open clusto.app/app.
  2. Install the daemon with the commands in Downloads and Installation.
  3. Add the node under Connection, then start a session or a chat.

Clusto - remote AI coding agents over WebSocket.