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 | shInstalls 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.
PS> irm https://raw.githubusercontent.com/robert-mcdermott/cytoweave/main/install.ps1 | iexRun in PowerShell. Installs to %LocalAppData%\Programs\CytoWeave and adds it to your user PATH. No administrator rights and no change to the execution policy needed.
Start it
$ cytoweaveCytoWeave 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 system | Architecture | Release file |
|---|---|---|
| macOS | Apple silicon (ARM64) | cytoweave-darwin-arm64 |
| macOS | Intel (x64) | cytoweave-darwin-amd64 |
| Linux | x64 | cytoweave-linux-amd64 |
| Linux | ARM64 | cytoweave-linux-arm64 |
| Windows | x64 | cytoweave-windows-amd64.exe |
| Windows | ARM64 | cytoweave-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| Option | Environment variable | Purpose |
|---|---|---|
--version | CYTOWEAVE_VERSION | Release tag to install, such as v0.8.1. Defaults to the latest release. |
--install-dir | CYTOWEAVE_INSTALL_DIR | Absolute installation folder. Defaults to $HOME/.local/bin. |
CYTOWEAVE_REPOSITORY | GitHub 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.
$env:CYTOWEAVE_VERSION = 'v0.8.1'
$env:CYTOWEAVE_INSTALL_DIR = "$HOME\bin"
irm https://raw.githubusercontent.com/robert-mcdermott/cytoweave/main/install.ps1 | iex& ([scriptblock]::Create((irm https://raw.githubusercontent.com/robert-mcdermott/cytoweave/main/install.ps1))) `
-Version v0.8.1 -InstallDir "$HOME\bin"| Parameter | Environment variable | Purpose |
|---|---|---|
-Version | CYTOWEAVE_VERSION | Release tag to install. Defaults to the latest release. |
-InstallDir | CYTOWEAVE_INSTALL_DIR | Absolute installation folder. |
-Repository | CYTOWEAVE_REPOSITORY | GitHub owner/repository, for forks. |
-Architecture | CYTOWEAVE_ARCH | amd64 or arm64, when detection fails. |
-NoPathUpdate | CYTOWEAVE_NO_PATH_UPDATE | Leave 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 -ExecutionPolicy Bypass -File .\install-cytoweave.ps1Downloading 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 -.
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$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" --versionThe 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.
- macOS: a warning such as Apple could not verify "cytoweave-darwin-arm64" is free of malware appears. Open System Settings → Privacy & Security and click Open Anyway next to the message about CytoWeave, or remove the flag with
xattr -d com.apple.quarantine ./cytoweave-darwin-arm64. - Windows: if SmartScreen blocks the program, click More info, then Run anyway, or run
Unblock-File .\cytoweave-windows-amd64.exein PowerShell first.
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:
| System | Library 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 .
$ ./cytoweaveThe web application is plain ES modules, with no build step. The README's Development section covers tests, the validation suite and releases.