Skip to main content

Demo Mode

Demo mode turns an instance into a read-only public showcase. It is controlled by a single flag.

The flag

DEMO_MODE is a boolean Settings field (saas/config.py), default false:

  • false — full self-hosted platform: signups and job submission are allowed.
  • true — read-only demo: registration, job creation, and draft launch are blocked.

Set it in .env:

DEMO_MODE=true

What it gates

When DEMO_MODE=true, three write paths return 403 with the message This is a read-only demo. Deploy your own instance to run simulations.:

  • POST /api/auth/register — registration (saas/auth/api.py).
  • POST /api/jobs — create a new simulation (saas/jobs/api.py).
  • Draft launch (saas/jobs/api_draft.py).

Login and all read paths (browsing jobs, share links, results) remain available.

Exposed to the frontend

The current flag is exposed publicly so the UI can hide write actions:

GET /api/config → {"demo_mode": <bool>}

PublicConfig (saas/health.py) returns just demo_mode. The frontend reads this to adapt navigation and disable the wizard.

Use case

Run a public instance (such as the one at simswarm.xyz) with DEMO_MODE=true so visitors can explore curated and shared results without being able to register or consume GPU resources. For a private or internal instance where users run their own simulations, leave it false.