CoderHelm Docs
Self-hosting

Config reference

Every setting in coderhelm.config.json, its default, and what it changes.

{/* Imported from CoderHelm/coderhelm-platform/docs/self-host/config-reference.md at 96a2a3bafd5e. Edit it there. */} coderhelm.config.json is plain JSON. The CDK app validates it on every deploy and lists every problem at once, so a typo is caught before anything changes. ${NAME} anywhere in the file is replaced by the environment variable NAME (a missing one is an error), which keeps account ids out of a shared file if you like.

The smallest config:

{
  "account": "123456789012",
  "region": "us-east-1",
  "stage": "prod",
  "email": { "from": "coderhelm@example.com" },
  "admins": ["you@example.com"]
}

Two complete examples live in the repo: infra/config/selfhost.example.json (no domain, Anthropic) and infra/config/selfhost.domain.example.json (your domain, Bedrock in eu-west-1). The hosted deployment's own config is infra/config/hosted.prod.json.

Where things go

SettingTypeDefaultNotes
accountstringrequired12-digit AWS account id. Deploys refuse to run with credentials for another account.
regionstringrequiredAny region with Lambda on ARM64, Cognito and SES.
stagestringrequiredShort name, lowercase letters, digits and hyphens, up to 20 characters. Names resources coderhelm-<stage>-*.
resourcePrefixstringcoderhelm-<stage>Prefix of every resource name. Change it only before the first deploy.
globalNameSuffixstring-<account>Added to S3 bucket names and the sign-in domain prefix, which must be unique across all of AWS. "" for none.
retainDatabooleantrueKeep tables, the data bucket, KMS keys and the user pool when stacks are deleted, and turn on table deletion protection.

Domain

SettingTypeDefaultNotes
domainobject or nullnullnull: CloudFront's own *.cloudfront.net URL.
domain.hostnamestringThe hostname people open, e.g. coderhelm.example.com.
domain.hostedZonestringIts Route 53 public hosted zone. The certificate and DNS records are created for you.
domain.hostedZoneIdstringSkips the zone lookup at synth.
domain.certificateArnstringAn ACM certificate in us-east-1 for the hostname, when your DNS is not in Route 53. The deploy prints the CNAME to create.

See Domains.

Models

SettingTypeDefaultNotes
models.provideranthropic or bedrockanthropicanthropic: each team adds its own key. bedrock: Claude on Bedrock in this account, no keys.
models.primarystringclaude-opus-5-5Model for implementation and reviews. A team can choose others in its settings.
models.lightstringclaude-sonnet-5-5Model for triage, plan chat and log analysis.
models.bedrockInferencePrefixstringus.Bedrock only. us., eu., apac., global. or "" for in-region ids.
models.bedrockModelIdsobject{}Bedrock only. Exact ids or inference profile ARNs for model names.

See Model providers.

Email

SettingTypeDefaultNotes
email.fromstringrequiredThe sender of every email.
email.fromNamestringCoderHelmDisplay name.
email.supportInboxstringemail.fromWhere support requests from the dashboard go.
email.identitystring or nullthe domain of fromThe SES identity to create: a domain or one address. null if you manage it.
email.sesRegionstringregionRegion of the SES identity.
email.cognitoUsesSesbooleanfalseSend sign-up and password emails through SES. Turn on only after the identity is verified.
email.logoUrlstring<your URL>/favicon.svgLogo in email headers.
email.privacyUrlstring or nullnullA privacy page linked in email footers.

See Email.

People

SettingTypeDefaultNotes
adminslist of emailsrequiredAdmins of the whole install: the admin pages (teams, the failed message queue, support). They may always sign up.
signup.emailslist of emails[]Others who may create an account.
signup.domainslist of domains[]Anyone with an email at these domains may create an account.

Sign-up is closed to everyone else. People already on a team invite others from the dashboard.

Integrations

SettingTypeDefaultNotes
integrations.googleSignInbooleanfalse"Sign in with Google". Needs a domain and Google keys in the secret.
integrations.sandboxbooleantrueThe CodeBuild sandbox that runs a repo's build and checks during runs.
integrations.logAnalyzerbooleantrueScheduled log analysis for AWS accounts teams connect.
integrations.weeklySummarybooleantrueThe Monday summary email.
integrations.weeklySummaryListedTeamsOnlybooleanfalseOnly teams with a rollout list get the summary.

See Integrations.

Updates

SettingTypeDefaultNotes
updates.enabledbooleantrueCreate the updater: the hourly release check, notices, the update build.
updates.autobooleanfalseInstall new releases on their own, in the window.
updates.windowstring"Sun 03:00"Maintenance window: a day (or daily) and an hour.
updates.timezonestringUTCIANA time zone of the window.
updates.channelstable or previewstablepreview includes release candidates.
updates.majorsask or autoaskask: major releases wait for an admin.
updates.webhookUrlstringA Slack or Teams incoming webhook for update notices (admins are emailed either way).

These are the starting point; admins change them in Settings → System without a deploy. See Updates.

Everything else

SettingTypeDefaultNotes
dashboard.assetDirstringthe release's dashboardA dashboard build to upload instead (for your own changes). The installer fills this in for you.
telemetry.enabledbooleanfalseAnonymous install, upgrade and health pings from the installer.
telemetry.endpointstringCoderHelm'sWhere pings go.
logReaderTemplateUrlstringCoderHelm's public copyThe CloudFormation template teams create the log reader role from.
publicBucketNamestring or nullnullCreate a public bucket that serves the templates in infra/cfn (the hosted deployment does).
siteUrlstring or nullnullA website linked from email footers.
layoutstringsingle-originsplit is the hosted deployment's layout (separate hostnames, dashboard deployed from its own repo).
splitobjectSettings for the split layout.
ci.reviewerEvalsRepostringHosted only: the repository whose CI runs the nightly reviewer evals on Bedrock.

What a deploy sets on the services

The CDK app turns the config into environment variables on the gateway, streaming and worker functions. You never set these yourself, but they help when reading logs:

VariableFrom
APP_URL, API_URLYour hostname, when you have one
PUBLIC_URL_PARAMETERThe SSM parameter that holds the CloudFront URL, when you have no domain
SITE_URLsiteUrl
CODERHELM_ACCOUNT_IDaccount (the account teams' read-only roles trust)
LOG_READER_TEMPLATE_URLlogReaderTemplateUrl
PLATFORM_ADMIN_EMAILSadmins
CODERHELM_VERSION, CODERHELM_COMMIT, CODERHELM_RELEASED_AT, CODERHELM_CONFIG_FINGERPRINTThe release stamp and a hash of the config
UPDATER_FUNCTION_NAMEThe updater, when updates.enabled
MODEL_PROVIDER, BEDROCK_INFERENCE_PREFIX, BEDROCK_MODEL_IDSmodels (Bedrock only)
SES_FROM_ADDRESS, SUPPORT_INBOXemail
Edit on GitHub

On this page