Connect a machine · one static binary, no runtime

Bring a machine
onto the mesh.

A machine joins your workspace by running myco — a single self-contained binary with no Node, Python or Docker required. Once its daemon is up, that machine shows up in Mycolab: you can spawn agent sessions on it, browse and transfer its files, expose its local ports to public URLs, and run scheduled work — from a browser, anywhere.

Two steps

About a minute on a fresh machine, and nothing to copy between them. Both steps run on the new machine; you approve it in a browser — any browser, including the one on your phone.

1

Install the binary

On the new machine (macOS or Linux, Intel or ARM):

curl -fsSL https://hypha.run/install.sh | sh

Installs to /usr/local/bin/myco (uses sudo only if that directory is not writable). No root needed if you set PREFIX=$HOME/.local/bin. The installer will not silently overwrite an existing myco — it asks, or refuses when piped; pass FORCE=1 to replace it or NAME=myco2 to install alongside. Prefer a direct download? See the table below.

2

Log in and start the daemon

On the same machine:

myco login
myco daemon start
myco daemon status   # should report the daemon running

myco login prints a URL, a short code and a QR code, and opens your browser if it can. Approve it, and the machine picks up its own credential within a few seconds. There is nothing to copy back.

Over SSH, or on a box with no browser? The same command works: scan the QR with your phone, or open the printed URL on any device you are logged in on and type the short code. Add --no-browser to skip the launch attempt. Credentials are written to ~/.mycolab/credentials.json.

# the whole thing, start to finish
curl -fsSL https://hypha.run/install.sh | sh
myco login
myco daemon install   # run at boot (launchd / systemd), instead of 'daemon start'

How the login works

The machine keeps its own secret

It generates a long random code and never shows it. Approving in the browser records your consent and returns no token; the credential goes to whoever holds that code, which is the machine. The short code you type does nothing on its own.

The credential expires in a day

It rotates itself, so the disk never holds a long-lived admin key. Revoke a machine from Machines — by name, not by token id.

CI uses a token instead

No browser, nobody to click. Mint a scoped token from CI & automation tokens and pass it as myco login --token ….

Keep it running

A server you walk away from needs two things the quick-start skips.

Survive a reboot

myco daemon install registers the daemon as a system service — launchd on macOS, systemd on Linux — so it comes back after a restart. myco daemon uninstall removes it. Plain daemon start does not survive a reboot.

Expiry stops being your problem

A machine connected with myco login refreshes its own credential, so the old failure — the token quietly expires, the machine stops appearing, and the only sign is a log line — does not happen. A machine still using a pasted --token does expire on schedule: if one goes quiet with no other explanation, suspect the token, and re-run myco login to move it off the paste entirely.

Check on it

myco daemon status on the box, or just look for the machine in Mycolab — presence there is authoritative, derived from the live connection rather than self-reported.

Share what is running on the machine

Two commands cover almost everything: one for a directory of files, one for a port something is already listening on.

myco expose <port>

Turns a local server into a public https://tl-*.hypha.run URL over the mesh's built-in tunnel — WebSockets included, no firewall changes, no port forwarding. It uses the credential the machine picked up at login; there is nothing else to sign in to. One service, one port.

myco serve <name> <dir>

Publishes a directory — a build, a report, a static site — at its own hostname, so an app's absolute paths work with no rebuild. Private by default: the URL is an unguessable hostname, and anyone holding it can read it. Use --owner or --access a@x,b@y when that is not what you want, or --public when it is.

If a tunnel command fails oddly

An error mentioning a different login command, or a frontend host you never configured, means a different binary of the same shape is earlier on your PATH. Check with which -a myco and myco --version. myco is a single static binary — no Node, no Python, no separate login step beyond myco login.

Direct downloads

Statically linked, dependency-free. The Linux builds are musl-static and run on any distribution — Debian, Ubuntu, Alpine, or a distroless container alike.

Unpack and put it on your PATH: tar xzf myco-<target>.tar.gz && sudo mv myco /usr/local/bin/. Windows is not supported — the daemon is Unix-only; use WSL2, where the Linux x86_64 build works.

What the machine can do once connected

Everything below is driven from the browser, against the machine you just connected.

Run agent sessions

myco session spawn claude -d ./project — or spawn one from Mycolab. The agent runs on your machine, with your files and your tools; the browser is only the window onto it.

Browse and move files

Read, upload and download from the machine's disk over a streaming tunnel — not a control channel — so large files work without buffering.

Share a local port

myco expose 3000 gives a dev server on your laptop a public HTTPS URL, WebSockets included. No firewall changes, no port forwarding.

Serve static files

myco serve report ./out publishes a directory — private to your account by default, public on request.

Supervise processes

Declare long-running processes in YAML with keep-alive and health probes: myco process apply proc.yaml.

Schedule work

Cron lives server-side, so a schedule still fires while the machine is briefly down, and runs when it comes back.

Serve several workspaces

myco attach <workspace> adds a second workspace beside the one you just logged into — its own credential, its own connection, the same machine in both lists. Add --no-agents to give that workspace a shell here and no agent sessions; the role is per workspace. myco workspaces shows what this computer serves.

You're connected — what now?

Open Mycolab to see the machine, spawn an agent session on it, browse its files, and drive everything from the browser.

Run myco --help for the full command surface. Everything on this page is the shipped CLI — no preview flags.