Skip to content

Search these docs from your AI tool

  • Antigravity
    {
      "mcpServers": {
        "edisyl-docs": {
          "serverUrl": "https://docs.edisyl.com/mcp"
        }
      }
    }
  • Claude CodeCLI
    claude mcp add edisyl-docs https://docs.edisyl.com/mcp --transport http --scope user
  • CodexCLI
    codex mcp add --url https://docs.edisyl.com/mcp edisyl-docs
  • Cursor
    {
      "mcpServers": {
        "edisyl-docs": {
          "type": "http",
          "url": "https://docs.edisyl.com/mcp"
        }
      }
    }
  • Gemini CLI
    gemini mcp add --transport http edisyl-docs https://docs.edisyl.com/mcp
  • Goose
    {
      "extensions": {
        "edisyl-docs": {
          "enabled": true,
          "name": "edisyl-docs",
          "type": "streamable_http",
          "uri": "https://docs.edisyl.com/mcp",
          "envs": {},
          "env_keys": [],
          "headers": {},
          "description": "",
          "timeout": 300,
          "bundled": null,
          "available_tools": []
        }
      }
    }
  • JetBrains AI Assistant
    {
      "mcpServers": {
        "edisyl-docs": {
          "type": "http",
          "url": "https://docs.edisyl.com/mcp"
        }
      }
    }

    Paste into Settings → Tools → AI Assistant → Model Context Protocol → Add → As JSON. Direct file writing isn’t supported — JetBrains stores this per-version as XML.

  • Junie (JetBrains)
    {
      "mcpServers": {
        "edisyl-docs": {
          "url": "https://docs.edisyl.com/mcp"
        }
      }
    }
  • OpenCode
    {
      "mcp": {
        "edisyl-docs": {
          "type": "remote",
          "url": "https://docs.edisyl.com/mcp"
        }
      }
    }
  • VS CodeCLI
    code --add-mcp '{"name":"edisyl-docs","type":"http","url":"https://docs.edisyl.com/mcp"}'
  • Windsurf
    {
      "mcpServers": {
        "edisyl-docs": {
          "serverUrl": "https://docs.edisyl.com/mcp"
        }
      }
    }

    Supports both stdio and native HTTP connections.

Configuration reference

This page lists what the chart needs from you: every credential it reads, the Secrets you create for it, and the values without which it refuses to render. For every other setting and its default, see the values reference.

Status says whether you have to act: required, conditional (with the condition), optional, or removed (with the chart version). Produced by says where the value comes from:

  • Chart — generated on the first install when you leave it blank, then read back on every upgrade so it never rotates. Only under secrets.provider: k8s-native. Under external-secrets the chart generates nothing, and every key listed here for your answers has to be in your store first. Under Argo CD, supply each one yourself: see Configuration.
  • You — you produce it, with the command shown.
  • An external system — your database, Redis, identity provider or gateway already holds it.

Credentials go in secrets.managed.<group>.data in a gitignored values file, or in your store under the same key name. See Secrets and signing keys.

Key Status Produced by How
DATABASE_URL (group edisyl-database) Conditional: database.source: managed Your database postgresql://edisyl:<password>@<host>:5432/edisyl?sslmode=require, password percent-encoded

The other databases are read from Secrets you create, not from secrets.managed. With the bundled clusters the chart creates each one whose consumer reads from them: auth unless edisyl.auth.database.create: false, and Inngest and the gateway with their database.source: cnpg.

