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
.cspkgfiles 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:
Tip
Back up the PostgreSQL database regularly. Grain state, alarm history, historian data, and audit logs are all stored there.