CHAN DEVSERVER / ssh + ETERNAL TERMINAL
Your machine.
From anywhere.
Run Chan where your code lives. Connect your desktop through ssh or Eternal Terminal; terminals, files, and workspace state stay on the remote machine.
http://localhost:9901Windows and toolsWebSocket
↔ remote port 8787
connection
127.0.0.1:8787Shells, files, workspacesInput and requests travel to the host. Terminal output, file bytes, and workspace updates return over the same tunnel. The devserver listens on the remote machine's loopback address.
- Your existing accessUse your ssh account and keys.
- Compute stays remoteBuild and run on the host with your code.
- Sessions keep runningReconnect after a client disconnect.
01 / CONNECT
Install there. Connect here.
- 01
Install Chan on the remote machine.
Use the CLI installer. The examples below use a Unix host and
~/.local/bin/chan. - 02
Add it in Computers.
Choose Add devserver, set a name, then copy the Address and Connect script from either example below. Replace
user@hostwith your ssh destination. - 03
Connect and open a terminal.
The script runs in a control terminal.
joinstarts or attaches to the devserver; keep the script running to hold the tunnel. Enable Auto-hide control terminal on success to tuck it away.
ssh
A direct connection.
- Address (URL)
http://localhost:9901- Connect script
ssh -L localhost:9901:127.0.0.1:8787 user@host \ '~/.local/bin/chan devserver join --port 8787'
localhost:9901127.0.0.1:8787ETERNAL TERMINAL
Reconnect across interruptions.
- Address (URL)
http://localhost:9901- Connect script
et --tunnel 9901:8787 \ --command '~/.local/bin/chan devserver join --port 8787' \ user@host
localhost:9901127.0.0.1:8787Install ET on both ends. It uses ssh to establish access and its own TCP connection, normally port 2022, to reconnect after interruptions. See the ET setup guide and command reference.
These are alternative configurations for the same address. The URL's port 9901 matches the local end of the tunnel; its remote end 8787 matches --port 8787. For another simultaneous connection, choose a free local port and update both the URL and the tunnel mapping. Full devserver manual →
02 / THE REMOTE TERMINAL
More than a shell connection.
Run these commands inside the remote Chan terminal. The same tools also work through a gateway.
Upload. Download.
cs upload .- Choose local files to upload here.
cs download report.md- Save a remote file to your computer.
Seamless clipboard integration.
Copy and paste text, rich text, and images between your remote shell and desktop apps.
cs copy < report.md- Copy to your desktop clipboard.
cs paste- Read your clipboard in the remote shell.
cs tunnel
Forward a remote service to your desktop. In one remote Chan terminal, keep this running:
cs tunnel 8080In another remote pane, serve the current directory with Python 3:
python -m http.server 8080 \
--bind 127.0.0.1 --directory .Open http://127.0.0.1:8080 in your desktop browser. Chan forwards desktop port 8080 to port 8080 on the remote host. Keep both commands running; Ctrl+C in the tunnel pane closes the forward.
Requires Chan Desktop. Through a gateway, use the devserver owner's desktop connection.
03 / SHARED SESSIONS
One host. Multiple participants.
Chan's workspace protocol coordinates presence, document and drawing updates, and leadership across connected windows. Each client reaches the same devserver through its authorized connection.
cs session listList this server's clients across terminal and workspace windows.
cs session self --name "laptop"Name this client and its workspace participant.
cs session info CLIENT_IDInspect a client's windows, terminals, and connections.
cs session detach CLIENT_IDDisconnect that client while keeping terminals and saved layouts. It can explicitly reconnect.
cs session handoverRequest workspace leadership. The current leader answers with cs session handover --accept or --reject.
cs session takeoverTake leadership when the leader is gone. --force also permits taking over from a live leader.
Client IDs come from cs session list; workspace leadership belongs to windows. If a shell has multiple viewers, self asks you to identify your client. See Collaboration & sessions in the manual. For account-based access and devserver sharing, set up a gateway.