Secret Status Keys How
database.existingSecret.name Conditional: database.source: existing-secret database.existingSecret.key, default uri Your tooling, or a platform Postgres claim
mono-auth-db (edisyl.auth.database.secretName) Conditional: when the chart does not create the auth database (edisyl.auth.database.create unset with cnpg.enabled false, or false) uri (edisyl.auth.database.secretKey) kubectl create secret, see The auth database
edisyl-inngest-db Conditional: inngest.database.source: existing-secret uri kubectl create secret, see The Inngest database
bifrost.database.existingSecret.name Conditional: bundled gateway, bifrost.database.source: existing-secret host, port, username, password, dbname (renamable under keys) kubectl create secret, see The gateway database
Value Status Notes
database.source Required managed (default), existing-secret or cnpg
cnpg.enabled Conditional: true for any cnpg source Off by default
cnpg.clusters.<database>.* Optional Per-database sizing for services, auth, inngest, bifrost; see Sizing
inngest.database.source Optional, set it cnpg, existing-secret or sqlite. Unset follows cnpg.enabled, and without bundled clusters means SQLite, which loses run history on restart
edisyl.auth.database.secretName, secretKey Conditional: when the chart does not create the auth database (edisyl.auth.database.create unset with cnpg.enabled false, or false) Default mono-auth-db, uri
bifrost.database.source, sslMode Conditional: bundled gateway cnpg (default) or existing-secret; sslMode default require
Key Status Produced by How
REDIS_PASSWORD (groups edisyl-redis, edisyl-redis-auth) Required Chart, for bundled Redis; your Redis otherwise Bundled under external-secrets: openssl rand -hex 24, the password bundled Redis then enforces. Own Redis: its password; a passwordless Redis needs one
INNGEST_REDIS_URI (group edisyl-redis-inngest) Conditional: bundled Inngest Chart, from the bundled Redis password; you otherwise Bundled: redis://:<REDIS_PASSWORD>@edisyl-redis.<namespace>.svc:6379. Own: rediss://<user>:<password>@<host>:<port>
Value Status Notes
config.redisHost, redisPort, redisUser Conditional: redis.enabled: false without Sentinel redisTls optional
config.redisSentinels, redisSentinelMaster Conditional: Redis behind Sentinel Replace host and port

Bundled Redis always has a password. ElastiCache IAM authentication is not supported: use an ElastiCache user with a password, or the bundled Redis.

Key Status Produced by How
GOTRUE_JWT_KEYS (group edisyl-auth) Required You mint-auth-keys.sh
GOTRUE_JWT_SECRET (group edisyl-auth) Required You mint-auth-keys.sh
GOTRUE_SAML_PRIVATE_KEY (group edisyl-auth) Required You mint-auth-keys.sh
AUTH_ANON_KEY (group edisyl-auth-client) Required You mint-auth-keys.sh
AUTH_ADMIN_TOKEN (group edisyl-auth-admin) Required You mint-auth-keys.sh; its role must be mono_api
Value Status Notes
deploymentIdp.metadataUrl or metadataXml Required, exactly one From your identity provider
deploymentIdp.domains Required Email domains that sign in through it
bootstrap.adminEmails Required Owners of the organization
bootstrap.organization.name, slug Required on install, since 0.58.0 Read on the first install only; slug 3 to 100 of [a-z0-9-], not system
Key Status Produced by How
INNGEST_EVENT_KEY (group edisyl-inngest) Required Chart openssl rand -hex 32
INNGEST_SIGNING_KEY (group edisyl-inngest) Required Chart Even-length lowercase hex: openssl rand -hex 32
Key Status Produced by How
LLM_GATEWAY_API_KEY (group edisyl-llm-gateway) Required You Bundled gateway: the same value as BIFROST_RUNTIME_KEY. External: a virtual key on that gateway
BIFROST_ADMIN_USERNAME (group edisyl-bifrost) Required Chart, for the bundled gateway; the external gateway otherwise openssl rand -hex 12
BIFROST_ADMIN_PASSWORD (group edisyl-bifrost) Required Chart, for the bundled gateway; the external gateway otherwise openssl rand -hex 24
BIFROST_RUNTIME_KEY (group edisyl-bifrost) Required Chart, for the bundled gateway; the external gateway otherwise echo "sk-bf-$(openssl rand -hex 24)"; must begin sk-bf-
BIFROST_ENCRYPTION_KEY (group edisyl-bifrost-encryption) Conditional: bundled gateway Chart openssl rand -hex 32. Never rotate it: every stored provider credential is lost
Value Status Notes
bifrost.enabled Optional true (default) runs the gateway, with its own database
bifrost.external.url Conditional: bifrost.enabled: false The other deployment’s gateway, without /v1
Key Status Produced by How
ENCRYPTION_KEY (group edisyl-encryption) Required Chart 32 random bytes, base64: openssl rand -base64 32. Never rotate it
MONO_API_KEYS (group edisyl-mono-api-key) Required Chart openssl rand -hex 24; a comma-separated list, the first is sent
TOKEN_HMAC_KEY (group edisyl-token-hmac) Required Chart openssl rand -hex 32
Key Status Produced by How
OBJECT_STORAGE_ACCESS_KEY_ID (group edisyl-object-storage) Conditional: s3compatible; optional on s3 with a pod IAM role Your object store; chart with bundled MinIO An access key on your bucket
OBJECT_STORAGE_SECRET_ACCESS_KEY (group edisyl-object-storage) As above As above Its secret
AWS_ACCESS_KEY_ID (group edisyl-query-results-s3) Optional Chart with bundled MinIO Leave empty on AWS with a pod IAM role
AWS_SECRET_ACCESS_KEY (group edisyl-query-results-s3) Optional As above As above
rootUser (group edisyl-minio-root) Conditional: minio.enabled Chart Repeated as both access key pairs
rootPassword (group edisyl-minio-root) Conditional: minio.enabled Chart As above
Value Status Notes
config.objectStorageBucket Required An existing bucket, or edisyl-files with MinIO
config.objectStorageProvider, objectStorageRegion Conditional: without MinIO s3 (real AWS only) or s3compatible
config.objectStorageUrl Conditional: s3compatible The store’s endpoint

