Pipefort uses a per-user GitLab OAuth token (managed via Supabase) to read your project CI configuration and open Merge Requests for auto-fixable findings. This page walks through the gitlab.com SaaS path; for self-hosted instances see Self-hosted GitLab.Documentation Index
Fetch the complete documentation index at: https://docs.pipefort.com/llms.txt
Use this file to discover all available pages before exploring further.
What gets scanned
| Path | Scanned |
|---|---|
.gitlab-ci.yml (repo root) | ✓ |
.gitlab-ci/**/*.yml and *.yaml | ✓ |
Files referenced by include: from other projects/URLs | ✗ (v1 limitation — track in roadmap) |
One-time OAuth app registration (operator)
If you self-host the Pipefort backend, register a GitLab OAuth application that all of your users will sign in through:- Go to gitlab.com → User settings → Applications (or your instance’s Admin Area → Applications for a tenant-wide app).
- Set the Redirect URI to your Supabase project’s auth callback:
- Local dev (Supabase CLI):
http://127.0.0.1:54421/auth/v1/callback - Managed Supabase:
https://<project>.supabase.co/auth/v1/callback
- Local dev (Supabase CLI):
- Tick the scopes Pipefort needs:
api,read_api,read_user,write_repository. - Copy the resulting Application ID and Secret into your environment as
SUPABASE_AUTH_EXTERNAL_GITLAB_CLIENT_IDandSUPABASE_AUTH_EXTERNAL_GITLAB_SECRET. The Go API also reads these to handle OAuth token refresh.
User flow
- From the Pipefort sign-in page, click Sign in with GitLab.
- GitLab asks you to authorize Pipefort with the scopes above.
- You land on
/connect/callback. The SPA reads the access + refresh token off the Supabase session and POSTs them to/api/gitlab/callback, which persists them to a service-role-onlyuser_oauth_tokenstable. - You’re redirected to the dashboard with your GitLab projects listed, tagged with a GitLab badge.
Open fix MR
For findings whose rule appears in the auto-fix list (debug-trace, allow-failure, missing-timeout in v1), the per-finding Open fix MR button runs the same scanner.FixBytes rewrite locally on the API side, then opens (or reuses) a Merge Request from the deterministic branchpipefort/fix/<rule-id>/<file-slug>. Re-clicking the same finding
short-circuits to the existing MR instead of opening a duplicate.
Removing access
Revoking access is two-sided:- GitLab side: User settings → Applications → Authorized Applications → remove Pipefort. Existing tokens stop working immediately.
- Pipefort side: the token row in
user_oauth_tokensis keyed on(user_id, provider, host)and is removed automatically when the user re-authorizes; an explicit delete endpoint is on the roadmap.