Deploy the complete Prometheux platform on a single Linux machine — a physical server in your data centre or a VM on AWS, Azure, or GCP — using Docker Compose.

Overview

The single-VM deployment runs the full Prometheux platform on one machine using Docker Compose. It takes minutes to set up and is the easiest way to run Prometheux on infrastructure you control. All images are pulled from Prometheux’s private registry with a token we provide, so you always run signed, supported builds. Everything you need lives in the deployment repository:

prometheuxresearch/prometheux-deploy

Docker Compose files, startup scripts, and configuration templates for the on-premise single-VM deployment.
The deployment is composed of two independent stacks:
  • Router (router/) — a reverse proxy that routes each authenticated user to their dedicated tenant backend, with JWT validation, circuit-breaker, and health checks.
  • Tenant (tenant/) — a full per-user stack: the backend, compute engine, language service, data manager, vector database, and notebooks. The folder is a template you copy once per user, so a single machine can host several isolated tenants.
The single-VM mode is ideal for a POC, a dedicated team workspace, or a small production footprint. When you need elastic, multi-node scale with dedicated compute per tenant, move to the managed-Kubernetes or physical-premises deployment — the platform experience is identical.

What You Need

  • A Linux machine (physical server or cloud VM) with Docker and Docker Compose installed. It runs on any distribution Docker supports — Ubuntu, Debian, Fedora, RHEL/CentOS, Rocky, AlmaLinux.
  • Minimum recommended hardware: 4 vCPUs, 16 GB RAM, 50 GB disk. Size the disk generously (or attach a separate, resizable data volume) to account for your data growth over time.
  • The credentials below, all provided by the Prometheux team:
Guided setup. The Prometheux team provides your registry token and credentials and will walk you through the first install. Book a call to get started.

Provisioning a cloud VM (optional)

Skip this if you’re deploying on a physical Linux server — the steps are identical once Docker is installed. On a cloud provider, provision a Linux VM (Ubuntu 22.04 LTS or later) first: Set the root/boot disk to at least 50 GB, restrict the application ports to your desired CIDR range, then connect over SSH and install Docker.

Setup

1

Clone the repository

2

Add your image pull token

Write the PROMETHEUX_PULL_IMAGE_TOKEN into the token file in both stacks — the startup scripts use it to log in to the registry before pulling.
3

Configure the router

Set SECRET_KEY, SESSION_SECRET_KEY, and OAUTH_ISSUER in router/.env, then map each username to their tenant’s backend in router/config.yaml:
4

Configure a tenant

The tenant/ folder is a template — copy it once per user and configure its .env:
Set USERNAME, ORGANIZATION, CUSTOMER, JARVISPY_PORT (must match router/config.yaml), JUPYTERLAB_PORT, and JUPYTERLAB_TOKEN in alice/.env. Tune the compute engine via alice/vadalog-parallel/pmtx.properties and spark-defaults.conf if needed.
5

Start the router

This logs in to the registry, pulls router-on-premise, and starts it on host port 8000.
6

Start the tenant stack

Run the per-user copy you created (not the tenant/ template). Repeat for each user’s folder.
This creates the local state directories, pulls all images, and starts the full tenant stack in detached mode.
Onboarding more users. Copy tenant to a new folder (cp -r tenant bob), give it a unique USERNAME, JARVISPY_PORT, and JUPYTERLAB_PORT, add the matching entry in router/config.yaml, and start it. Each tenant runs in its own Docker network, fully isolated from the others on the same machine.

What Gets Deployed

Router

Tenant (per user)

All services share a shared/disk volume for seamless file exchange within a tenant, and are set to restart: unless-stopped so they come back after a reboot.

Management

Updating to a new version is just as simple — the startup scripts always pull the latest images, so stop, re-run ./docker-compose-up.sh, and you’re current.

Persistent state & migration

All persistent state lives in plain host directories (not Docker volumes), which makes migration straightforward — especially if those paths live on a separate, resizable data volume (AWS EBS, Azure Managed Disk, or GCP Persistent Disk). To move to another machine: stop the services, remount the data volume on the new host, re-clone the repository, and restart. No image layers or database data need to be re-imported.

Configuration

The compute engine’s configuration is mounted from the host at <tenant>/vadalog-parallel/pmtx.properties and spark-defaults.conf, making it easy to adjust. For the full list of available properties, see the Configuration Reference.

Next Steps