Skip to content

On-Premises Server

The site server runs on-premises at each physical site — in the control room, server room, or a co-located data centre. It is the operational core that serves operator interfaces, processes alarms, and manages edge devices.

What runs on the site server

Component Purpose
consystence-server .NET 10 application hosting Orleans silo, SignalR hubs, and the API layer
PostgreSQL Grain state persistence, historian, alarm/event log
Local LLM (optional) Qwen3-32B on RTX 5090 for air-gapped AI features

Single-tenant mode

Each site server runs in single-tenant mode — one organisation, one site. This is a deliberate design decision for mining environments:

  • Data sovereignty — all process data stays on-premises.
  • Network isolation — the site server does not require internet access for core operations.
  • Simplicity — no multi-tenant routing or cross-site interference.

The site's organisation and identity are configured during initial setup (via the setup wizard or API).

Installation

Prerequisites

Requirement Minimum Recommended
OS Ubuntu 22.04 LTS Ubuntu 24.04 LTS
.NET SDK 10.0 10.0
PostgreSQL 15 17
RAM 8 GB 16 GB
CPU 4 cores 8+ cores
GPU (optional) RTX 5090 (for local LLM)

Setup

git clone https://github.com/consystence/consystence-server.git
cd consystence-server

# Configure database
export DATABASE_CONNECTION_STRING="Host=localhost;Database=consystence;Username=consystence;Password=<password>"

# Restore and run
dotnet restore
dotnet run -c Release

On first launch, the setup wizard guides you through registering the server with the cloud tier and binding it to a site.

Systemd service

For production, register as a systemd service:

sudo cp consystence-server.service /etc/systemd/system/
sudo systemctl enable consystence-server
sudo systemctl start consystence-server

Configuration

Cloud-connected mode

In normal operation, the site server connects to the cloud tier for:

  • Licence validation
  • Type marketplace access
  • Fleet analytics data upload
  • Edge ML model updates

Configuration is pushed from the cloud and cached locally. If the cloud connection drops, the server continues operating with its cached configuration.

Air-gapped mode

For sites with no internet access, configure the server in air-gapped mode:

{
  "Cloud": {
    "Enabled": false
  },
  "Licence": {
    "Mode": "offline",
    "LicenceFile": "/etc/consystence/licence.json"
  },
  "AI": {
    "Provider": "local",
    "ModelPath": "/opt/consystence/models/qwen3-32b"
  }
}

In air-gapped mode:

  • Licence is validated from a local file (see Licensing).
  • Device types are installed from .cspkg files delivered via USB.
  • ML models are delivered via USB.
  • The local LLM handles AI features without cloud API access.

Orleans clustering

Environment Provider Notes
Development Localhost Single silo, in-process
Production ADO.NET (PostgreSQL) One or more silos for redundancy

For high-availability production sites, run multiple silo instances behind a load balancer. Orleans handles grain placement and rebalancing automatically.

Backup

The site server's state lives in PostgreSQL. Standard PostgreSQL backup strategies apply:

# Daily backup
pg_dump -U consystence consystence > /backups/consystence-$(date +%Y%m%d).sql

Tip

Back up the PostgreSQL database regularly. Grain state, alarm history, historian data, and audit logs are all stored there.