Skip to content
EnerOS Bot edited this page Jul 5, 2026 · 1 revision

中文 | English

FAQ

Maintained version: v0.51.2 | Last updated: 2026-07-06

This page collects frequently asked questions from the EnerOS community. If your question is not answered here, check Issues or open a new issue.

Project Positioning

Q1: How does EnerOS differ from general-purpose Agent frameworks (LangChain / AutoGPT / CrewAI)?

EnerOS is a power-native OS, not a general-purpose Agent framework:

Dimension General Agent framework EnerOS
Domain General tasks Power system specific
Scheduling In-process or simple threads OS-level process scheduling + priority preemption
Real-time No guarantee Dual execution domain + RT type-level safety + WCET
Security Application layer Kernel layer (Constraint as Kernel Law)
Protocols General HTTP / API 11 power protocols natively supported
Audit Optional WORM + HMAC chain mandatory

Q2: How does EnerOS differ from SCADA / EMS?

Dimension SCADA / EMS EnerOS
Positioning Supervisory control and energy management system Operating system (OS)
Agent None 7 domain Agents + LLM integration
Decision Manual / rules Agent autonomous + human supervision
Extension Vendor proprietary Plugin marketplace + Ed25519 signing
Deployment Centralized Edge + cloud + multi-region active-active

EnerOS does not replace SCADA/EMS; it is the OS infrastructure that hosts the next generation of SCADA/EMS.

Q3: Why Rust?

Reason Explanation
Memory safety No GC, no data races; suitable for power critical infrastructure
Zero-cost abstractions Performance on par with C; meets real-time requirements
No runtime No JVM / Go runtime overhead; fast startup, low memory footprint
Strong type system Type-level encapsulation enforces "constraints cannot be bypassed" (Validated)
Mature ecosystem tokio / serde / axum and other key dependencies are mature
Cross-platform Same codebase supports x86_64 / aarch64 / embedded

Real-Time

Q4: How is real-time guaranteed?

5 layers of defense:

  1. Architecture: Dual execution domain isolation; general domain anomalies do not affect the RT domain
  2. Type-level: Validated<Command> newtype + clippy::disallowed_types compile-time lock ban
  3. Runtime: NoAlloc + AllocTracker detect heap allocation + WCET framework
  4. OS: PREEMPT_RT kernel + SCHED_FIFO + isolcpus + mlockall
  5. IPC: SPSC lock-free queue + huge pages

See the wiki Dual Execution Domain and SafetyGateway pages.

Q5: What latency does the RT domain achieve?

Operation P50 P99 P99.9
Relay protection trip < 100μs < 1ms < 5ms
Switch operation < 1ms < 10ms < 50ms
Frequency regulation < 10ms < 50ms < 100ms

P99 < 1ms is the hard target for the RT domain.

LLM and Agents

Q6: How is LLM decision safety guaranteed?

LLM decisions must pass through the SafetyGateway 7-stage pipeline:

  1. Type-level: LlmAgent::decide returns Vec<AgentAction>, not executed directly
  2. Constraint validation: all actions checked by ConstraintEngine for N-1 / thermal / voltage
  3. Priority arbitration: multi-Agent conflicts resolved by PriorityArbiter
  4. Audit: all decisions written to WORM audit log + HMAC chain
  5. Type-level unbypassable: RT domain API only accepts Validated<Command>

The LLM never directly controls devices.

Q7: What if the LLM output is wrong?

Four hard metrics (C1-C4) + v0.50.2 semantic correctness framework:

  • C1: Action consistency ≥ 80%
  • C2: Decision auditability 100%
  • C3: Violation detection rate 100%
  • C4: Latency compliance ≥ 95%

See the wiki LLM Integration page.

Q8: Is LLM mandatory?

No. LLM is optional. EnerOS's 7 Agents use rule / optimization algorithms by default; LLM is only an LlmAgent<T> decorator enhancement. Without LLM, Agents still operate independently.

Multi-Tenancy and Isolation

Q9: Is multi-tenancy necessary?

Common power industry requirements:

  • Provincial-municipal integration: provincial dispatch + municipal dispatch in the same EnerOS instance
  • Substation clusters: multiple substations sharing operations
  • Integrated energy: electricity / heat / gas multi-energy coordination

Multi-tenancy provides namespace isolation + quotas + cross-tenant default deny, preventing different organizations from interfering. See the wiki Multi-Tenancy page.

Q10: Why does cross-tenant access return 404 instead of 403?

404 does not leak resource existence, preventing attackers from enumerating tenant_id to probe other tenants' resources. This is the default-deny principle of zero-trust architecture.

Commercial Use

Q11: Can EnerOS be used commercially?

Yes. EnerOS is MIT-licensed, allowing commercial use, modification, distribution, and private deployment. See the main repo LICENSE.

Q12: Does commercial deployment require payment?

No. Under the MIT license EnerOS is completely free. Commercial support (consulting / customization / SLA) please contact the project maintainers.

Development and Contribution

Q13: How to contribute?

  1. Read the main repo CONTRIBUTING.md
  2. Fork the repo + create a feature branch
  3. Follow the conventional commits specification
  4. PRs must pass the 7 quality gates
  5. Major architecture decisions require a new ADR

Q14: What if documentation and code are inconsistent?

Per the project memory system rules: any documentation found inconsistent with the current code (even outside the current task scope) must be fixed promptly to maintain documentation freshness. You can directly open a PR to fix the documentation.

Related Documentation

Clone this wiki locally