Configure OpenSourceOM
om reads process environment variables. It does not load .env.
Docker Compose interpolates .env for the API service. Copy
.env.example in the core repository and export only the variables you need in the
shell that runs the CLI.
A database URL is built from the POSTGRES_* variables unless DATABASE_URL
is set. The default URL is
postgres://opensourceom:opensourceom@localhost:5432/opensourceom?sslmode=disable.
Process
| Variable | Default | Used by |
|---|---|---|
OM_ENV | development | API container label. The CLI stores it and does not branch on it. |
OM_LOG_LEVEL | info | Reserved. The API logger is the standard library logger. |
OM_PUBLIC_URL | http://localhost:8080 | Browser origin for the console and optional OAuth callbacks. No trailing path. |
OM_API_PORT | 8080 | om serve |
OM_AUTO_MIGRATE | true | om serve applies pending migrations before it listens. Set false when om migrate should be the only schema change. om migrate itself ignores this variable. |
OM_ADMIN_EMAIL | empty | When set, only this address can become the first admin. |
OM_SMTP_HOST / OM_SMTP_PORT / OM_SMTP_FROM | empty / 587 / empty | Optional. When set, adding an admin emails the temporary password, and the sign-in page can email a password-reset link. Set OM_PUBLIC_URL so that link is a full address. |
OM_SMTP_USERNAME / OM_SMTP_PASSWORD | empty | Optional SMTP authentication. Set both when the server requires a login. |
OM_GOOGLE_CLIENT_ID / OM_GOOGLE_CLIENT_SECRET | empty | Google sign-in. Both are required. Callback {OM_PUBLIC_URL}/auth/google/callback. |
OM_GITHUB_CLIENT_ID / OM_GITHUB_CLIENT_SECRET | empty | GitHub sign-in. Both are required. Callback {OM_PUBLIC_URL}/auth/github/callback. |
Database
| Variable | Default |
|---|---|
DATABASE_URL | Built from the fields below |
POSTGRES_USER | opensourceom |
POSTGRES_PASSWORD | opensourceom |
POSTGRES_DB | opensourceom |
POSTGRES_HOST | localhost |
POSTGRES_PORT | 5432 |
Inside Compose, the API service sets POSTGRES_HOST=postgres. On your laptop, keep
the CLI default of localhost.
Collectors
| Variable | Default | Required for |
|---|---|---|
AWS_REGION | us-east-1 | om scan aws (one region per run) |
AZURE_SUBSCRIPTION_ID | empty | om scan azure |
AZURE_LOCATION | eastus | Fallback region on Azure node IDs |
GCP_PROJECT_ID | empty | om scan gcp |
GCP_REGION | us-central1 | Region segment on GCP identity and bucket IDs |
K8S_CLUSTER | default | Account id. Also the kubeconfig context when it is not default and a kubeconfig is used. In a pod with no KUBECONFIG, it is only the account id. |
K8S_NAMESPACE | empty (all namespaces) | Limit om scan k8s to one namespace |
NVD_API_KEY | empty | Higher NVD rate limits for om enrich cve when no catalog is set |
OM_CVE_CATALOG | empty | JSON file used instead of NVD. --catalog overrides it. |
AWS, Azure, and GCP credentials themselves come from each SDK’s default chain
(AWS_ACCESS_KEY_ID, az login, GOOGLE_APPLICATION_CREDENTIALS,
instance metadata, and so on). Core does not have its own credential store.
Exports
| Variable | Used when |
|---|---|
SLACK_WEBHOOK_URL | om export findings run --format slack |
JIRA_URL | Jira site base URL |
JIRA_EMAIL | Jira account email |
JIRA_API_TOKEN | Jira API token |
JIRA_PROJECT | Project key for created issues |
Copyright © 2026 OpenSourceOM. Licensed under Apache-2.0.