Skip to main content
Secret Management is an enterprise-only feature and requires the enterprise Bifrost image and a PostgreSQL config store.
Connect an external secret manager so provider keys and other credentials are never stored in Bifrost’s database. Configure vault_store under config_store in config.json. Once connected, any secret field in config.json accepts a vault.<path> reference in place of a plaintext value or env.* reference. See Secret Management for the full list of supported fields, access modes, and secret rotation.

Configuration

AWS fields

FieldRequiredDescription
regionNoAWS region (e.g. us-east-1). Falls back to AWS_DEFAULT_REGION or instance metadata if unset.
access_key_idNoRequired when not using IAM roles. Must be set with secret_access_key.
secret_access_keyNoMust be set with access_key_id.
session_tokenNoFor STS-issued temporary credentials.
role_arnNoIAM role to assume via STS.
kms_key_idNoKMS key for encrypting new secrets (read_and_write only).
Minimum IAM policy for read_only:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "arn:aws:secretsmanager:us-east-1:*:secret:bifrost/*"
    },
    {
      "Effect": "Allow",
      "Action": "secretsmanager:ListSecrets",
      "Resource": "*"
    }
  ]
}
Add secretsmanager:CreateSecret, secretsmanager:PutSecretValue, and secretsmanager:DeleteSecret for read_and_write.

Common fields

These apply regardless of backend:
FieldRequiredDescription
enabledYesEnable vault integration.
typeYesBackend: aws-secrets-manager, gcp-secret-manager, or hashicorp-vault.
prefixNoPath prefix for Bifrost-managed secrets. Defaults to bifrost.
access_modeNoread_only (default) - resolve refs only. read_and_write - also auto-store plaintext values and delete owned secrets on removal.

Using vault references

Once configured, any secret field accepts a vault.<path> reference:
{
  "providers": {
    "openai": {
      "keys": [
        {
          "models": ["gpt-4o", "gpt-4o-mini"],
          "value": "vault.bifrost/providers/openai/key"
        }
      ]
    }
  }
}

Full example

{
  "config_store": {
    "enabled": true,
    "type": "postgres",
    "config": {
      "host": "env.PG_HOST",
      "port": "5432",
      "user": "env.PG_USER",
      "password": "env.PG_PASSWORD",
      "db_name": "bifrost",
      "ssl_mode": "require"
    },
    "vault_store": {
      "enabled": true,
      "type": "aws-secrets-manager",
      "prefix": "bifrost",
      "access_mode": "read_and_write",
      "aws": {
        "region": "us-east-1"
      }
    }
  },
  "providers": {
    "openai": {
      "keys": [
        {
          "models": ["gpt-4o", "gpt-4o-mini"],
          "value": "vault.bifrost/providers/openai/key"
        }
      ]
    },
    "anthropic": {
      "keys": [
        {
          "models": ["claude-opus-4-8", "claude-sonnet-4-6"],
          "value": "vault.bifrost/providers/anthropic/key"
        }
      ]
    }
  }
}