Skip to Content
DocumentationDeploymentHelm

Helm

The primary way to deploy Erato is via the official Helm chart.

Repository

It is currently published to the repository oci://harbor.imassage.me/erato-helm-dev, and tagged with a fixed 0.1.0 version number followed by the Git commit hash. A new version is published on every commit to the main branch.

⚠️
Warning

The repository URL will soon be replaced with a new stable one, and the releases tagged with version numbers matching the application version.

Usage

To use as a subchart in a chart of your own, where you override the values in a values.yaml, add the following to your Chart.yaml:

dependencies: - name: erato version: "0.1.0-5038d92f711a1aee7cfbeccfde6f17b15c5a9b95" repository: "oci://harbor.imassage.me/erato-helm-dev"

values.yaml reference

🚧Work in progress 🚧

Some example usage can be found in the erato-local chart of our repository, that we use as part of our end-to-end integration tests.

erato.toml configuration in the Helm chart

Erato supports loading multiple configuration files to help organize and manage different aspects of your configuration. This is particularly useful for scenarios like MCP server configurations, where you might want to separate sensitive credentials or environment-specific settings.

How It Works

In addition to the main erato.toml file, Erato automatically discovers and loads all files matching the pattern *.auto.erato.toml in the application directory. These files are merged with the main configuration, allowing you to split your configuration across multiple files.

Helm Chart Support

The Helm chart provides flexible support for multiple configuration files through the backend.extraConfigFiles value:

backend: # Main configuration file configFile: secretName: "erato-main-config" secretKey: "erato.toml" # Additional configuration files (automatically named *.auto.erato.toml) extraConfigFiles: - name: "mcp-servers" secretName: "erato-mcp-config" secretKey: "mcp-servers.toml" - name: "secrets" inlineContent: | [mcp_servers.private_api] transport_type = "sse" url = "https://private-api.example.com/sse" http_headers = { "Authorization" = "Bearer secret-token" }

MCP Server Use Case

This multi-file approach is especially beneficial for MCP server configurations, and connecting multiple seperately deployed/external MCP servers:

Main erato.toml (public configuration):

[chat_provider] provider_kind = "openai" model_name = "gpt-4o" [frontend] theme = "custom-theme"

mcp-servers.auto.erato.toml (MCP-specific configuration):

[mcp_servers.file_provider] transport_type = "sse" url = "http://file-server:8080/sse" [mcp_servers.database_tools] transport_type = "sse" url = "http://db-tools:9090/sse" http_headers = { "X-API-Key" = "database-access-key" }

Configuration Sources

Each extra configuration file can be provided through:

  • Kubernetes Secret: Reference an existing secret containing the configuration
  • ConfigMap: Reference a ConfigMap for non-sensitive configuration
  • Inline Content: Define the configuration directly in your Helm values

Example with different sources:

backend: extraConfigFiles: # From a Kubernetes secret - name: "mcp-secrets" secretName: "mcp-credentials" secretKey: "config.toml" # From a ConfigMap - name: "mcp-public" configMapName: "mcp-public-config" configMapKey: "servers.toml" # Inline content - name: "feature-flags" inlineContent: | [features] experimental_mode = true

This approach allows you to:

  • Keep sensitive MCP server credentials in separate secrets
  • Share common MCP server configurations across environments
  • Manage different aspects of configuration independently
  • Maintain clean separation between application and integration settings
Last updated on