documentation

Installation

How to install the Cycleswap CLI (cycle) on Linux.

System requirements

  • OS: Linux (tested on Ubuntu and Arch; other distros may work but are not tested)
  • Architecture: x86_64

Install

curl -fsSL https://cycleswap.dev/install.sh | sh

The install script detects your distro, prompts before installing any missing system packages, fetches the latest binaries, and registers the daemon as a systemd user service. Specifically, it:

  1. Prompts to install any missing dependencies (tar, unzip, podman, rclone, bash-completion, and swayidle on Wayland)
  2. Downloads the latest cycle and cycleswap-daemon binaries into ~/.local/bin
  3. Configures and starts the daemon as a systemd user service

You'll want ~/.local/bin on your PATH. The installer warns you if it isn't.

Verify the install

cycle --version

What gets installed

  • cycle is the CLI for managing projects, jobs, volumes, and machines.
  • cycleswap-daemon is the background daemon that runs jobs when your machine is idle. It's installed as a systemd user service.

Shell completions

The CLI automatically installs shell completions for Fish, Bash, and Zsh on every run. Tab completion should work out of the box for all commands and flags.

Updating

The CLI checks for updates on every run. If a newer version is available, it downloads both the CLI and daemon binaries, restarts the daemon systemd service, and re-executes itself with the updated binary. You do not need to re-run the install script.

Tips

After a successful command, the CLI occasionally prints a contextual tip (e.g. "Stream live output with job tail <job>."). These appear randomly and only when stdout is a terminal.

Uninstalling

To remove the CLI, daemon, and systemd service from this machine:

cycle uninstall

This deregisters the machine if it's registered, removes the systemd user service, deletes the cycle and cycleswap-daemon binaries, and asks before deleting the local data directory.

It does not touch any remote resources. Your jobs, volumes, and projects stay where they are. Manage those from the web dashboard.

If you only want to detach this machine from your org without uninstalling, run cycle machine deregister instead.