FixControl ondersteunt vier code-hosts. GitHub heeft zijn eigen aparte gids; deze pagina behandelt de andere drie. Het gedrag is gelijk over providers — je klikt Run fix op een issue, een agent maakt een patch in een sandbox, en er gaat een pull/merge request open op de geconfigureerde branch — alleen de auth-flow verschilt.
| Provider | Surface | Auth-opties |
|---|---|---|
| GitHub | Pull request | App (aanbevolen), OAuth, PAT |
| GitLab | Merge request | OAuth, PAT |
| Bitbucket Cloud | Pull request | OAuth, app password |
| Bitbucket Server | Pull request | Personal access token |
GitLab
Auth-keuzes
- OAuth (aanbevolen) — admin logt één keer in, FixControl krijgt per-user installation context en kan op elk project handelen dat de admin kan zien.
- PAT — alleen token. Simpeler, maar gebonden aan een specifiek useraccount; vertrekt die gebruiker, dan sterft het token.
Self-hosted GitLab wordt ondersteund — wijs FixControl bij het koppelen naar je instance-URL (default is https://gitlab.com).
OAuth-setup
- In GitLab: Edit profile → Applications (voor een instance-wide app: Admin → Applications).
- Naam:
FixControl. Redirect URI:https://<jouw-host>/api/auth/gitlab/callback. - Scopes:
api,read_repository,write_repository. Confidential moet aan staan. - Opslaan en de Application ID + Secret kopiëren, en die in FixControl invullen tijdens de connect-flow.
- Elke tenant-admin klikt Settings → Integrations → GitLab → Connect en geeft consent. Het OAuth-token wordt versleuteld opgeslagen bij de integratie van de tenant.

PAT-setup
- Edit profile → Access Tokens → maak token met scopes
api,read_repository,write_repository. - In FixControl: Settings → Integrations → GitLab → Connect via PAT en plak token + base URL.
Wat FixControl doet bij Run fix
- Brancht af van de
default_branchvan je project. - Pusht de patch naar een branch met de naam
fixcontrol/<issue-id>-<slug>. - Opent een merge request, vult titel en beschrijving uit het issue, linkt het issue-ID.
- Plaatst de MR-URL terug op het issue.
Webhooks (optioneel)
Wil je dat FixControl reageert op MR-closes/merges, voeg dan in GitLab een webhook toe naar https://<jouw-host>/api/webhooks/gitlab met de events Merge request events, Push events, Note events. Het signing secret zie je in FixControl op de integratie-pagina.
Bitbucket Cloud
Auth-keuzes
- OAuth consumer (aanbevolen) — workspace-admin geeft één keer toestemming.
- App password — per gebruiker. Simpeler voor single-user setups.
OAuth consumer-setup
- Workspace settings → OAuth consumers → Add consumer.
- Naam:
FixControl. Callback URL:https://<jouw-host>/api/auth/bitbucket/callback. - This is a private consumer: aanvinken.
- Permissions: Account
Email/Read, RepositoriesRead/Write, Pull requestsRead/Write. - Opslaan en Key + Secret kopiëren, en die in FixControl invullen tijdens de connect-flow.
- Tenant-admin klikt Settings → Integrations → Bitbucket → Connect.

App password-setup
- Personal settings → App passwords → Create app password.
- Permissions: Account
Read, RepositoriesRead/Write, Pull requestsRead/Write. - Kopieer het password (één keer zichtbaar) en plak het samen met de Bitbucket-username in FixControl.
Bitbucket Server (on-prem)
Bitbucket Server (voorheen Stash) wordt ondersteund via personal access tokens.
- In Bitbucket Server: Profile → Manage account → HTTP access tokens → Create token.
- Permissions: Project
Read, RepositoriesRead/Write. Zet een expiry die matcht met je rotatiebeleid. - In FixControl: Settings → Integrations → Bitbucket Server → Connect, plak base URL (bv.
https://bitbucket.internal.acme/) en het token.
Tokens met strakkere scope dan hierboven kunnen geen branches pushen of PRs openen.
Meerdere providers per tenant
Een tenant kan elke combinatie van providers koppelen. Bijvoorbeeld: GitHub voor productie-repos, GitLab voor een internal tools monorepo, Bitbucket Server voor een legacy product. Elke codebase wijst precies één provider aan — agents kiezen bij een Run-fix automatisch de juiste.
Veelvoorkomende fouten
| Symptoom | Oorzaak |
|---|---|
401 unauthorized op Run fix | Token expired of ingetrokken. Reconnect via Settings → Integrations. |
404 not found bij MR openen | De branch die FixControl probeerde te pushen bestaat niet of het project-ID is gewijzigd. Re-link de codebase. |
403 forbidden bij push | OAuth-consent miste write_repository (GitLab) of Repositories: Write (Bitbucket). Reconnect met volledige scope. |
| Webhook deliveries 401 | Signing secret in je provider matcht niet met dat van FixControl. Roteer vanaf de integration-pagina. |
FAQ
Kan één repository meerdere providers gebruiken? Nee — elke codebase resolved naar precies één provider. Als je een repo mirrort over hosts, kies dan de canonieke en laat de andere extern syncen.
Worden tokens encrypted at rest? Ja. Elke credential — OAuth tokens, refresh tokens, PATs, app passwords — wordt versleuteld met AES-256-GCM voordat ze opgeslagen worden.
Kan ik roteren zonder in-flight patches kwijt te raken? Ja. Reconnect maakt een nieuwe credential en swapt 'm atomic in. Reeds gepushte patches lopen normaal door; nieuwe patches gebruiken de nieuwe credential.