Install CytoWeave

CytoWeave is one executable. The browser application and the example experiments are inside it, so nothing else needs to be installed. One command downloads the release for your computer, checks it and installs it.

$ curl --proto '=https' --tlsv1.2 -fsSL https://raw.githubusercontent.com/robert-mcdermott/cytoweave/main/install.sh | sh

Installs the latest release as ~/.local/bin/cytoweave. No sudo, and your PATH is left as it is; if ~/.local/bin is not on it, the installer prints the full path to run.

Start it

$ cytoweave

CytoWeave starts a local server and opens its window. If Chrome, Edge, Brave or Chromium is installed, the window is a desktop app window with its own profile; otherwise your default browser is used. Closing the window stops the program. On Windows, open a new terminal after installing so that it sees the updated PATH.

Files and folders named on the command line open directly, and running cytoweave <files> again while it is open hands them to the open window:

$ cytoweave ~/data/2026-09-30_panel1/

Then continue with Getting started.

Requirements

Operating systemArchitectureRelease file
macOSApple silicon (ARM64)cytoweave-darwin-arm64
macOSIntel (x64)cytoweave-darwin-amd64
Linuxx64cytoweave-linux-amd64
LinuxARM64cytoweave-linux-arm64
Windowsx64cytoweave-windows-amd64.exe
WindowsARM64cytoweave-windows-arm64.exe

Each release also has SHA256SUMS, the checksum of every file, which the installers require.

CytoWeave runs in a browser window. It is developed and tested in Chrome, Edge and Brave. It uses only standard web features (module workers, canvas, IndexedDB and the origin-private file system), so current Firefox and Safari should work when you open the printed address in them, but they are not tested regularly.

Memory is the limit for very large experiments: plan on about 4 bytes per event per parameter of every loaded sample, plus as much again for the compensated channels in use. See large files.

What the installer does

The installer detects your operating system and processor, downloads the matching file and SHA256SUMS from the same GitHub release, and requires exactly one matching checksum. It then runs the downloaded program's --version, and only after both checks pass does it move the program into place, so a failed download never replaces a working copy. It does not start CytoWeave.

Because it downloads with curl or PowerShell rather than a browser, the program does not get the quarantine flag (macOS) or the mark of the web (Windows), so you are not asked to confirm an unsigned download.

Read it first. Both installers are short scripts in the repository: install.sh and install.ps1.

Versions and install locations

macOS and Linux

Download the installer to read it, then run it with options:

$ curl --proto '=https' --tlsv1.2 -fsSLo install-cytoweave.sh https://raw.githubusercontent.com/robert-mcdermott/cytoweave/main/install.sh
$ less install-cytoweave.sh
$ sh install-cytoweave.sh --version v0.8.1 --install-dir "$HOME/bin"

The piped form reads the same settings from environment variables:

$ curl --proto '=https' --tlsv1.2 -fsSL https://raw.githubusercontent.com/robert-mcdermott/cytoweave/main/install.sh | CYTOWEAVE_VERSION=v0.8.1 sh
OptionEnvironment variablePurpose
--versionCYTOWEAVE_VERSIONRelease tag to install, such as v0.8.1. Defaults to the latest release.
--install-dirCYTOWEAVE_INSTALL_DIRAbsolute installation folder. Defaults to $HOME/.local/bin.
CYTOWEAVE_REPOSITORYGitHub owner/repository, to install from a fork.

For a system-wide installation, download and read the script, then run it with an administrator-owned --install-dir. Never pipe a download straight into sudo sh.

Windows

irm … | iex reads the script into memory and runs it, so the PowerShell execution policy, which governs script files, does not apply. Piping cannot pass parameters: set environment variables instead, or build a script block.

powershell
$env:CYTOWEAVE_VERSION = 'v0.8.1'
$env:CYTOWEAVE_INSTALL_DIR = "$HOME\bin"
irm https://raw.githubusercontent.com/robert-mcdermott/cytoweave/main/install.ps1 | iex
powershell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/robert-mcdermott/cytoweave/main/install.ps1))) `
  -Version v0.8.1 -InstallDir "$HOME\bin"
ParameterEnvironment variablePurpose
-VersionCYTOWEAVE_VERSIONRelease tag to install. Defaults to the latest release.
-InstallDirCYTOWEAVE_INSTALL_DIRAbsolute installation folder.
-RepositoryCYTOWEAVE_REPOSITORYGitHub owner/repository, for forks.
-ArchitectureCYTOWEAVE_ARCHamd64 or arm64, when detection fails.
-NoPathUpdateCYTOWEAVE_NO_PATH_UPDATELeave the user PATH unchanged.

A parameter takes precedence over its environment variable. A saved copy of the installer is subject to the execution policy; bypass it for that one run rather than changing the setting:

powershell
powershell -ExecutionPolicy Bypass -File .\install-cytoweave.ps1

Downloading and verifying by hand

Choose the file for your computer from the table above. On macOS, use shasum -a 256 --check - in place of sha256sum --check -.

macOS and Linux
ASSET=cytoweave-linux-amd64
curl -fLO "https://github.com/robert-mcdermott/cytoweave/releases/latest/download/$ASSET"
curl -fLO https://github.com/robert-mcdermott/cytoweave/releases/latest/download/SHA256SUMS
grep "  $ASSET\$" SHA256SUMS | sha256sum --check -
chmod +x "$ASSET"
./"$ASSET" --version
powershell
$Asset = 'cytoweave-windows-amd64.exe'
$Base = 'https://github.com/robert-mcdermott/cytoweave/releases/latest/download'
Invoke-WebRequest -UseBasicParsing "$Base/$Asset" -OutFile $Asset
Invoke-WebRequest -UseBasicParsing "$Base/SHA256SUMS" -OutFile SHA256SUMS
$Expected = (Select-String -Path SHA256SUMS -Pattern ('  ' + [regex]::Escape($Asset) + '$')).Line.Split(' ')[0]
$Actual = (Get-FileHash -Algorithm SHA256 $Asset).Hash.ToLowerInvariant()
if ($Actual -ne $Expected) { throw 'Checksum verification failed' }
& ".\$Asset" --version

The checksum detects a damaged download and a file that differs from the release's list. Both come from the same release, so it cannot protect against someone able to replace both.

Files downloaded in a browser

CytoWeave's programs are not signed with an Apple or Microsoft certificate. A file saved from a browser is flagged, and its first start asks for confirmation.

Upgrading and going back

Running the installer again upgrades CytoWeave. A failed download, checksum or version check leaves the installed copy as it was, and the workspace library is not touched. Windows cannot replace a running program, so close CytoWeave before upgrading there. To go back to an earlier release (v0.1.0 or later), install it by tag as shown above.

Uninstalling

Delete the program: ~/.local/bin/cytoweave on macOS and Linux, or the %LocalAppData%\Programs\CytoWeave folder on Windows, whose entry you can also remove from the user PATH.

Your workspace library (saved workspaces, and one copy of each FCS file you added, stored by checksum) is separate:

SystemLibrary folder
macOS~/Library/Application Support/CytoWeave
Linux~/.config/CytoWeave (or $XDG_CONFIG_HOME/CytoWeave)
Windows%AppData%\CytoWeave

Delete it only if you no longer need those workspaces.

Building from source

With Go 1.24 or later (CytoWeave uses only the standard library):

$ git clone https://github.com/robert-mcdermott/cytoweave.git
$ cd cytoweave
$ go build -o cytoweave .
$ ./cytoweave

The web application is plain ES modules, with no build step. The README's Development section covers tests, the validation suite and releases.