Built to behanded to an auditor.
Djinious is API-first and self-hosted. It speaks the protocols your estate already speaks, stores its configuration as a signed artefact, and records who did what to which tag, when, and on whose authority.

Fits the estate you already have
OPC-UA server, not just a client
Your SCADA, historian or MES connects to Djinious as an OPC-UA server: AnalogItem nodes with engineering units and EU range, historical access served from TimescaleDB, and Alarms & Conditions with an acknowledgement round-trip.
Role-based access on the address space
Djinious roles map to OPC-UA well-known roles. Writable nodes carry explicit write permissions, so an anonymous session is read-only and an operator session is not an engineer's.
Governed external writes
A write arriving over OPC-UA becomes a command: interlocks, policy and read-back, attributed to the session's user. External systems get the same guarantees as the operator at the console.
MCP + REST for agents
An embedded MCP server exposes the platform to AI agents over API-key-scoped JSON-RPC, alongside the same REST API the product's own front end uses.
Answers the questions after an incident
Attributed command history
Every command carries its requester, prior value, requested value, interlock result, approval record and read-back — including commands that originated from an agent or an external session.
Signed configuration snapshots
Assets, tags, screens, alarm definitions, connections and processes snapshot into a signed, versioned project with a deployment mode. Export it, diff it, restore it.
Procedure provenance
A published procedure records its authorship mode, its generation record, its validation report and its version — so 'who wrote this and what was it checked against' has an answer.
Audit events on the wire
Governed writes and method calls raise OPC-UA audit events carrying the client user id, so an existing SIEM or historian can subscribe rather than scrape logs.
Runs where you need it to run
Self-hosted by default
A Docker Swarm stack: the Bun application, SurrealDB and TimescaleDB, behind your reverse proxy. Data stays on your infrastructure.
Fails loud in production
The server refuses to start with a default JWT secret or default database credentials, will not reflect arbitrary CORS origins, and has no seeded default admin password outside development.
Five languages
English, French, German, Italian and Romanian, including data-driven labels such as asset kinds and operational statuses.
Honest degradation
If the historian is unavailable, trend views say so instead of drawing an empty chart. If a connection drops, its tags report not-connected and the lamps go grey.
Roll it back the way you rolled it out
A deployment's configuration is a signed, versioned artefact — not a database state nobody is willing to touch.

Send us your hardest requirement.
Redundancy, an air gap, a specific alarm philosophy, a protocol we have not named. We would rather tell you what is not built than find out together in month three.