Skip to main content
commitdog works with four Git hosting platforms: GitHub, GitLab, Gitea, and Forgejo. Each platform requires a personal access token with specific scopes, and three of the four support self-hosted instances. You configure each platform once with commitdog setup and commitdog handles the rest — creating repos, pushing commits, opening pull requests, and publishing releases — all through the platform’s API without opening a browser.

Feature support by platform

Platform details

Token type: Classic personal access token (PAT)Create a token at: github.com/settings/tokensRequired scopes:
  • repo — full repository access (read/write)
  • write:org — create and manage organization repositories
  • read:user — read your account username
GitHub tokens must begin with ghp_ (classic PAT) or github_pat_ (fine-grained PAT). commitdog validates the prefix during commitdog setup and rejects tokens that do not match.Self-hosted: GitHub Enterprise is not currently supported. commitdog connects to api.github.com directly.Releases: commitdog creates a GitHub Release, uploads all build artifacts as release assets, and generates a checksums.txt file.Pull requests: Supported. On a feature branch, commitdog pr opens an interactive diff viewer and creates a PR. On main, it lists open PRs for you to review, merge (merge, squash, or rebase), or close.

Configuring a platform

Run commitdog setup and select the platform you want to configure. You can run commitdog setup multiple times to add or update tokens for different platforms — existing tokens for other platforms are not affected.
commitdog saves each token to ~/.config/commitdog/config.toml with 0600 permissions. Your tokens never leave your machine except when commitdog makes an API call to the platform you configured. Option 5 disconnects a platform: it deletes the saved token and removes the platform’s remote and .commitdog entry from the current repo. See Remove a platform.

Using multiple platforms at once

A single repo can live on several platforms at the same time. One platform is the primary and the rest are mirrors, each with its own git remote. Add mirrors with commitdog init, push to a specific platform with the shortcut flags (commitdog -gh, -gl, -gt, -fg), and publish a release everywhere with commitdog release --all. See Mirrors for the full workflow.