Guides

Connect a repository

Connections are how Riscly sees your system. Source providers feed the code analysis; cloud and service providers enrich the architecture map with real infrastructure.

Supported providers

FieldTypeDescription
githubOAuthRepository contents for analysis and, with your approval, committing fixes.
gitlabOAuth / tokenGitLab repositories, including SAST/SCA/secret findings.
verceltokenFrontend deployments and projects (scope to selected projects).
supabasetokenDatabase / auth configuration (read-only).
awskeysCloud configuration via signed (SigV4) read-only calls.
stripetokenOptional — live MRR / active-user signal for business impact.

Connecting via OAuth (GitHub / GitLab)

In the dashboard this is a button. Programmatically, request an authorize URL for the provider and redirect the user to it; on completion the connection is attached to the project.

const { url } = await riscly(
  `/oauth/github/authorize?projectId=${projectId}`,
).then((r) => r.json());

// send the user to `url` to grant access
window.location.href = url;

Already signed in with GitHub?

If the user signed in with GitHub SSO, you can skip the separate OAuth step and connect directly from the sign-in token — the dashboard does this automatically.

Connecting with a token

Providers without an OAuth flow (e.g. Vercel, Supabase, AWS) are connected with a token or key. Secrets are masked before storage.

curl -X POST https://api.riscly.com/api/projects/PROJECT_ID/connections \
  -H "Authorization: Bearer $RISCLY_TOKEN" \
  -H "x-org-id: $RISCLY_ORG_ID" \
  -H "Content-Type: application/json" \
  -d '{"provider":"vercel","token":"VERCEL_TOKEN"}'

Scoping which projects/repos are used

For providers that expose many projects (like a Vercel org token), store non-secret config — such as the selected projects — by patching the connection's metadata:

await riscly(`/projects/${projectId}/connections/${connectionId}`, {
  method: "PATCH",
  body: JSON.stringify({ selectedProjects: ["prj_a", "prj_b"] }),
});

Disconnecting

Revoke a connection anytime from Settings → Connections or via the API. Access stops immediately.

curl -X DELETE \
  https://api.riscly.com/api/projects/PROJECT_ID/connections/CONNECTION_ID \
  -H "Authorization: Bearer $RISCLY_TOKEN" \
  -H "x-org-id: $RISCLY_ORG_ID"