by willwill85
Multi-machine workbench for Claude Code over SSH: conversation sidebar, persistent tmux terminals, Syncthing file mirror, and a reverse-tunnelled local MCP server (macOS).
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
# Add to your Claude Code skills
git clone https://github.com/willwill85/TAKT-UI-CCGuides for using mcp servers skills like TAKT-UI-CC.
See how TAKT-UI-CC compares with popular alternatives.
A multi-machine workbench for Claude Code over SSH. One window for all your Linux servers: projects & conversations in a sidebar, persistent terminals, local file preview, two-way file sync — and a local MCP server your remote Claude can call back into.
简体中文 · Setup guide · Architecture · Configuration · MCP tools · Security

Chat view: inline image previews, 5h / weekly usage rings and a Codex-style model & effort picker under the composer.
The UI language is currently Chinese (简体中文). All code, configuration and docs are in English/Chinese; contributions that add an i18n layer are very welcome.
Claude Code runs best on a server (good network, always on, close to your data). But then you juggle SSH windows, lose track of which conversation lives on which machine, and your local tools (Blender, FreeCAD, Xcode, USB boards…) are out of reach. TAKT-UI-CC fixes that:
| Many machines, one UI | Connect any number of Linux hosts. Every project and conversation is tagged with the machine it lives on (HOME, GPU, …). |
| Conversation sidebar | Projects → conversations, discovered passively from each server's ~/.claude/projects/*.jsonl. Rename, delete, tag, filter by machine or tag. Backed by a local SQLite database, so the list never flickers or loses entries when a server is offline. |
| Immortal terminals | Every tab is ssh + a remote tmux session. Close the app, lose Wi-Fi, reboot your laptop — reopen and you are back in the same session. Auto-reconnect on network drops. |
| Local file preview | The right-hand file tree and preview read the local mirror of the server's work folder (kept in sync by Syncthing), so opening images/HTML/code is instant and works even if the server is slow. Drag files in/out of the terminal. The tree updates live as files change (server-sent events backed by fs.watch, with a polling fallback). |
| Per-machine work folders | Machine 1 ↔ ~/.takt-ai/work, machine 2 ↔ ~/.takt-ai/work2, … each with its own Syncthing folder. |
| Reverse MCP tunnel | A local MCP server (23 tools: Blender, FreeCAD, EasyEDA/JLC EDA, Chrome, Xcode + iPhone deploy, USB/serial, MCU flashing, screen capture, host shell…) is reverse-tunnelled (ssh -R) to every node, so Claude running remotely can drive your machine. Protected by a token, loopback-only. |
| Appearance settings | The ⚙ button (top-left) opens a settings panel: 4 themes + follow-system (Graphite / Midnight / Light / Paper), accent colour, UI / chat / terminal font sizes, UI and monospace font families, terminal line-height and cursor, corner radius, chat width, reduced motion. Applies instantly (terminals included) and is remembered. |
| Project tags | Antigravity-style colour tags to group projects (Work / Side project / ML …) and filter the sidebar. |
| Status bar | Live SSH latency, Tailscale, MCP tunnel and Syncthing state across all nodes, with one-click tunnel self-heal. |
flowchart LR
subgraph Mac["Your Mac (client)"]
UI["Desktop app / browser\n(WKWebView + xterm.js)"]
WB["Workbench server :3080\nnode-pty · SQLite · REST + WS"]
MCP["Local MCP server :18765\nBlender · FreeCAD · Xcode · USB …"]
ST1["Syncthing"]
LW["~/.takt-ai/work, work2 …"]
UI <--> WB
WB --- LW
ST1 --- LW
end
subgraph L1["Linux node 1"]
TM1["tmux session per tab\n→ claude"]
RW1["~/work"]
ST2["Syncthing"]
ST2 --- RW1
end
subgraph L2["Linux node 2"]
TM2["tmux …"]
end
WB -- "ssh -tt (terminal)" --> TM1
WB -- "ssh (scan ~/.claude)" --> L1
MCP -. "ssh -R 18765 (reverse tunnel)" .-> TM1
ST1 <-- "two-way sync" --> ST2
WB --> L2
More detail: docs/ARCHITECTURE.md.
On your Mac (client):
node:sqlite) — brew install nodessh with key-based login to your servers (entries in ~/.ssh/config)node-pty when no prebuild exists): xcode-select --installbrew install syncthing) for the local file mirrorOn each Linux server:
tmux, python3, curl, and Claude Code installed for the SSH usersyncthing — a helper script installs tmux/python3/syncthing for you: scripts/remote-bootstrap.shgit clone https://github.com/willwill85/TAKT-UI-CC.git
cd TAKT-UI-CC
bash scripts/install.sh # checks prerequisites + npm install
bash scripts/start.sh # starts the workbench (:3080) and the local MCP server (:18765)
open http://127.0.0.1:3080 # or build the native app below
ssh my-server logs in without a password prompt (see SETUP).~/.ssh/config) → Save.
TAKT creates the local folder, registers it with Syncthing, opens the MCP reverse tunnel and configures Claude Code on the server — automatically.claude (resumed conversations use claude -r <id>). TAKT never starts claude behind your back — it only opens a shell in tmux and offers the command.bash scripts/build-app.sh # → build/TAKT-UI-CC.app
cp -R build/TAKT-UI-CC.app /Applications/
The app is a WKWebView + native SwiftTerm terminal. It is ad-hoc signed, so on first launch use right-click → Open. It starts the background services itself.
| Command | What it does |
|---|---|
npm run start:all / bash scripts/start.sh |
Start workbench + MCP server (idempotent, survives closing the terminal) |
npm run stop |
Stop both and close the MCP tunnels (remote tmux sessions keep running) |
npm run doctor |
Diagnose local setup and every node (ssh, tmux, claude, MCP tunnel…) |
bash scripts/remote-bootstrap.sh |
Install tmux/python3/syncthing on a Linux server (ssh host 'bash -s' < scripts/remote-bootstrap.sh) |
Everything is driven by environment variables; defaults work out of the box. Put overrides in ~/.takt-ai/env (KEY=value per line).
| Variable | Default | Meaning |
|---|---|---|
TAKT_HOME |
~/.takt-ai |
Data dir: nodes.json, SQLite DB, logs, per-node work folders, MCP token |
TAKT_PORT |
3080 |
Web UI / API port (bound to 127.0.0.1) |
TAKT_MCP_PORT |
18765 |
Local MCP server port (bound to 127.0.0.1) |
TAKT_AUTO_ALLOW_HOST_EXEC |
(unset) | Set to 1 to pre-approve the mac_host_exec tool on remotes (otherwise Claude asks every time) |
Full list: docs/CONFIGURATION.md.
The MCP server can run commands on your Mac, so it is locked down by default:
/mcp requires Authorization: Bearer <token> (random token in ~/.takt-ai/mcp-token, mode 0600, written into each node's ~/.claude.json).Host/Origin validation on every request — websites in your browser cannot talk to it (DNS-rebinding / CSRF safe).mac_host_exec is set to ask in the remote's Claude permissions unless you opt in.Host/Origin.Anyone who can log in to a connected Linux node as the SSH user can reach the tunnel and (with the token, which is readable from that user's ~/.claude.json) call MCP tools. Only connect machines you trust. Details: docs/SECURITY.md.
TAKT-UI-CC/
├── config.js shared paths/ports/token (env-driven)
├── server/
│ ├── server.js workbench: REST API, WebSocket terminals, SQLite state, node provisioning
│ ├── native-ssh-session.sh ssh + remote tmux launcher with auto-reconnect
│ └── public/ single-page UI (index.html) + vendored xterm.js
├── mcp-server/server.js local MCP server + multi-node tunnel/Syncthing watchdog
├── desktop/ Swift package: native macOS shell (WKWebView + SwiftTerm)
├── scripts/ install · start · stop · doctor · build-app · remote-bootstrap
├── docs/ architecture, setup, configuration, MCP tools, security (+ 简体中文)
└── examples/nodes.example.json
npm run doctor finds most problems. Common ones: docs/SETUP.md#troubleshooting.
MIT — see LICENSE. Bundles xterm.js (MIT); uses node-pty, ws and SwiftTerm (MIT). Third-party notices: THIRD_PARTY_NOTICES.md.
TAKT-UI-CC is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by willwill85. Multi-machine workbench for Claude Code over SSH: conversation sidebar, persistent tmux terminals, Syncthing file mirror, and a reverse-tunnelled local MCP server (macOS). It has 52 GitHub stars.
TAKT-UI-CC's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/willwill85/TAKT-UI-CC" and add it to your Claude Code skills directory (see the Installation section above).
TAKT-UI-CC is primarily written in HTML. It is open-source under willwill85 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh TAKT-UI-CC against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars