Skip to content
Crow CI

Forge Integration

Configuration for forge (Git hosting) integration.

Crow supports connecting to multiple Git forges simultaneously, allowing users to manage repositories from different forges (e.g., GitHub and Codeberg) under a single account.

  • Name: CROW_FORGES
  • Description: Comma-separated list of forge names to configure. When set, Crow uses the multi-forge configuration format instead of single-forge variables. The names can be arbitrary and are only used to identify the respective forge with the per-forge env vars (see below).
  • Default: none
  • Example: codeberg,github

When CROW_FORGES is set, each forge is configured using environment variables with the pattern CROW_FORGE_{NAME}_{SETTING}.

For each forge name in CROW_FORGES, the following variables are available (replace {NAME} with the uppercase forge name, hyphens become underscores):

VariableDescriptionRequired
CROW_FORGE_{NAME}_TYPEForge type: github, gitlab, gitea, forgejo, bitbucket, bitbucket-dc, addonYes
CROW_FORGE_{NAME}_URLForge URL (has defaults for github.com, gitlab.com, etc.)No
CROW_FORGE_{NAME}_CLIENTOAuth2 client IDYes
CROW_FORGE_{NAME}_SECRETOAuth2 client secretYes
CROW_FORGE_{NAME}_SKIP_VERIFYSkip SSL verificationNo
CROW_FORGE_{NAME}_OAUTH_HOSTPublic OAuth URL if different from forge URLNo
CROW_FORGE_{NAME}_ICONCustom icon for the forge (see below)No

All settings support reading from files using the _FILE suffix (e.g., CROW_FORGE_GITHUB_SECRET_FILE=/run/secrets/github).

The CROW_FORGE_{NAME}_ICON variable allows you to customize the icon displayed for a forge in the UI. This is useful when you have multiple forges of the same type (e.g., two Forgejo instances) and want to visually distinguish them.

Predefined icon names:

  • codeberg - Codeberg logo
  • codefloe - Codefloe logo
  • github - GitHub logo
  • gitlab - GitLab logo
  • gitea - Gitea logo
  • forgejo - Forgejo logo
  • bitbucket - Bitbucket logo
  • repo - Generic repository icon

Custom icon URL: You can also provide a URL to a custom icon image (PNG, SVG, etc.):

Terminal window
CROW_FORGE_MYFORGE_ICON=https://example.com/my-forge-icon.svg

If no icon is specified, Crow will automatically detect the icon based on the forge URL (e.g., URLs containing “codeberg” will use the Codeberg icon) or fall back to the forge type’s default icon.

Terminal window
# Define forges
CROW_FORGES=codeberg,github,internal
# Codeberg (Forgejo) - icon auto-detected from URL
CROW_FORGE_CODEBERG_TYPE=forgejo
CROW_FORGE_CODEBERG_URL=https://codeberg.org
CROW_FORGE_CODEBERG_CLIENT=your-client-id
CROW_FORGE_CODEBERG_SECRET=your-client-secret
# GitHub - uses default GitHub icon
CROW_FORGE_GITHUB_TYPE=github
CROW_FORGE_GITHUB_CLIENT=your-github-client-id
CROW_FORGE_GITHUB_SECRET=your-github-client-secret
# Internal Forgejo instance - custom icon
CROW_FORGE_INTERNAL_TYPE=forgejo
CROW_FORGE_INTERNAL_URL=https://git.internal.company.com
CROW_FORGE_INTERNAL_CLIENT=your-internal-client-id
CROW_FORGE_INTERNAL_SECRET=your-internal-client-secret
CROW_FORGE_INTERNAL_ICON=https://internal.company.com/logo.svg

GitHub:

VariableDescriptionDefault
CROW_FORGE_{NAME}_MERGE_REFUse merge ref for pull requeststrue
CROW_FORGE_{NAME}_PUBLIC_ONLYOnly request access to public reposfalse

Bitbucket DataCenter:

VariableDescription
CROW_FORGE_{NAME}_GIT_USERNAMEService account username
CROW_FORGE_{NAME}_GIT_PASSWORDService account password

The following variables configure a single forge. If CROW_FORGES is set, these are ignored.

  • Name: CROW_FORGE_URL
  • Description: URL of the forge.
  • Default: none

  • Name: CROW_FORGE_CLIENT
  • Description: OAuth2 client ID.
  • Default: none

  • Name: CROW_FORGE_SECRET
  • Description: OAuth2 client secret.
  • Default: none

  • Name: CROW_EXPERT_FORGE_OAUTH_HOST
  • Description: Fully qualified public forge URL. Use it if your forge URL isn’t a public URL. Format: <scheme>://<host>[/<prefix path>]
  • Default: none

  • Name: CROW_FORGE_SKIP_VERIFY
  • Description: Skip SSL verification.
  • Default: false

  • Name: CROW_FORGE_TIMEOUT
  • Description: How many seconds before timeout when fetching the Crow configuration from a Forge.
  • Default: 5s

  • Name: CROW_FORGE_RETRY
  • Description: How many retries of fetching the Crow configuration from a forge are done before we fail.
  • Default: 3

  • Name: CROW_AUTHENTICATE_PUBLIC_REPOS
  • Description: Always use authentication to clone repositories even if they are public. Needed if the SCM requires to always authenticate as used by many companies.
  • Default: false

  • Name: CROW_ADDON_FORGE
  • Description: Path to forge addon executable.
  • Default: none

  • Name: CROW_FORGEJO
  • Description: Forgejo driver is enabled.
  • Default: false

  • Name: CROW_GITEA
  • Description: Gitea driver is enabled.
  • Default: false

  • Name: CROW_GITHUB
  • Description: GitHub driver is enabled.
  • Default: false

  • Name: CROW_GITHUB_MERGE_REF
  • Description: GitHub pull requests use merge ref.
  • Default: true

  • Name: CROW_GITHUB_PUBLIC_ONLY
  • Description: GitHub tokens should only get access to public repos.
  • Default: false

  • Name: CROW_GITLAB
  • Description: GitLab driver is enabled.
  • Default: false

  • Name: CROW_BITBUCKET
  • Description: Bitbucket driver is enabled.
  • Default: false

  • Name: CROW_BITBUCKET_DC
  • Description: Bitbucket DataCenter/Server driver is enabled.
  • Default: false

  • Name: CROW_BITBUCKET_DC_GIT_USERNAME
  • Description: Bitbucket DataCenter/Server service account username.
  • Default: none

  • Name: CROW_BITBUCKET_DC_GIT_PASSWORD
  • Description: Bitbucket DataCenter/Server service account password.
  • Default: none