Supported Integrations
| Integration | Type | Description |
|---|---|---|
| GitHub | tap-github | Pull requests, commits, reviews, releases |
| Linear | tap-linear | Issues, projects, cycles, team data |
| Cursor | tap-cursor | AI coding assistant usage metrics |
GitHub
GitHub is the primary source for code and pull request metrics.Create a Personal Access Token
- Go to GitHub Settings > Developer Settings > Personal Access Tokens
- Click Generate new token (classic)
- Give it a descriptive name (e.g., “Bilanc Self-Hosted”)
- Select the following scopes:
repo- Full control of private repositoriesread:org- Read organization membership
Configure Environment Variables
Add to your.env file:
The
GITHUB_REPOSITORY variable accepts a space-separated list of repositories in owner/name format.Configure the Tap
Add GitHub to yourtenant_config.yaml:
GitHub Metrics Collected
- Pull requests (opened, merged, closed, review times)
- Commits and commit frequency
- Code reviews and review comments
- Releases and deployment frequency
- Repository activity
Linear
Linear provides issue and project management metrics.Create an API Token
- Go to Linear Settings > API
- Click Create new API key
- Give it a descriptive name (e.g., “Bilanc Self-Hosted”)
- Copy the generated token
The API token provides access to all workspaces the user has access to.
Configure Environment Variables
Add to your.env file:
Configure the Tap
Add Linear to yourtenant_config.yaml:
Linear Metrics Collected
- Issues (created, completed, cycle time)
- Projects and project progress
- Cycles and cycle velocity
- Team workload and distribution
Disabling Linear
If you don’t use Linear, see Advanced Configuration for instructions on disabling the integration.Cursor
Cursor provides AI coding assistant usage metrics.Get Your API Key
- Contact Bilanc support to obtain your Cursor API key
- The key is specific to your organization
Configure Environment Variables
Add to your.env file:
Configure the Tap
Add Cursor to yourtenant_config.yaml:
Cursor Metrics Collected
- AI completions and suggestions
- Code generation usage
- Time saved by AI assistance
- Adoption rates across teams
Multiple Integrations Example
Here’s a completetenant_config.yaml with all integrations enabled:
Start Date Configuration
Thestart_date field determines how far back Bilanc fetches historical data:
| Start Date | Data Volume | Initial Sync Time |
|---|---|---|
| 30 days ago | Small | ~5-10 minutes |
| 6 months ago | Medium | ~30-60 minutes |
| 1+ year ago | Large | 1-3 hours |
Verifying Integrations
After configuring integrations:- Start or restart Bilanc:
make r - Open the Dagster UI at http://localhost:4000
- Check that the pipelines for each integration are running
- View the job history to verify data is being ingested
Troubleshooting
GitHub: 401 Unauthorized
- Verify your token hasn’t expired
- Check that the token has the required scopes (
repo,read:org) - Ensure the token owner has access to the specified repositories
Linear: No Data
- Verify the API token is correct
- Check that the token owner has access to the workspace
- Ensure there are issues within the
start_daterange
Cursor: Connection Failed
- Verify the API key is correct
- Contact Bilanc support if issues persist

