Getting started
CodeMetrics brings together engineering data from your source control, CI/CD pipelines, code quality tools, and issue trackers into a single view. This guide walks you through getting it running and connected to your tooling.
Before you begin
You will need access to the external systems you want to integrate. CodeMetrics pulls data from:
- Source control — GitHub, Bitbucket Server, or Azure DevOps
- CI/CD pipelines — GitHub Actions, Azure Pipelines, Jenkins, or Dynatrace
- Code quality — SonarQube or SonarCloud
- Issue tracking — Jira, Azure DevOps, or ServiceNow
See feature support for the full compatibility matrix.
Don't have access to these systems yet? CodeMetrics ships with mock implementations of all supported integrations, so you can run a fully functional demo without connecting to real tools. See the mocks documentation for setup instructions.
You will also need a license file (license.yaml) containing your email and license key.
Step 1: Choose a deployment method
| Method | Best for |
|---|---|
| Docker Compose | Local evaluation, development, self-hosted teams |
| AWS Lambda | Serverless production deployments on AWS |
| Kubernetes / Helm | Container-based production deployments |
| Node.js directly | Development or minimal environments |
| Desktop app | Individual use without a server |
For a first-time setup, Docker Compose is the fastest path to a running instance.
Step 2: Create your configuration files
CodeMetrics reads from three configuration files. Start by copying the examples:
examples/remote-config.yaml → remote-config.yaml
examples/workload-config.yaml → workload-config.yaml
<your license> → license.yaml
remote-config.yaml — connect your tools
This file tells CodeMetrics how to authenticate and query your external systems. It has sections for each integration type:
- Code management (GitHub, Bitbucket, Azure DevOps)
- CI/CD pipelines (GitHub Actions, Jenkins, Azure Pipelines, Dynatrace)
- Code quality (SonarQube, SonarCloud)
- Project management (Jira, Azure DevOps)
- Incidents (Jira, ServiceNow)
Only configure the sections relevant to your tooling. Sections for unused integrations can be left empty or omitted.
workload-config.yaml — model your teams
A workload is a named grouping of repositories — typically a team, service area, or product. Workloads are the primary unit of organisation in CodeMetrics.
Within a workload you can define repository groups to further segment repositories (e.g. by layer: frontend, backend, platform).
➡️ Learn about configuring workloads
license.yaml
email: you@example.com
key: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
Place all three files in the same directory and point CodeMetrics at it using the CONFIG_DIR environment variable.
Step 3: Configure authentication
CodeMetrics requires user authentication. The default is file-based authentication, which stores usernames and password hashes in a users.json file — suitable for getting started quickly.
For production, integrate with your identity provider:
| Provider | Details |
|---|---|
| File-based (default) | Authentication guide |
| Azure Entra ID | Azure authentication |
| AWS Cognito | Cognito authentication |
| Keycloak | Keycloak authentication |
| LDAP / Active Directory | LDAP authentication |
| OpenID Connect | OIDC authentication |
Set AUTHENTICATOR_IMPL to the provider you want to use, and set ACCESS_TOKEN_SECRET to a strong random string shared across all backend instances.
Step 4: Choose a datastore
The default datastore is in-memory, which requires no configuration but does not persist data between restarts. For any persistent or shared deployment, choose a durable datastore:
| Datastore | Suitable for |
|---|---|
inmem (default) |
Local development, quick evaluation |
localdb |
Single-instance persistent deployments |
dynamodb |
AWS-hosted production deployments |
mongodb |
Self-hosted or MongoDB Atlas production deployments |
Set DATASTORE_IMPL to your chosen implementation. See Datastores for full configuration details.
Step 5: Start the application
Follow the deployment-specific instructions for your chosen method, then open the UI in your browser. Log in with your configured credentials to run your first query.
Next steps
Once you have a running instance:
- Explore queries — run built-in queries for DORA metrics, pipeline health, code coverage trends, and more
- Refine workloads — add repository groups and tags to slice metrics by team or layer (workload configuration)
- Set up quality gates — define thresholds and track compliance across repositories (quality gates)
- Secure your API — issue service tokens for CI/CD or tooling integrations (API authentication)
- Review all environment variables — fine-tune caching, TTLs, and other runtime behaviour (environment variables)