Installation¶
AnnZarro is a Python package with a browser interface. The package contains the server, the
command-line tool annzarro and the complete web interface (all JavaScript, CSS and fonts are
bundled, so the browser fetches nothing from other hosts). If you only want to look at data on
your own computer and do not want to install Python, use the Desktop app instead.
Requirements
Python 3.9 or later. The package has been installed and its server started on Python 3.9, 3.10, 3.11, 3.12, 3.13 and 3.14 (macOS, arm64). Python 3.8 and older cannot import it. Apple’s Xcode Python 3.9 (
/usr/bin/python3on macOS) works, but itshashlibhas no scrypt, so login passwords created there are stored aspbkdf2:sha256; a users file made with another Python may needannzarro user passwd(Login, users and permissions).A current browser (Chrome, Firefox, Safari or Edge).
For the server: read access to the zarr stores you want to view. Memory depends on the chunks being read, not on dataset size; see Performance.
Install AnnZarro on the machine that holds the data. For a cluster, that is the cluster, not your laptop (Personal server over SSH).
With pip¶
python -m venv annzarro-env
source annzarro-env/bin/activate # Windows: annzarro-env\Scripts\activate
pip install annzarro
To open zarr stores directly from S3, Google Cloud Storage or HTTP(S), install the remote
extra, which adds fsspec, s3fs, gcsfs and aiohttp:
pip install 'annzarro[remote]'
Without it, opening an s3://, gs:// or https:// dataset fails with a message naming this
extra. See Remote datasets.
Note
pip install annzarro is the published path. If PyPI does not have a release yet when you read
this, install from a source checkout as described below.
With uv¶
uv installs the same package faster. Either into a virtual environment:
uv venv annzarro-env
source annzarro-env/bin/activate
uv pip install annzarro # or 'annzarro[remote]'
or as a stand-alone command-line tool in its own isolated environment, which puts annzarro
on your PATH:
uv tool install annzarro
From source¶
git clone https://github.com/settylab/annzarro.git
cd annzarro
pip install . # or: pip install -e . for development
A build from a git checkout first downloads the pinned third-party browser libraries listed in
scripts/vendor-assets.json and checks each file’s SHA-256, so it needs network access once. An
editable install (-e) that cannot download them still installs, with a warning, and the
interface is incomplete until python scripts/vendor_assets.py succeeds. A wheel or sdist
already contains these files.
The repository also has a wrapper script, ./annzarro-cli, that creates a virtual environment
in ./venv and runs annzarro inside it (./annzarro-cli install, then
./annzarro-cli start). It is a convenience for working in the checkout; the pip route above
gives you the same command. Its installer, annzarro-install.py (also runnable directly with
python annzarro-install.py), takes options the annzarro command of a pip install does not:
Option |
Meaning |
|---|---|
|
Install into the current interpreter instead of |
|
Remove an existing |
|
Skip the optional dependencies, including the remote-store readers. |
|
Upgrade packages that are already installed. |
Running the tests¶
The test suite covers Python, every JavaScript suite (annzarro/tests/js/*.test.mjs) and ESLint,
so it needs Node.js 22 or later in addition to Python:
pip install -e .
npm ci # once: installs the pinned ESLint from package-lock.json
python -m pytest # Python, JS and lint; CI runs exactly this
npm run lint # or the JS side alone
npm test
Without node or npm ci, the JS and lint tests fail rather than being skipped.
annzarro start --development runs the server in development mode
(Configuration).
Check the installation¶
annzarro --help
lists the subcommands start, stop, user, install, config and desktop. Then show the
configuration the server would start with:
annzarro config show
The first lines name the files that were read (the built-in base.yaml and production.yaml
inside the package, then /etc/annzarro/config.yaml, ~/.config/annzarro/config.yaml and
./config.yaml if they exist). Every option is described in Configuration.
Where AnnZarro writes¶
AnnZarro never writes to datasets. It writes only:
What |
Where |
|---|---|
Server log |
|
PID file of |
|
Users file and login key (only when login is enabled) |
|
Saved panel sets |
|
Set ANNZARRO_HOME to move ~/.annzarro elsewhere, for example to a project directory on a
cluster where the home directory is small.
Next: Quickstart.