Skip to content
Source Zero

Remote hosts

Source Zero runs beside the files. To browse another machine, start it there with --remote, then run the command it prints on your computer. The desktop app opens that machine in a window of its own.

Install Source Zero on the host

Install the CLI alone on the remote machine; it needs no desktop app (Getting started):

curl -fsSL https://raw.githubusercontent.com/flexdinesh/srcz/main/scripts/install.sh | sh -s -- --cli-only

The script needs no sudo and puts srcz in ~/.local/bin (or ~/bin). Release archives (srcz_<version>_linux_<amd64|arm64>.tar.gz) work too; put srcz in ~/.local/bin.

Serve from the host

srcz ~/code/foo --remote
  srcz 1.4.0
  serving directory:  /home/dee/code/foo

  on your computer, run:
  srcz connect 10.0.0.5:7971/<credential>

  stops 10 min after this if nothing connects, and 5 min after the last UI closes. `srcz remote stop` stops it now.

It returns to your shell and keeps serving in the background, so you can close the SSH session. It binds every interface unless --host names one, on the first free port from 7971 to 7980 unless --port sets it. It serves every directory Source Zero already serves on that machine, and prints them all.

Without --remote, srcz on a machine with no UI (an SSH session, or Linux without a display) prints a reminder and exits. It never opens a port by itself.

Connect from your computer

srcz connect 10.0.0.5:7971/<credential>

The desktop app opens that machine in its own window, with its own tabs and settings. Connect to several machines and each gets a window. Source Zero saves the connection, so srcz://<id>/ links reopen it. --no-open saves it and prints the link instead.

The printed addresses are a guess at what your computer can reach. If they are wrong, edit the string, or pass --host:

ssh -L 7971:localhost:7971 <host>
srcz connect --host localhost 10.0.0.5:7971/<credential>

Security

The string is a password: anyone who has it and can reach the port can read the served files. Traffic uses TLS with a certificate pinned by the string, so a machine pretending to be the server is refused, and every request carries the string's token. The string has no expiry. It keeps working across restarts until you replace it:

srcz remote rotate    # old strings stop working

Pages from a remote server cannot reach your computer: they get no folder dialog and no Reveal in File Manager, and cannot read another window's data.

When it stops

The server stops 10 minutes after starting if no window or browser connects, and 5 minutes after the last one closes. A hidden or minimized window still counts.

srcz remote status    # state, clients, and the string again
srcz remote stop      # stop now

Browser

srcz ~/code/foo --remote --web

also prints a web: link. Open it in any browser; it signs in with a cookie and removes the token from the address bar. Browsers warn about the self-signed certificate, because they cannot pin it. That link is a password too.

Notifications

A connection's window notifies you as a local one does (Desktop app), with its own settings. Each notification starts with the connection's label, so you can tell it from one about this computer. If the host goes away, they resume when it returns.

Walkthroughs

Agents on the host publish with srcz walkthrough publish (Walkthroughs). While the host serves with --remote, it prints a srcz:// link that opens on the connected computer.