Easy-Web-Vibecoding

skill
Guvenlik Denetimi
Gecti
Health Gecti
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 12 GitHub stars
Code Gecti
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Self-hosted web workspace for Claude Code, Codex, OpenCode and shell, with tmux persistence, split panes, file tools and GPU monitoring.

README.md

English · 简体中文

Easy Web Vibecoding split terminal workspace

Easy Web Vibecoding

A persistent, split-screen web workspace for Claude Code, Codex, OpenCode, and your shell.

Tests Release MIT License Python 3.10+ FastAPI

4 terminal types · up to 4 panes · persistent tmux sessions · files and resource monitoring · desktop and mobile

Easy Web Vibecoding turns command-line coding agents already installed on your Linux server into a browser workspace. Its interface is called CC Terminal. It is not a model proxy and it does not relay model API traffic: tmux + FastAPI + xterm.js connect your browser to the real terminal process.

Close the tab, lose the network, or restart the web service. The job remains in tmux and can be resumed when you return.

[!NOTE]
Every screenshot below comes from the real interface rendered in a browser. Sessions, paths, IP addresses, files, and hardware data are synthetic and do not identify a real server.

Quick start

Linux or another Unix-like server

git clone https://github.com/DarranLiu/Easy-Web-Vibecoding.git
cd Easy-Web-Vibecoding

export CC_WEB_ROOTS="$HOME/projects"
export CC_WEB_DEFAULT_DIR="$HOME/projects"
./run.sh

The first run creates .venv, installs the Python dependencies, and generates a random access token. An interactive launch prints the token to the terminal. A non-interactive launch stores it in ~/.cc-web-token with mode 0600, keeping it out of service logs.

By default the server only listens on:

http://127.0.0.1:8000

The host needs Python 3.10+ and tmux. Install and sign in to Claude Code, Codex, or OpenCode separately; this project does not store their API keys. Read the deployment guide before exposing it through a reverse proxy or tunnel.

Visual tour

Start the right tool in the right directory

Choose a project, then launch a new Claude session, resume Claude, start Codex, OpenCode, or a normal shell. Tools that are not installed are omitted instead of becoming broken menu items.

New terminal and directory picker

Work in up to four panes

Each tab owns an independent tmux session. Arrange terminals side by side, stacked, or automatically; drag the divider, swap panes, and switch tabs without stopping the underlying task.

Two terminal panes

Copy terminal output without breaking Ctrl+C

Select text and use the copy button, Ctrl+Shift+C on Windows/Linux, or Cmd+C on macOS/iPad. Plain Ctrl+C still sends an interrupt. Selection mode makes mouse-driven TUIs easier to copy from, and a long press or right click copies full scrollback.

Terminal selection and copy feedback

Text pastes directly into the focused terminal. The image action accepts a file, a clipboard screenshot, or drag and drop. It saves the image under .cc-web-images/ in the working directory and inserts the path into the terminal instead of pushing binary data through the PTY.

Paste or drag an image

Manage and preview project files

Browse, filter, upload, download, create, rename, and delete files inside the CC_WEB_ROOTS allowlist.

File manager

Preview common text, image, video, audio, and PDF files without opening a remote desktop.

File preview

Monitor the machine without leaking command lines

The resource panel shows GPU memory, utilization, temperature, power, user, and process name. It deliberately omits full process arguments, where tokens and private paths often appear. Remote GPU hosts can be queried over key-based SSH.

GPU resource monitor

Storage starts with filesystem capacity and drills down into directory usage. Slow du scans run in the backend and are cached.

Storage usage

Recognize connected devices

The current release uses one shared token, not a multi-tenant account system. The connection view records authenticated source IPs, device classes, first/last seen times, and visit counts. You can add a note, flag an unfamiliar source, or remove a record.

Connection records

Keep Codex usage subtle

Only the focused Codex pane shows its remaining percentage and reset time. Hidden tabs and other tools do not poll. Multiple entry points share a cache and file lock, so the server reads usage at most once every ten minutes.

Codex usage indicator

Use it from a phone

The mobile layout keeps practical terminal keys such as Esc, Tab, Ctrl, and arrows. Visual Viewport resizing keeps the cursor above the software keyboard.

Mobile terminal workspace

Details that matter in daily use

  • Browser disconnects detach the tmux client; they do not terminate the job.
  • The wheel enters tmux history in a normal shell and stays available to full-screen Claude/Codex-style TUIs.
  • Bundled terminal fonts reduce missing symbols and alignment problems on Windows clients.
  • IME composition is handled as composition, avoiding broken Chinese/Japanese/Korean input.
  • Light, dark, high-contrast, reduced-motion, and installable PWA layouts are supported.
  • API responses and file previews use Cache-Control: no-store.

The visual guide covers each workflow step by step. The problems solved document explains the terminal, input, reconnect, font, and usage-meter issues behind these choices. The visual guide is currently in Chinese; its screenshots and controls match the interface.

Architecture

Browser / xterm.js
       │ WebSocket
       ▼
FastAPI backend ── attach ── tmux session ── Claude / Codex / OpenCode / Shell
       │
       └── file, resource, presence, and usage REST APIs

The core rule is simple: a browser connection is not the terminal process.

Configuration

Variable Default Purpose
CC_WEB_HOST 127.0.0.1 Listen address. Do not expose the app directly to the public internet.
CC_WEB_PORT 8000 Listen port.
CC_WEB_AUTH 1 Token authentication. Disable only for local testing.
CC_WEB_TOKEN Random on first launch Shared access token; use a long random value.
CC_WEB_ROOTS Current user's home Comma-separated allowlist for file APIs.
CC_WEB_DEFAULT_DIR Current user's home Initial directory for new terminals.
CC_WEB_CLAUDE Auto-detected Path to the claude executable.
CC_WEB_CODEX Auto-detected Path to the codex executable.
CC_WEB_OPENCODE Auto-detected Path to the opencode executable.
CC_WEB_DISK_ROOTS Current user's home Directories the resource panel may scan with du.

See deployment and configuration for every variable plus systemd and Caddy examples.

Security model

This is a remote terminal. Anyone with access can generally act with the permissions of the service account, so protect it like SSH.

  • Keep CC_WEB_AUTH=1.
  • Use HTTPS plus an identity-aware proxy, VPN, or source allowlist for internet access.
  • Restrict CC_WEB_ROOTS; do not casually set it to /.
  • Share the token only with trusted operators. There are no per-user roles or read-only guests yet.
  • Never commit .env, tokens, certificates, logs, state JSON, or real deployment screenshots.

Authentication exchanges the master token for a server-signed, time-limited HttpOnly and SameSite session cookie; the raw token is not stored in the browser. Tokens are kept out of download links, WebSocket URLs, browser history, and default access logs. Runtime state files use mode 0600. Read the complete security policy and report vulnerabilities privately.

Test

python3 -m unittest discover -s tests -v
node --check frontend/app.js
bash -n run.sh

Contributing and support

Bug reports, focused pull requests, and tested interaction improvements are welcome. Start with CONTRIBUTING.md, use GitHub Discussions for questions, and follow the Code of Conduct.

If this project makes a remote coding workflow easier, a GitHub star helps other developers find it.

License and project identity

The source code is available under the MIT License. Bundled xterm.js files and DejaVu fonts retain their upstream licenses; see THIRD_PARTY_NOTICES.md. MIT covers the code, not an implied right to present a modified project as the official Easy Web Vibecoding distribution; see TRADEMARKS.md.

Yorumlar (0)

Sonuc bulunamadi