Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/EVerest/everest-core/llms.txt

Use this file to discover all available pages before exploring further.

The manifest.yaml file is the heart of every EVerest module. It defines metadata, configuration parameters, provided interfaces, and required dependencies.

Basic Structure

A minimal manifest looks like this:
description: Brief description of the module
provides:
  main:
    interface: interface_name
    description: What this implementation provides
metadata:
  license: https://opensource.org/licenses/Apache-2.0
  authors:
    - Your Name

Complete Schema

Description

The top-level description explains the module’s purpose:
description: >-
  Simple implementation of a memory-backed key-value store.
  Provides basic storage operations without persistence.
Multi-line descriptions use >- for better readability.

Configuration Section

Define user-configurable parameters:
config:
  connector_id:
    description: Connector id of this evse manager
    type: integer
  evse_id:
    description: EVSE ID
    type: string
    default: DE*PNX*E1234567*1
  charge_mode:
    description: Select charging mode
    type: string
    enum:
      - AC
      - DC
    default: AC
  ac_nominal_voltage:
    description: Nominal AC voltage between phase and neutral in Volt
    type: number
    default: 230
  session_logging:
    description: Enable/Disable session log file output
    type: boolean
    default: false
  timeout_ms:
    description: Timeout in milliseconds
    type: integer
    minimum: 1000
    default: 5000

Configuration Types

parameter_name:
  description: Description of the parameter
  type: string
  default: "default_value"
  pattern: ^[A-Za-z0-9_]*$  # Optional regex pattern
parameter_name:
  description: Description of the parameter
  type: integer
  default: 100
  minimum: 0     # Optional
  maximum: 1000  # Optional
parameter_name:
  description: Description of the parameter
  type: number
  default: 230.0
  minimum: 0.0
parameter_name:
  description: Description of the parameter
  type: boolean
  default: true
parameter_name:
  description: Description of the parameter
  type: string
  enum:
    - Option1
    - Option2
    - Option3
  default: Option1

Provides Section

Define interfaces your module implements:
provides:
  evse:
    interface: evse_manager
    description: This is the main evsemanager interface
  energy_grid:
    interface: energy
    description: This is the tree leaf interface to build the energy supply tree
  token_provider:
    interface: auth_token_provider
    description: Provides authtokens for autocharge or plug and charge
Each provided interface:
  • Has a unique implementation ID (e.g., evse, energy_grid)
  • References an interface definition from interfaces/
  • Includes a description of what this implementation does

Requires Section

Declare dependencies on other modules:
requires:
  bsp:
    interface: evse_board_support
  powermeter_grid_side:
    interface: powermeter
    min_connections: 0
    max_connections: 1
  slac:
    interface: slac
    min_connections: 0
    max_connections: 1
  store:
    interface: kvs
    min_connections: 0
    max_connections: 1

Connection Cardinality

  • Required (default): min_connections: 1, max_connections: 1
  • Optional: min_connections: 0, max_connections: 1
  • Optional multiple: min_connections: 0, max_connections: 128
If min_connections and max_connections are not specified, the requirement is mandatory (exactly one connection required).

Metadata Section

Provide module metadata:
metadata:
  license: https://opensource.org/licenses/Apache-2.0
  authors:
    - Cornelius Claussen
    - Anton Woellert

Enable Features

Enable optional framework features:
enable_external_mqtt: true  # Allow external MQTT access
enable_telemetry: true      # Enable telemetry data collection

Real-World Examples

Simple Module (Store)

From modules/Misc/Store/manifest.yaml:
description: Simple implementation of a memory-backed key-value store
provides:
  main:
    interface: kvs
    description: This implements a key-value store
metadata:
  license: https://opensource.org/licenses/Apache-2.0
  authors:
    - Kai-Uwe Hermann
    - Thilo Molitor

Complex Module (EvseManager)

From modules/EVSE/EvseManager/manifest.yaml (abbreviated):
description: >-
  EVSE Manager. Grid side power meter: Will be used for energy management.
  Will also be used for billing if no car side power meter connected.

config:
  connector_id:
    description: Connector id of this evse manager
    type: integer
  evse_id:
    description: EVSE ID
    type: string
    default: DE*PNX*E1234567*1
  charge_mode:
    description: Select charging mode
    type: string
    enum:
      - AC
      - DC
    default: AC
  ac_nominal_voltage:
    description: Nominal AC voltage between phase and neutral in Volt
    type: number
    default: 230
  session_logging:
    description: Enable/Disable session log file output
    type: boolean
    default: false

provides:
  evse:
    interface: evse_manager
    description: This is the main evsemanager interface
  energy_grid:
    interface: energy
    description: This is the tree leaf interface to build the energy supply tree
  token_provider:
    interface: auth_token_provider
    description: Provides authtokens for autocharge or plug and charge

requires:
  bsp:
    interface: evse_board_support
  powermeter_grid_side:
    interface: powermeter
    min_connections: 0
    max_connections: 1
  slac:
    interface: slac
    min_connections: 0
    max_connections: 1
  hlc:
    interface: ISO15118_charger
    min_connections: 0
    max_connections: 1

enable_external_mqtt: true
enable_telemetry: true

metadata:
  license: https://opensource.org/licenses/Apache-2.0
  authors:
    - Cornelius Claussen
    - Anton Woellert

Testing Module (ExampleErrorRaiser)

From modules/Examples/error-framework/ExampleErrorRaiser/manifest.yaml:
description: Simple example module written in C++ to demonstrate error handling on raiser side
provides:
  example_raiser:
    interface: example_error_framework
    description: This implements an example interface
metadata:
  license: https://opensource.org/licenses/Apache-2.0
  authors:
    - Andreas Heinrich

Configuration in Runtime Configs

Manifest config parameters are set in runtime configuration files (config.yaml):
active_modules:
  evse_manager:
    module: EvseManager
    config_module:
      connector_id: 1
      evse_id: "DE*PNX*E1234567*1"
      charge_mode: "AC"
      ac_nominal_voltage: 230
      session_logging: true

Validation

Manifest files are validated against JSON schemas in the framework.
Use ev-cli to validate your manifest:
ev-cli module create MyModule --diff
This shows any validation errors before creating files.

Best Practices

1

Descriptive Names

Use clear, descriptive names for configuration parameters and implementation IDs.
2

Sensible Defaults

Provide sensible defaults for all optional configuration parameters.
3

Documentation

Write clear descriptions for all parameters and interfaces.
4

Minimal Requirements

Only require interfaces that are truly mandatory. Use optional connections when possible.
5

Enum Validation

Use enums for parameters with a fixed set of valid values.

Next Steps

Creating Modules

Learn how to implement the module code

Interface Reference

Browse available interface definitions

Configuration

Learn about runtime configuration

ev-cli Tool

Master the module generation tool

Build docs developers (and LLMs) love