Skip to main content

Configuration Reference

vibeD is configured via a YAML file and environment variables.

Config File

Default search paths: ./vibed.yaml, /etc/vibed/vibed.yaml

server:
transport: "http" # stdio | http | both
httpAddr: ":8080" # HTTP listen address
logFormat: "text" # text | json (structured JSON for log aggregation)
logLevel: "info" # debug | info | warn | error

auth:
enabled: false # Enable authentication for /mcp/ and /api/ endpoints
mode: "apikey" # apikey | oauth
apiKeys:
- key: "env:VIBED_API_KEY" # Resolve from environment variable
name: "default"
- key: "vibed_sk_..." # Literal API key value
name: "ci-pipeline"
scopes: ["deploy"]
- key: "env:ALICE_KEY" # Per-user storage override
name: "alice"
storage: # Optional: route this user's artifacts to a dedicated repo
backend: "github" # github | gitlab
github:
owner: "alice-org"
repo: "alice-artifacts"
token: "env:ALICE_GITHUB_TOKEN"
tls:
enabled: false # Enable HTTPS
certFile: "" # Path to TLS certificate file
keyFile: "" # Path to TLS private key file
autoTLS: false # Auto-generate self-signed cert (dev only)

deployment:
preferredTarget: "auto" # auto | knative | kubernetes | wasmcloud
namespace: "default" # K8s namespace for deployed artifacts

builder:
engine: "buildah" # Container image builder (Buildah via K8s Jobs)
buildah:
image: "quay.io/buildah/stable:latest" # Buildah container image
timeout: "10m" # Build job timeout
insecure: false # Set true for HTTP registries (e.g. in-cluster)

storage:
backend: "local" # local | github | gitlab
local:
basePath: "/data/vibed/artifacts"
github:
owner: ""
repo: ""
branch: "main"
gitlab:
url: "https://gitlab.com" # GitLab instance URL
projectID: 0 # GitLab project ID (required for gitlab backend)
branch: "main"
token: "" # Access token or "env:GITLAB_TOKEN" / "file:/path"

registry:
enabled: false
url: "" # e.g. "ghcr.io/myorg/vibed"

store:
backend: "sqlite" # sqlite (default) | memory | configmap
sqlite:
path: "/data/vibed.db" # SQLite database file path
configmap:
name: "vibed-artifacts"
namespace: "vibed-system"

gc:
enabled: true # Enable resource garbage collector
interval: "1h" # How often GC runs
maxAge: "24h" # Age threshold for orphaned resources
dryRun: false # Log without deleting (for testing)

kubernetes:
kubeconfig: "" # Empty = in-cluster config
context: "" # Specific kubeconfig context

knative:
domainSuffix: "127.0.0.1.sslip.io"
ingressClass: "kourier.ingress.networking.knative.dev"

Environment Variables

Every config field has an environment variable override:

VariableConfig PathExample
VIBED_SERVER_TRANSPORTserver.transporthttp
VIBED_SERVER_HTTP_ADDRserver.httpAddr:9090
VIBED_LOG_FORMATserver.logFormatjson
VIBED_LOG_LEVELserver.logLeveldebug
VIBED_DEPLOYMENT_PREFERRED_TARGETdeployment.preferredTargetknative
VIBED_DEPLOYMENT_NAMESPACEdeployment.namespaceapps
VIBED_BUILDER_ENGINEbuilder.enginebuildah
VIBED_BUILDER_BUILDAH_IMAGEbuilder.buildah.imagequay.io/buildah/stable:latest
VIBED_BUILDER_BUILDAH_INSECUREbuilder.buildah.insecuretrue
VIBED_STORAGE_BACKENDstorage.backendgithub or gitlab
VIBED_STORAGE_LOCAL_BASE_PATHstorage.local.basePath/data
VIBED_STORAGE_GITHUB_OWNERstorage.github.ownermyorg
VIBED_STORAGE_GITHUB_REPOstorage.github.repovibed-artifacts
VIBED_REGISTRY_ENABLEDregistry.enabledtrue
VIBED_REGISTRY_URLregistry.urlghcr.io/...
VIBED_STORE_BACKENDstore.backendsqlite
VIBED_STORE_SQLITE_PATHstore.sqlite.path/data/vibed.db
VIBED_GC_ENABLEDgc.enabledtrue
VIBED_GC_INTERVALgc.interval1h
VIBED_GC_MAX_AGEgc.maxAge24h
VIBED_GC_DRY_RUNgc.dryRuntrue
VIBED_AUTH_ENABLEDauth.enabledtrue
VIBED_AUTH_MODEauth.modeapikey
VIBED_AUTH_API_KEY(appends API key)vibed_sk_...
VIBED_TLS_ENABLEDauth.tls.enabledtrue
VIBED_TLS_CERT_FILEauth.tls.certFile/etc/tls/tls.crt
VIBED_TLS_KEY_FILEauth.tls.keyFile/etc/tls/tls.key
VIBED_TLS_AUTOauth.tls.autoTLStrue
KUBECONFIGkubernetes.kubeconfig~/.kube/config
GITHUB_TOKEN(GitHub storage auth)ghp_...
GITLAB_TOKEN(GitLab storage auth)glpat-...