Haileyesus 2e86197b9b feat(server): add a real backend TypeScript build and enforce module boundaries
The backend had started to grow beyond what the frontend-only tooling setup could
support safely. We were still running server code directly from /server, linting
mainly the client, and relying on path assumptions such as "../.." that only
worked in the source layout. That created three problems:

- backend alias imports were hard to resolve consistently in the editor, ESLint,
  and the runtime
- server code had no enforced module boundary rules, so cross-module deep imports
  could bypass intended public entry points
- building the backend into a separate output directory would break repo-level
  lookups for package.json, .env, dist, and public assets because those paths
  were derived from source-only relative assumptions

This change makes the backend tooling explicit and runtime-safe.

A dedicated backend TypeScript config now lives in server/tsconfig.json, with
tsconfig.server.json reduced to a compatibility shim. This gives the language
service and backend tooling a canonical project rooted in /server while still
preserving top-level compatibility for any existing references. The backend alias
mapping now resolves relative to /server, which avoids colliding with the
frontend's "@/..." -> "src/*" mapping.

The package scripts were updated so development runs through tsx with the backend
tsconfig, build now produces a compiled backend in dist-server, and typecheck/lint
cover both client and server. A new build-server.mjs script runs TypeScript and
tsc-alias and cleans dist-server first, which prevents stale compiled files from
shadowing current source files after refactors.

To make the compiled backend behave the same as the source backend, runtime path
resolution was centralized in server/utils/runtime-paths.js. Instead of assuming
fixed relative paths from each module, server entry points now resolve the actual
app root and server root at runtime. That keeps package.json, .env, dist, public,
and default database paths stable whether code is executed from /server or from
/dist-server/server.

ESLint was expanded from a frontend-only setup into a backend-aware one. The
backend now uses import resolution tied to the backend tsconfig so aliased imports
resolve correctly in linting, import ordering matches the frontend style, and
unused/duplicate imports are surfaced consistently.

Most importantly, eslint-plugin-boundaries now enforces server module boundaries.
Files under server/modules can no longer import another module's internals
directly. Cross-module imports must go through that module's barrel file
(index.ts/index.js). boundaries/no-unknown was also enabled so alias-resolution
gaps cannot silently bypass the rule.

Together, these changes make the backend buildable, keep runtime path resolution
stable after compilation, align server tooling with the client where appropriate,
and enforce a stricter modular architecture for server code.
2026-04-14 22:02:00 +03:00
2026-03-10 17:44:11 +01:00
2026-03-09 13:00:52 +03:00
2025-12-30 17:49:30 +00:00
2026-04-10 13:36:05 +00:00
2026-03-29 00:57:09 +00:00
2026-03-29 00:57:09 +00:00
2025-07-11 10:29:36 +00:00
2025-10-31 09:45:35 +01:00

CloudCLI UI

Cloud CLI (aka Claude Code UI)

A desktop and mobile UI for Claude Code, Cursor CLI, Codex, and Gemini-CLI.
Use it locally or remotely to view your active projects and sessions from everywhere.

CloudCLI Cloud · Documentation · Discord · Bug Reports · Contributing

CloudCLI Cloud Join our Discord

siteboon%2Fclaudecodeui | Trendshift


Screenshots

Desktop View

Desktop Interface
Main interface showing project overview and chat

Mobile Experience

Mobile Interface
Responsive mobile design with touch navigation

CLI Selection

CLI Selection
Select between Claude Code, Gemini, Cursor CLI and Codex

Features

  • Responsive Design - Works seamlessly across desktop, tablet, and mobile so you can also use Agents from mobile
  • Interactive Chat Interface - Built-in chat interface for seamless communication with the Agents
  • Integrated Shell Terminal - Direct access to the Agents CLI through built-in shell functionality
  • File Explorer - Interactive file tree with syntax highlighting and live editing
  • Git Explorer - View, stage and commit your changes. You can also switch branches
  • Session Management - Resume conversations, manage multiple sessions, and track history
  • Plugin System - Extend CloudCLI with custom plugins — add new tabs, backend services, and integrations. Build your own →
  • TaskMaster AI Integration (Optional) - Advanced project management with AI-powered task planning, PRD parsing, and workflow automation
  • Model Compatibility - Works with Claude, GPT, and Gemini model families (see shared/modelConstants.js for the full list of supported models)

Quick Start

The fastest way to get started — no local setup required. Get a fully managed, containerized development environment accessible from the web, mobile app, API, or your favorite IDE.

Get started with CloudCLI Cloud

Self-Hosted (Open source)

Try CloudCLI UI instantly with npx (requires Node.js v22+):

npx @cloudcli-ai/cloudcli

Or install globally for regular use:

npm install -g @cloudcli-ai/cloudcli
cloudcli

Open http://localhost:3001 — all your existing sessions are discovered automatically.

Visit the documentation → for more full configuration options, PM2, remote server setup and more


Which option is right for you?

