Docs
Install the Crossfyre CLI
How to put the crossfyre CLI on a Linux host, check that what you downloaded is
what Crossfyre published, and bring the host online as a node.
Platforms
Crossfyre publishes builds for Linux on x86-64 and 64-bit ARM. The binaries need glibc 2.34 or later.
The installer is tested on Debian 12, Ubuntu 22.04, Ubuntu 24.04 and Kali rolling. There is no macOS or Windows build; the end of this page says what to do instead. The commands below use curl and sudo.
The Workbench desktop app is published for Linux on x86-64 and 64-bit ARM. Its downloads and their sums are on its own page.
apt
On a system that uses apt, add the Crossfyre repository and install from it. apt then checks every package against the repository's archive key and updates them with everything else.
curl -fsSL https://bins.crossfyre.io/apt/crossfyre-archive-keyring.gpg | sudo tee /usr/share/keyrings/crossfyre-archive-keyring.gpg > /dev/null sudo tee /etc/apt/sources.list.d/crossfyre.sources > /dev/null <<'EOF' Types: deb URIs: https://bins.crossfyre.io/apt Suites: stable Components: main Signed-By: /usr/share/keyrings/crossfyre-archive-keyring.gpg EOF sudo apt update sudo apt install crossfyre crossfyre-archive-keyring
The keyring holds one key, with the fingerprint 992F 106C 6CF0 32E4 3A3C A8BE D5D9 2DAC 3BA8 CDBF. With gnupg installed, gpg --show-keys /usr/share/keyrings/crossfyre-archive-keyring.gpg prints it. crossfyre-archive-keyring installs the same
key at the same path, so a new key reaches you through apt upgrade.
The Workbench is in the same repository: sudo apt install crossfyre-workbench.
A .deb, without the repository
crossfyre 0.1.33 as a Debian package, for a machine you would rather not add a repository to. apt installs the libraries it needs. To update, install the next version's .deb the same way.
- x86-64Download
crossfyre-v0.1.33-linux-x86_64.debSHA-256c243dd6a8747b1a5828d3ad19e8ace115d65e69f2b87537c6deb037381163eef - 64-bit ARMDownload
crossfyre-v0.1.33-linux-aarch64.debSHA-2566d4f8ccf4bd0d501fb3edae258c8a7fcb2ad5e66bed27a3c86e43c057e90ed93
Download it and SHA256SUMS, and install it only if the sum matches. uname -m fills
in this machine's architecture, as the file names spell it:
curl -fsSLO https://bins.crossfyre.io/crossfyre/v0.1.33/crossfyre-v0.1.33-linux-$(uname -m).deb curl -fsSLO https://bins.crossfyre.io/crossfyre/v0.1.33/SHA256SUMS grep -F " crossfyre-v0.1.33-linux-$(uname -m).deb" SHA256SUMS | sha256sum -c - && sudo apt install "./crossfyre-v0.1.33-linux-$(uname -m).deb"
Check SHA256SUMS against its signature
SHA256SUMS is signed with a Crossfyre release key, one the installer carries:
curl -fsSLO https://bins.crossfyre.io/crossfyre/v0.1.33/SHA256SUMS.sig printf -- '-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEA%s\n-----END PUBLIC KEY-----\n' 'kbMTWSxOuXPz8Wu8MMf552R66V5GivbTChZeyyoT3Sk=' > crossfyre-release.pem base64 -d SHA256SUMS.sig > SHA256SUMS.sig.raw openssl pkeyutl -verify -pubin -inkey crossfyre-release.pem -rawin -in SHA256SUMS -sigfile SHA256SUMS.sig.raw
OpenSSL 3.0 or later prints Signature Verified Successfully.
Or with the archive key, once its keyring is in place as in the apt section:
curl -fsSLO https://bins.crossfyre.io/crossfyre/v0.1.33/SHA256SUMS.asc gpgv --keyring /usr/share/keyrings/crossfyre-archive-keyring.gpg SHA256SUMS.asc SHA256SUMS
gpgv prints Good signature. Debian 13 and Kali come with sqv instead: sqv --keyring /usr/share/keyrings/crossfyre-archive-keyring.gpg --signature-file SHA256SUMS.asc SHA256SUMS.
The installer
A script that puts crossfyre, node and cfx-script in /opt/crossfyre/bin and links crossfyre into /usr/local/bin.
It says what it will do and asks before it changes anything. Before installing, it checks the
release manifest's signature against the key written into the script, and each file's SHA-256
against the manifest. It needs curl, unzip, python3 and OpenSSL 3.0 or later. Download it, read
it, then run it:
curl -fsSLO https://get.crossfyre.io/install.sh less install.sh sudo bash install.sh
The same in one line, once you have read it:
curl -fsSL https://get.crossfyre.io/install.sh | sudo bash
Other channels
- Each CLI version as a GitHub release, with its .debs, tarballs and signed SHA256SUMS:
clickswave/crossfyre-releases. - Coming The CLI on Arch Linux, from the AUR:
crossfyre-bin. - Coming The Workbench on Arch Linux, from the AUR:
crossfyre-workbench. - The CLI from Homebrew on Linux, run as your own user rather than as a node:
clickswave/tap/crossfyre. - Coming The node as a container image:
ghcr.io/clickswave/crossfyre-node.
For packagers
Every component is published as a tarball per platform, at a path made from its name and
version, where arch is x86_64 or aarch64:
https://bins.crossfyre.io/<component>/v<version>/<component>-v<version>-linux-<arch>.tar.gz
Beside each version's files is a SHA256SUMS, signed with the release key in
SHA256SUMS.sig and with the archive key in SHA256SUMS.asc. Each component
also has a latest.json that names its current version and an index.html that lists each version
published this way, for watch files: for the CLI, crossfyre/latest.json and crossfyre/index.html. Once
published, a version's files never change.
A tarball holds the binary, LICENSE (Apache-2.0, for the source in the crossfyre-toolchain repository), BINARY-LICENCE.txt, which covers the binary itself, and THIRD-PARTY-NOTICES. Read BINARY-LICENCE.txt before you redistribute one.
| Component | Version |
|---|---|
crossfyre | 0.1.33 |
node | 0.1.43 |
ambulo | 0.0.17 |
voyage | 0.0.10 |
doorward | 0.0.10 |
toolmark | 0.0.9 |
plessor | 0.0.25 |
cfx-script | 0.1.2 |
crossfyre 0.1.33, for example:
crossfyre-v0.1.33-linux-x86_64.tar.gz, sha25690f5065d3fe16ded2d211ed4664403af7e15cdbf5d1b6210fe799f07dc024187crossfyre-v0.1.33-linux-aarch64.tar.gz, sha256a827a02c29c1cc6bfab7705152d4812181864178c48bbaefb9fba1e5c38af670
packaging.json
A package that installs crossfyre says so in a packaging.json. Every command that
would install, update or remove a component the package owns then leaves it to the package
manager, names it, and carries on with the rest. crossfyre looks for the file at ../lib/crossfyre/packaging.json from the directory of its own executable, so /usr/lib/crossfyre/packaging.json for /usr/bin/crossfyre, and then in
that directory itself.
{
"manager": "pacman",
"owns": ["crossfyre"]
} manager- apt, pacman, brew, nix or container.
owns- The components the package installed: crossfyre, node, cfx-script or an engine.
bin_dir- Optional. Where node, cfx-script and the engines live instead of /opt/crossfyre/bin.
cli_path- Optional. The path to name the CLI by in a service unit, for a package whose binary sits at a path the next upgrade removes.
The file counts only when it is a regular file owned by root or by whoever owns the executable, and neither it nor its directory is writable by group or others.
After installing
Sign in, then bring the host online as a node:
crossfyre login sudo crossfyre node init
crossfyre login asks how to sign in: approve this machine in a browser, from a link
it prints, or paste an account key from Settings, CLI Access. Either way the key is never typed on
a command line, so it stays out of your shell history.
A node keeps scan state in a Postgres database that runs as a Docker container, so install Docker
first (docs.docker.com/engine/install). node init then claims a node for this host, installs its engines, starts the database
and registers the node's service. More on nodes.
.cfx scripts need libpython3.11
cfx-script, which runs .cfx scripts, links libpython3.11, so a machine needs that library to run
one. Debian 12 has it: sudo apt install libpython3.11. Ubuntu 24.04 and Kali rolling
have no libpython3.11 package, so .cfx scripts do not run there yet; a later release will carry its
own Python. The CLI, the node and the engines do not need it.
Updating and removing
- Installed with the installer:
crossfyre update allupdates the CLI, the node and every engine, each checked against the signed manifest. - Installed from the repository:
sudo apt update && sudo apt upgradeupdates the CLI, andcrossfyre update allthen leaves the CLI to apt and updates the node and the engines. sudo crossfyre uninstallstops and removes the node's service, the engines, the database container and the binaries it installed. Add--purgeto delete the node registrations and settings as well.- Installed as a package:
sudo apt remove crossfyrerunscrossfyre uninstall --yes --keep-databefore apt takes the package's own files away, so the node's service, the engines and the binaries the CLI fetched go with it. The database container, the node registrations and the settings are kept for a reinstall, andapt purgekeeps them too. To delete them as well, runsudo crossfyre uninstall --purgebeforeapt remove.
macOS and Windows
No build is published for either. On a Mac, run the CLI on a Linux host or in a Linux virtual
machine. On Windows, WSL 2 gives you a Linux to run the commands above in
(wsl --install), though it is not one of the tested setups.