All optional: the API boots without each. Under external-secrets, a group you do not use either holds empty values in your store or is left out with secrets.managed.<group>.keys: []; one missing key fails its whole ExternalSecret.

Key Status Produced by How
VOYAGE_API_KEY (group edisyl-voyage) Optional Voyage AI Reranking
TYPESAFE_API_KEY, TYPESAFE_BASE_URL (group edisyl-typesafe) Optional, both or neither TypeSafe Question rewording
SLACK_BUG_REPORTS_BOT_TOKEN (group edisyl-slack) Optional Your Slack app In-app bug reports
PERPLEXITY_API_KEY (group edisyl-perplexity) Optional Perplexity Web search tool
GITHUB_APP_PRIVATE_KEY (group edisyl-github) Optional, with config.githubAppId Your GitHub App GitHub connections
CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_IMAGES_ACCOUNT_ID, CLOUDFLARE_IMAGES_API_TOKEN, CLOUDFLARE_BROWSER_RENDERING_API_TOKEN (group edisyl-cloudflare) Optional Cloudflare Leave empty unless Edisyl asks
RUDDERSTACK_WRITE_KEY (group edisyl-rudderstack) Optional RudderStack Leave empty unless Edisyl asks
Value or Secret Status Notes
config.domain Required Every public URL derives from it
images.pullSecret Conditional: unless a kubelet credential provider pulls See Registry access
images.pullSecretAuth.password Conditional: seeding the pull secret from values An ECR token, passed on the install command
config.usageExport.* Conditional: config.usageExport.enabled From the access Edisyl issued you
config.emailFrom Optional Blank runs without email
inngest.namespace.name Conditional: a namespace other than edisyl Must match the install namespace

A values file that still sets one of these is refused, or ignored where noted.

Value or key Since Instead
cnpg.instances, storageClass, storageSize, walStorageSize, resources, parameters 0.60.0 cnpg.clusters.<database>.*; refused while cnpg.enabled
cnpg.name, appSecretName, managedRoles, extraDatabases 0.60.0 Nothing; the chart names and provisions each cluster
bootstrap.seed 0.58.0 Nothing; true is refused, the chart loads no demo data
AUTH_SELFHOSTED_ANON_KEY, AUTH_SELFHOSTED_ADMIN_TOKEN (store names) 0.57.0 AUTH_ANON_KEY, AUTH_ADMIN_TOKEN
edisyl.lattice, groups edisyl-lattice, edisyl-redis-lattice 0.53.0 Nothing

Removals before 0.53.0 are listed under Upgrading from 0.36 or earlier.

Report incorrect code

Please provide a detailed description of the incorrect code.