Installing via the dev channel
Run the real installer scripts against your local checkout to test install changes or bring up the full Docker bundle.
The two-terminal dev loop is the fastest way to iterate on app/ and ui/. But sometimes you need to exercise the actual installer scripts users will run — to test changes to install/install.sh or install/install.ps1, or to bring up the full Docker bundle (Postgres + Qdrant) against your checkout. That's what the dev channel is for.
Installing from your checkout
Pass --channel dev (Linux/macOS) or -Channel dev (Windows):
bash install/install.sh --channel dev --deployment local.\install\install.ps1 -Channel dev -Deployment localThe dev channel skips PyPI and runs pip install -e . against your checkout, so your Python edits are live without a reinstall. Templates (local.env, docker-compose.yml.tmpl, …) come from the checkout's install/templates/, not from GitHub. The shared catalog (deployment and mode labels, the mode-rule visibility table) is read from install/_catalog.sh (or _catalog.ps1) in the checkout.
Editing the install catalog
install/_catalog.sh and _catalog.ps1 are generated from install/catalog.toml by install/scripts/build_catalog.py. When you edit catalog.toml, regenerate and commit both the master and the generated files:
python install/scripts/build_catalog.pyCI runs python install/scripts/build_catalog.py --check; the build fails when the committed generated includes diverge from the master.
Docker mode against your checkout
--channel dev --mode docker works against your checkout. The installer emits a docker-compose.override.yml that points the build context at the checkout, swaps the pip install for -e /src, and bind-mounts the checkout into the container:
bash install/install.sh --channel dev --mode docker --deployment localHost edits to app/ show up after docker compose restart cremind.
Caveats
Build the SPA first
The setup wizard at http://localhost:1515 needs app/static/ui/ populated. Run bash scripts/build_ui.sh once before --channel dev so the SPA listener comes up.
--channel devrequires running the script from a checkout. Piping it viacurl | bash(with no file on disk) is rejected — the script needs the surrounding repo to find templates and the catalog.- Don't run
cremind upgradefrom a dev install.CREMIND_UPGRADE_CHANNELis intentionally not written to.envin dev channel. Pull from git instead.
Other channels
The dev channel is for installing your local checkout. The test channel installs published dev releases from Test PyPI, and the production channel installs from PyPI. The release pipeline uses the test channel to validate a change before it merges — see Releasing and Versioning for how the three channels relate.
Testing & CI
The three checks the PR CI runs — backend pytest, UI type-check, and the web smoke build — and how to run them locally before you push.
Releasing
The validate-before-merge release pipeline — RC dev tags from the PR branch, merge-commit, and the production gates that ship to PyPI, GitHub, and Docker Hub.