Installation¶
SEAMM Manager is the one tool you install by hand; it installs everything else.
Install
uvif you do not have it. It is a single binary with no dependencies:$ curl -LsSf https://astral.sh/uv/install.sh | sh
then open a new shell (or
source ~/.local/bin/env) souvis on your path. On a cluster, do this in your own account; no administrator access is needed.Install the manager as a uv tool, i.e. in its own small environment, outside the one it will manage:
$ uv tool install seamm-manager
Install SEAMM:
$ seamm-manager install --all
This creates the SEAMM root (
~/SEAMMby default;--rootchooses another), installs Python 3.12 and a virtual environment~/SEAMM/venvinside it, and installs SEAMM with all the MolSSI plug-ins from PyPI, constrained to the published lock file so the versions are a tested set. Add--third-partyfor the third-party plug-ins, or name individual plug-ins instead of--all.
The installation also creates the jobs database (the datastore) under
~/SEAMM/Jobs with an administrator account admin whose password is admin;
change it from the web interface once that is running. Running a flowchart locally
with run_flowchart needs no account at all.
Optional: seamm-manager services create jobserver sets up the JobServer to run
in the background, seamm-manager install seamm-webui and ... services create
webui the web interface, and seamm-manager apps create desktop apps for the
flowchart editor.
Updating¶
$ seamm-manager update --all
updates the manager itself (if PyPI has a newer release), every installed SEAMM package
(to the versions in the current lock file), and restarts the JobServer if it needs to
be. If the installation has the web interface (its own environment, venv-webui), it
is updated to the newest release on PyPI too, and its service restarted when anything
in it changed; update seamm-webui updates just the web interface. --no-constraints
ignores the lock and takes the newest releases. --latest also asks PyPI directly, so
a release made today is picked up rather than waiting for the nightly list.
If the installation still has job flowcharts in the old format 2.0 and the updated SEAMM
can convert them, update ends with a short notice saying so. It never converts them
itself. Once a scan (or flowcharts migrate) finds none left, that is recorded in
<root>/installation.ini and later updates skip the scan, which on a cluster with
many jobs takes minutes; flowcharts status always scans and refreshes the record.
Converting the flowcharts to format 3.0¶
SEAMM 2026.10 introduced flowchart format 3.0. To convert an installation’s job flowcharts, and the jobs database’s record of them, after updating:
$ seamm-manager flowcharts status # how many are still in format 2.0
$ seamm-manager flowcharts migrate
migrate first shows what it would change and asks for confirmation. It then stops
the JobServer and web interface, backs up the jobs database, renames each job’s original
flowchart to flowchart.v2.flow (unchanged) beside the new flowchart.flow,
converts the database, restarts the services, and says where the backup and the manifest
of file changes are. Back up the Jobs directory first. --dry-run stops after the
report; --yes skips the question.
Moving the jobs database aside and letting the web interface rebuild it is not a
conversion: the rebuilt database keeps no accounts and converts nothing.
seamm-manager datastore rebuild keeps the accounts and job owners, but converts
nothing either.
Upgrading to flowchart format 3.0, in the main SEAMM documentation, is the step-by-step guide, including the messages you may see, how to undo the conversion, and how to convert your own flowcharts.
The environment¶
Everything Python lives in ~/SEAMM/venv. You never need to activate it; the
manager, the services and the apps all use its interpreter directly.
The environment is versioned: ~/SEAMM/venv is a link to the current version,
which lives in ~/SEAMM/venvs/<date and time>. An update never changes the
environment that running jobs are using. Instead it builds a new version beside the
current one, from a copy of the current one plus the changes, and switches the link
when it is done; the services are restarted so they run from the new version, and
jobs that were already running finish in the old one. The first update with this
manager moves an existing venv directory into venvs/ itself, which is safe
while jobs run.
$ seamm-manager environment versions # the versions, and what uses them
$ seamm-manager environment rollback # back to the previous version
$ seamm-manager environment prune # remove old, unused versions
$ seamm-manager environment pin 2026-10-10T07-03-14 --reason "validation jobs"
prune keeps the current version, the newest two for rollback, anything
younger than a day, anything pinned, and anything a running process on this machine
uses. On a cluster, jobs on the compute nodes are not seen from the login node: pin a
version that such jobs name directly (environment pin <version> --reason ...,
undone by environment unpin), and environment versions shows the pins. A switch is refused, and the
new version left ready for environment switch, if a process started through the
link, for example a job begun before the environment was versioned, is still running;
--force switches anyway. update --in-place and install --in-place change
the current environment directly, as earlier versions of the manager did; do that only
when no jobs are running.
If the environment is ever damaged,
$ seamm-manager environment recreate
builds a fresh version from scratch with the SEAMM packages that were in it, in well
under a minute, and switches to it. environment show describes the environment.
To check a new version before switching to it, run a flowchart in both:
$ seamm-manager compare my.flow -a current -b newest
runs the flowchart with each version and compares every file the two runs produce
(numbers within a tolerance, timestamps and the like ignored); see compare --help
for the other things a side can be, such as another installation’s root.
Conda¶
Conda is not needed for SEAMM itself. The plug-ins for external codes – MOPAC, Psi4, DFTB+, LAMMPS, xTB, Packmol, … – install the code into a conda environment of its own, so conda (Miniforge is recommended) is needed on a machine where you install one of those. The plug-in’s installer tells you if it is missing.
The environments go where conda keeps them: an existing one is used wherever it is,
and a new one goes in the first writable directory of conda’s envs_dirs (set in
~/.condarc), as conda create -n would put it. So a conda provided centrally on
a cluster, whose own directories are read-only, works too. SEAMM’s own environment
never uses conda’s Python, even when a conda environment is active.
When a plug-in updates its code environment from its environment file, pip packages named without a version are installed only if missing and otherwise left as they are, while those with a version specifier are kept current within it.
A plug-in whose code needs PyTorch (xnn-step) installs torch itself rather than
from its environment file, because PyPI’s default torch bundles the newest CUDA
runtime, which an older NVIDIA driver cannot run – torch then silently uses the
CPU. The installer reads the driver’s CUDA version from nvidia-smi, installs
torch from the matching PyTorch index (and the environment’s other pip packages
from that index too), and checks afterwards that torch sees the GPU and the code
imports. A torch that works is never replaced, and one that does not – perhaps a
build you made on purpose – only when you ask. On a machine without a driver,
such as a cluster’s login node whose compute nodes have the GPUs, it cannot tell
which build is wanted and says so; choose one with torch-build = <tag> in the
plug-in’s .ini file (cu128 for a current driver, cpu for no GPU,
auto to detect), or run the plug-in’s installer with --torch-tag, e.g.
~/SEAMM/venv/bin/xnn-step-installer install --torch-tag cu128, which also
replaces a torch that cannot use the GPU.
An environment that SEAMM did not create – one you built by hand and named in a
plug-in’s .ini file – is left alone. Whether SEAMM created it is read from
conda’s own history of the environment.
Licensed codes – ORCA, Gaussian, VASP, FHI-aims – are not installed at all: you
install them yourself. Installing their plug-in writes a commented template,
~/SEAMM/<code>.ini (e.g. vasp.ini), for you to edit to say where the code is
and how to run it. An existing file is never changed.
Migrating from seamm-installer¶
seamm-installer managed SEAMM in a conda environment. Such an installation keeps
working, but it reads a frozen package list and no longer receives updates. To move
to the manager: follow the three steps above, then
$ seamm-manager services create jobserver # if you ran the JobServer
$ seamm-manager apps create # if you had desktop apps
so they use the new environment. Jobs, ~/SEAMM/*.ini configuration and the codes’
conda environments are shared and untouched. Once satisfied, remove the old conda
environment (conda env remove -n seamm).
Development installation¶
$ seamm-manager --development install --all development
uses ~/SEAMM_DEV and adds the development tooling. Its services and apps carry
the installation’s name (jobserver-SEAMM_DEV, SEAMM (SEAMM_DEV).app); see
Several installations in the usage guide. To work on a package, install
your checkout into the environment with ~/SEAMM_DEV/venv/bin/pip install -e . or
the package’s make install with that environment activated.