Beta

Register a self-owned computer

A self-owned computer lets Manyfold route work to a machine you control instead of a cloud sandbox. The mf CLI runs a local daemon in the background on that machine, advertises which coding agents are installed (Claude Code, Codex, Gemini CLI), and handles agent sessions on demand.

Use a self-owned computer when you need:

  • Direct access to local repositories or filesystem.
  • CLI tooling already installed on the machine.
  • Your own GPU, network, or compute environment.

Before you start

  • Install the mf CLI on the machine you want to register. See Install the CLI.
  • Sign in: mf login.

1. Issue a token

Open Settings → Self-owned computers in the web app. Under Register a new machine, give the machine a name (for example laptop or homelab-1) and click Issue token.

The page shows a ready-to-paste command:

mf daemon register --token ldt_xxxxxxxxxxxxxxxxxxxxxxxxxx

The token is shown only once. Copy the full command immediately. If you lose it, revoke the token and issue a new one.

2. Run the command on the target machine

Paste the command into a terminal on the machine you are registering. The CLI:

  1. Generates a stable daemon UUID at ~/.manyfold/daemon/daemon.id.
  2. Detects installed coding frameworks (Claude Code, Codex, Gemini CLI).
  3. Registers the machine with the API.
  4. Saves daemon config to ~/.manyfold/daemon/config.json.

The output looks like:

✓ daemon registered
  daemonId: dmh_…
  apiUrl:   https://api.manyfold.ai/api
  detected: claude-code 1.2.3
Start the daemon now? It will auto-start on login. [Y/n]

Press Enter (or y) to start the daemon. mf daemon start installs an autostart unit (macOS launchd LaunchAgent / Linux systemd user unit) so the daemon comes back automatically every time you log in and is restarted by the OS if it crashes — you don’t need to keep a terminal open.

For headless or scripted setups, pass -y to skip the prompt and start the daemon in one step:

mf daemon register --token ldt_xxxxxxxx -y

3. Verify the machine is online

Go back to Settings → Self-owned computers in the web app. The machine appears under Connected machines with a green dot. The dot turns gray if the daemon has not sent a heartbeat in the last 45 seconds.

Each connected machine also shows the CLI version it’s running and how it was started — for example cli 0.7.0 · autostart · login (launchd) for a Mac that started via the LaunchAgent, or cli 0.7.0 · manual if the daemon was launched directly from a terminal without autostart.

You can also check from the same machine:

mf daemon status
mf daemon logs

4. Create an agent on the machine

From the Connected machines list, click + Create agent → next to an online machine. The new-agent flow opens with the daemon preselected as the runtime.

You can also open New agent, pick a framework, and choose Self-owned computer as the runtime.

Manage the daemon

mf daemon status              # process + heartbeat state, plus autostart status
mf daemon logs                # tail the local log file
mf daemon start               # install autostart unit and start (default: login scope)
mf daemon stop                # stop the daemon and remove its autostart unit
mf daemon doctor              # diagnose registration / framework detection issues

The daemon log lives at ~/.manyfold/daemon/daemon.log.

On macOS and Linux the web terminal gets a full interactive terminal (resize and job control included). On Windows it runs in a limited mode without resize or job control. If mf daemon doctor reports terminal limited on macOS or Linux, run mf update and restart the daemon.

mf daemon start and mf daemon stop accept two extra flags:

  • --system — install at the system scope so the daemon starts at boot (no login required). Requires sudo because the unit goes into /Library/LaunchDaemons (macOS) or /etc/systemd/system (Linux).
  • --foreground — run the daemon inline without touching the autostart unit. The process exits when you close the terminal; useful for debugging or for environments without launchd / systemd (e.g. WSL1, minimal containers).

After updating the CLI with mf update, run mf daemon stop then mf daemon start so the autostart unit is rewritten with the new binary path. Launchd / systemd otherwise keeps using the previous path until you restart the unit explicitly.

Autostart scope

The default mf daemon start registers the daemon at user scope:

OSPathWhen it starts
macOS~/Library/LaunchAgents/ai.manyfold.daemon.plistOn login
Linux~/.config/systemd/user/mf-daemon.serviceOn login

mf daemon start --system installs at system scope and starts the daemon at boot, before any user logs in:

OSPathWhen it starts
macOS/Library/LaunchDaemons/ai.manyfold.daemon.plistAt boot
Linux/etc/systemd/system/mf-daemon.serviceAt boot

The OS only restarts the daemon when it crashes (non-zero exit). A clean mf daemon stop leaves it stopped. If you want the daemon to come back automatically after a stop, run mf daemon start again.

On Linux user scope, the daemon starts when you log in. To run it at boot without an active login, enable lingering for your user once: loginctl enable-linger $USER.

Troubleshooting

  • daemon register requires --token <token> — the command was run without a token. Re-copy the full command from the web UI.
  • token must start with ldt_ — the token was truncated during copy. Re-copy it.
  • Machine stays offline — confirm the daemon process is alive (mf daemon status) and that outbound HTTPS to api.manyfold.ai is reachable from the machine.
  • Token already bound — each token can register exactly one machine. Issue a new token for additional machines.
  • Revoking a machine — open Settings → Self-owned computers and click Revoke. Agents bound to that machine are marked stopped; workspace files on the machine itself are kept.
  • systemd not available on Linux — your environment doesn’t have a usable user systemd session (common in WSL1 and minimal containers). Run mf daemon start --foreground in a long-lived shell, or use --system (requires sudo and a system-level systemd).
  • Daemon shows manual in Connected machines — the daemon was started without mf daemon start (for example via --foreground or by an old version of the CLI). Run mf daemon stop && mf daemon start to register an autostart unit.
  • Connected machines shows an old CLI version after mf update — the OS is still running the previously-loaded binary. Run mf daemon stop && mf daemon start to relaunch under the new binary.
Was this page helpful?