CloudCLI UI is the open source UI layer that powers CloudCLI Cloud. You can self-host it on your own machine, or use CloudCLI Cloud which builds on top of it with a full managed cloud environment, team features, and deeper integrations.

CloudCLI UI (Self-hosted) CloudCLI Cloud
Best for Developers who want a full UI for local agent sessions on their own machine Teams and developers who want agents running in the cloud, accessible from anywhere
How you access it Browser via [yourip]:port Browser, any IDE, REST API, n8n
Setup npx @cloudcli-ai/cloudcli No setup required
Machine needs to stay on Yes No
Mobile access Any browser on your network Any device, native app coming
Sessions available All sessions auto-discovered from ~/.claude All sessions within your cloud environment
Agents supported Claude Code, Cursor CLI, Codex, Gemini CLI Claude Code, Cursor CLI, Codex, Gemini CLI
File explorer and Git Yes, built into the UI Yes, built into the UI
MCP configuration Managed via UI, synced with your local ~/.claude config Managed via UI
IDE access Your local IDE Any IDE connected to your cloud environment
REST API Yes Yes
n8n node No Yes
Team sharing No Yes
Platform cost Free, open source Starts at $7/month

Both options use your own AI subscriptions (Claude, Cursor, etc.) — CloudCLI provides the environment, not the AI.


Security & Tools Configuration

🔒 Important Notice: All Claude Code tools are disabled by default. This prevents potentially harmful operations from running automatically.

Enabling Tools

To use Claude Code's full functionality, you'll need to manually enable tools:

  1. Open Tools Settings - Click the gear icon in the sidebar
  2. Enable Selectively - Turn on only the tools you need
  3. Apply Settings - Your preferences are saved locally

Tools Settings Modal Tools Settings interface - enable only what you need

Recommended approach: Start with basic tools enabled and add more as needed. You can always adjust these settings later.


Plugins

CloudCLI has a plugin system that lets you add custom tabs with their own frontend UI and optional Node.js backend. Install plugins from git repos directly in Settings > Plugins, or build your own.

Available Plugins

Plugin Description
Project Stats Shows file counts, lines of code, file-type breakdown, largest files, and recently modified files for your current project
Web Terminal Full xterm.js terminal with multi-tab support

Build Your Own

Plugin Starter Template → — fork this repo to create your own plugin. It includes a working example with frontend rendering, live context updates, and RPC communication to a backend server.

Plugin Documentation → — full guide to the plugin API, manifest format, security model, and more.


FAQ

How is this different from Claude Code Remote Control?

Claude Code Remote Control lets you send messages to a session already running in your local terminal. Your machine has to stay on, your terminal has to stay open, and sessions time out after roughly 10 minutes without a network connection.

CloudCLI UI and CloudCLI Cloud extend Claude Code rather than sit alongside it — your MCP servers, permissions, settings, and sessions are the exact same ones Claude Code uses natively. Nothing is duplicated or managed separately.

Here's what that means in practice:

  • All your sessions, not just one — CloudCLI UI auto-discovers every session from your ~/.claude folder. Remote Control only exposes the single active session to make it available in the Claude mobile app.
  • Your settings are your settings — MCP servers, tool permissions, and project config you change in CloudCLI UI are written directly to your Claude Code config and take effect immediately, and vice versa.
  • Works with more agents — Claude Code, Cursor CLI, Codex, and Gemini CLI, not just Claude Code.
  • Full UI, not just a chat window — file explorer, Git integration, MCP management, and a shell terminal are all built in.
  • CloudCLI Cloud runs in the cloud — close your laptop, the agent keeps running. No terminal to babysit, no machine to keep awake.
Do I need to pay for an AI subscription separately?

Yes. CloudCLI provides the environment, not the AI. You bring your own Claude, Cursor, Codex, or Gemini subscription. CloudCLI Cloud starts at $7/month for the hosted environment on top of that.

Can I use CloudCLI UI on my phone?

Yes. For self-hosted, run the server on your machine and open [yourip]:port in any browser on your network. For CloudCLI Cloud, open it from any device — no VPN, no port forwarding, no setup. A native app is also in the works.

Will changes I make in the UI affect my local Claude Code setup?

Yes, for self-hosted. CloudCLI UI reads from and writes to the same ~/.claude config that Claude Code uses natively. MCP servers you add via the UI show up in Claude Code immediately and vice versa.


Community & Support

License

GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later) — see LICENSE for the full text, including additional terms under Section 7.

This project is open source and free to use, modify, and distribute under the AGPL-3.0-or-later license. If you modify this software and run it as a network service, you must make your modified source code available to users of that service.

CloudCLI UI - (https://cloudcli.ai).

Acknowledgments

Built With

Sponsors


Made with care for the Claude Code, Cursor and Codex community.
Description
No description provided
Readme AGPL-3.0 29 MiB
Languages
TypeScript 63.4%
JavaScript 33.6%
HTML 1.7%
CSS 1.2%