Command line and servers

The ixel-mesh command, for servers, terminals and automation.

Every IXEL Mesh install includes the ixel-mesh command. On a desktop, it controls the IXEL Mesh app’s background service, so the app and the command always agree. On a server with no app, ixel-mesh up runs IXEL Mesh itself.

Commands

Command What it does
ixel-mesh up Signs in if needed, then connects. With the app running, it turns the app on; otherwise it runs in the foreground until you press Ctrl+C.
ixel-mesh down Disconnects, and stays signed in.
ixel-mesh status This device, your other devices, and how this one reaches them.
ixel-mesh logout Removes this device from your mesh.
ixel-mesh daemon Runs the background service on its own (the desktop apps start it for you).
ixel-mesh version Prints the version and platform.

Options for up

Option Meaning
--name NAME Name for this device the first time it signs in. Default: the computer’s name.
--socks5 ADDR Local SOCKS5 proxy into the mesh. Default 127.0.0.1:1055; --socks5 "" turns it off.
--port N UDP port for connections. Default 41641; if it’s taken, any free port is used.
-v Log more detail.

Every command also takes --state DIR, the folder where the device keeps its key and sign-in.

Check connections

$ ixel-mesh status
This device: gary-mac  198.18.0.1  fd8c:37b:d476::1  [connected]

DEVICE       ADDRESS     STATUS  CONNECTION
vps-phoenix  198.18.0.2  online  direct via 209.74.86.134:41641, handshake 9s ago

Servers

On a server, sign in once interactively. ixel-mesh up prints a link and a code you can approve from any browser:

ixel-mesh up --name build-server

Then run it in the background as a service. With systemd, as a user service:

# ~/.config/systemd/user/ixel-mesh.service
[Unit]
Description=IXEL Mesh

[Service]
ExecStart=%h/.local/bin/ixel-mesh up
Restart=always

[Install]
WantedBy=default.target
systemctl --user enable --now ixel-mesh
loginctl enable-linger "$USER"   # keep it running when you're logged out

Your other devices can now reach every port on the server by name, for example ssh you@build-server through the proxy.