BooleX.ai DOCS Book a demo
Docs / IT documentation

Deployment profiles

Production, offline import, hybrid, client cloud and development, and what each lets out.

The deployment profile decides what may connect where. It is one word in deploy/config/profile, read once at start-up; a change takes effect at the next restart and is audited. Without the file, the profile is production.

shell
echo production > deploy/config/profile    # or offline_import, hybrid, client_cloud, development
make up PROFILES=                            # restart the stack
ProfilePlant connectionLanguage modelWhat leaves the edge PC
production (default)Live, read-onlyOn the edge PC or plant network onlyNothing
offline_importNone: alarm logs, trend exports and code exports arrive as filesOn the edge PC onlyNothing
hybridLive, read-onlyAn endpoint the site approved in approved_endpointsOnly the question, the conversation and the cited excerpts, to that endpoint; each call audited with the endpoint, time and source IDs
client_cloudA site collector reads and sends outbound to the client's own cloud accountIn the client's cloud account or an approved endpointThe values, alarm events and gaps the collector reads, to the client's receiver
developmentAny, including the simulatorAny, including cloud modelsNot for plant data

Rules the profiles enforce

  • Production and offline import are air-gapped. A cloud model configured in llm.json is refused at start-up; no telemetry, licence or update check is made.
  • HTTPS only outside development: the Web UI needs BOOLE_TLS_CERT and BOOLE_TLS_KEY, and HTTP is refused.
  • OPC UA security None is refused outside development.
  • A customer site never runs in development: with customer_site: true in site.yaml, the development profile is refused at start-up.
  • Demo-only actions (replaying a fault, emptying process data with --reset) are refused outside development.

Offline import

Use it where the conduit to the control network is not approved yet, or for the week-0 assessment. Import alarm logs and trend exports with python -m edge.import_history, and code exports and documents through the watched folder or the importers: see Connect a historian and Import code exports.

Hybrid

List the endpoint in site.yaml and select the profile:

site.yaml
approved_endpoints: ["https://client-tenant.openai.azure.com/openai/v1"]

An empty list accepts no external endpoint. The flow is F7 in Network and security.

Client cloud

Only a site collector stays on site (deploy/compose.collector.yaml); the store, the assistant and the receiver run in the client's own cloud account (deploy/compose.yaml with deploy/compose.cloud.yaml). Both sides refuse to start in any other profile.

shell
# cloud side
docker compose -f deploy/compose.yaml -f deploy/compose.cloud.yaml up -d
python -m edge.receiver_service add SITE --file /config/collectors.json   # prints the collector's token once
# site side: put the token in deploy/secrets/uplink_token, set BOOLE_UPLINK_URL
docker compose -f deploy/compose.collector.yaml up -d

The collector opens the only connection (outbound HTTPS, F13) and listens on no port. While the receiver cannot be reached it keeps everything in its local spool and sends it in order when the link is back; if the spool fills (5 million records by default), the oldest readings are dropped and recorded as a data gap.