Install & Upgrade

The free edition of Quantra runs entirely on your own machine as a set of Docker containers. One installer command brings up the whole app — database, pricing engine, and browser portal — preloaded with synthetic demo data so you can price something within minutes.

Before you start

You need Docker with the Compose v2 plugin. That's the only prerequisite.

Make sure the Docker daemon is actually running before you install — the installer checks for it and stops with a clear message if it isn't. Around 4 GB of free disk is comfortable for the images and the database volume.

Apple Silicon (M-series Macs): the images are x86-64 and run under Rosetta/QEMU emulation. Everything works — the very first boot is just a little slower. The installer sets this up for you automatically.

Install

The free edition ships as a self-contained tarball. You don't need a registry account or a login token.

1

Download the free-edition bundle

Get quantra-free-<version>.tar.gz from the download page. The download is email-gated — enter your email and the link is sent to you.

→ Download page (link coming soon — TODO: final download URL)

2

Unpack it

terminal
tar -xzf quantra-free-<version>.tar.gz
cd quantra-free-<version>

The folder contains the compose file, an .env.example, the bundled images, and the installer script.

3

Run the offline installer

terminal
./install-offline.sh

That one command does everything:

  • Checks Docker is installed and running.
  • Loads the bundled images with docker load (no registry, no token).
  • Creates your config: copies .env.example to .env — the defaults are fine.
  • Starts the stack with docker compose ... --profile self-hosted up -d.
  • Waits for the orchestrator to report healthy and for the demo data to finish seeding.

It is idempotent — safe to re-run if anything is interrupted.

4

Open the portal

When it prints “Quantra is up”, open http://localhost:5173. You're signed in automatically (see Getting Started). Try Products → IR Swap → New Swap, keep the prefilled As-Of date, pick a seeded curve and its index, and click Price for a non-zero NPV.

The Quantra app Home screen after install
The Home screen after a fresh install — loaded demo entities and quick-start links.

Managing the running app

All commands are run from the unpacked folder. The compose invocation is docker compose --env-file .env -f docker-compose.release.yml:

terminal
# status of every container
docker compose --env-file .env -f docker-compose.release.yml ps

# follow the orchestrator logs
docker compose --env-file .env -f docker-compose.release.yml logs -f orchestrator

# stop the app — KEEPS all your data
docker compose --env-file .env -f docker-compose.release.yml down

# start it back up
docker compose --env-file .env -f docker-compose.release.yml up -d

Upgrade

When a new version is released, you upgrade in place. Your data is safe: everything you create — imported market data, saved products, curves — lives in a Postgres volume that the upgrade never touches, and the database schema is migrated forward automatically on boot.

Golden rule

Never run docker compose ... down -v. The -v flag deletes the postgres_data volume and with it all your data. To stop the app, use down without -v. To restart, up -d.

Upgrade in one command

From your existing deploy folder, run the bundled upgrade.sh:

terminal
# Tarball / offline edition — point at the NEW bundle's images:
./upgrade.sh --tarball /path/to/quantra-free-<newversion>/images.tar.gz --version <newversion>

# Registry install — just pull the new images:
./upgrade.sh --version <newversion>

The script runs, in order:

  1. Backs up first, always. It takes a pg_dump of your database into ./backups/quantra-db-<timestamp>.sql.gz. If the backup fails, the upgrade aborts and your running app is left untouched.
  2. Gets the new imagesdocker load from the new tarball, or docker compose pull.
  3. Brings the stack up with the new images (never -v). A one-shot migrate container advances the schema over your existing data automatically.
  4. Smoke-checks it — waits for the orchestrator to be healthy, confirms your data survived, and runs a pricing check.
  5. Reports the backup location and the rollback steps.

Take a manual backup any timepg_dump ships inside the Postgres image, so no local database tools are needed:

terminal
docker compose --env-file .env -f docker-compose.release.yml \
  exec -T postgres pg_dump -U quantra -d quantra \
  | gzip > backups/manual-$(date +%Y%m%d-%H%M%S).sql.gz

Rollback

Migrations are additive and forward-only (there is no automatic downgrade). If you need to roll back, you restore the pre-upgrade backup and redeploy the previous version:

  1. Repoint .env to the previous release: set QUANTRA_VERSION=<old-version>.
  2. Restore your pre-upgrade backup into a fresh volume. This is the one sanctioned use of -v — and only because you have a verified backup in hand:
    terminal
    DC="docker compose --env-file .env -f docker-compose.release.yml"
    $DC down -v                 # drops the volume — ONLY because we restore next
    $DC up -d postgres          # fresh empty volume
    gunzip -c backups/quantra-db-<timestamp>.sql.gz | $DC exec -T postgres psql -U quantra -d quantra
  3. Bring the previous version back up: $DC up -d.

Keep every pre-upgrade backup until you've confirmed the new version works. These files contain your data — store them somewhere safe.