Skip to content

Environment Variables

AI Crawler / Raw View: Fetch this page as raw Markdown at /reference/environment-variables.md.

Cloud Harness MCP is configured via environment variables supplied to the stateless API, the Runner, and the Cloudflare Worker Gateway.

Copy .env.example to .env and replace all change-me placeholder secrets before starting services.

Configuration Table

VariableDefault / ExampleRequired / ModeDescription & Purpose
MCP_BEARER_TOKENchange-me-at-least-32-random-charactersRequiredCopy to .env and replace every change-me value. Never commit real secrets.
RUNNER_TOKENchange-me-independent-runner-tokenRequiredRequired configuration.
OWNER_IDownerRequiredRequired configuration.
AUTH_MODEowner-bearerRequiredowner-bearer (default) or cloudflare-access. In Access mode, remove MCP_BEARER_TOKEN.
CLOUDFLARE_ACCESS_ISSUERhttps://your-team.cloudflareaccess.comOptionalOptional configuration.
CLOUDFLARE_ACCESS_AUDIENCEOptionalOptional configuration.
CLOUDFLARE_ACCESS_JWKS_URLhttps://your-team.cloudflareaccess.com/cdn-cgi/access/certsOptionalOptional configuration.
API_KEY_AUTH_ENABLEDfalseOptionalOptional managed API-key lane. Enable all four together only in cloudflare-access mode. The gateway audience belongs to a separate Access application scoped exactly to /mcp-api-key.
API_KEY_GATEWAY_ACCESS_AUDIENCEOptionalOptional configuration.
API_KEY_GATEWAY_SERVICE_SUBJECTcf-service:base64url-cloudflare-service-token-client-idOptionalOptional configuration.
API_KEY_GATEWAY_PUBLIC_URLhttps://api.harness.zuey.me/mcpOptionalOptional configuration.
ACCESS_LEGACY_OWNER_IDownerOptionalWorker-only secrets CF_ACCESS_CLIENT_ID and CF_ACCESS_CLIENT_SECRET are configured with Wrangler, never here. Exact one-time legacy owner binding for the first Access rollout:
ACCESS_LEGACY_ISSUERhttps://your-team.cloudflareaccess.comOptionalOptional configuration.
ACCESS_LEGACY_SUBJECTOptionalOptional configuration.
ACCESS_PRINCIPAL_RELINKS[]OptionalOptional audited subject-rotation mappings, supplied as strict JSON:
API_PUBLIC_HOSTSlocalhost,127.0.0.1,cloud-harness-mcp.46-250-239-227.sslip.ioRequiredRequired configuration.
API_ALLOWED_ORIGINShttps://cloud-harness-mcp.46-250-239-227.sslip.ioRequiredRequired configuration.
API_PORT3000RequiredRequired configuration.
RUNNER_PORT3001RequiredRequired configuration.
RUNNER_URLhttp://runner:3001RequiredRequired configuration.
JOBS_ROOT/var/lib/cloud-harness/jobsRequiredRequired configuration.
STATE_DB/var/lib/cloud-harness/state/cloud-harness.dbRequiredRequired configuration.
ARTIFACT_ROOT/var/lib/cloud-harness/artifactsRequiredRequired configuration.
MAX_ARTIFACT_BYTES16777216RequiredRequired configuration.
MAX_PRINCIPAL_ARTIFACT_BYTES134217728RequiredRequired configuration.
ARTIFACT_RETENTION_SECONDS86400RequiredRequired configuration.
EXECUTOR_IMAGEcloud-harness-executor:localRequiredRequired configuration.
ALLOWED_GIT_HOSTSgithub.comRequiredRequired configuration.
WORKSPACE_NETWORK_MODEnoneRequiredRequired configuration.
WORKSPACE_WALL_TTL_SECONDS900RequiredRequired configuration.
WORKSPACE_IDLE_TTL_SECONDS300RequiredRequired configuration.
GITHUB_APP_IDOptionalOptional GitHub App repository access; required fields depend on AUTH_MODE:
GITHUB_APP_INSTALLATION_IDOptionalRequired in owner-bearer mode; omit in Access mode, where each principal binds an installation:
GITHUB_APP_SLUGOptionalRequired in Access mode for the installation redirect:
GITHUB_APP_PRIVATE_KEY_FILE/run/cloud-harness-secrets/github-app-private-key.pemOptionalProduction host file: /etc/cloud-harness-mcp/github-app-private-key.pem
SECRET_KEYRING_FILE/run/cloud-harness-secrets/secret-keyring.jsonOptionalVersioned AES-256-GCM keyring JSON. Prefer the runner-only file form.

Security Guidelines

  1. Never commit .env files or tokens into version control.
  2. Runner secrets isolation: RUNNER_TOKEN and SECRET_KEYRING_FILE are passed only to the Runner container, never to the API or workspace executors.
  3. Managed OAuth vs Bearer: When AUTH_MODE=cloudflare-access, remove MCP_BEARER_TOKEN and configure CLOUDFLARE_ACCESS_* variables instead.
  4. Executor Isolation: Executors never inherit host environment variables or control plane tokens.

Released under the MIT License. Single-owner private remote coding harness.