Problem
The coding ENGINE is already provider-agnostic (it git-clones any URL or runs a local path, then drives Claude Code). What's GitHub-specific is only: (a) private-clone tokens via the GitHub App, (b) repo listing, (c) issues. So public GitLab/Bitbucket repos and local checkouts already work; only PRIVATE clone + listing for non-GitHub providers is missing.
Approach
- A small
RepoProvider abstraction for auth: GitHub App (today) + per-provider PAT/OAuth (GitLab, Bitbucket) for private clone tokens.
- Store provider credentials with the existing envelope-encryption (same scheme as
user_api_keys).
- "Add repo" accepts any provider's clone URL; private ones resolve the right token.
Scope
lib/repo-providers.ts (token resolution by host), credentials storage, add-repo wiring.
- Issue listing/import per provider is OUT of scope here (handled by the kanban issue's adapters).
Acceptance
- Clone a private GitLab/Bitbucket repo by URL after connecting a PAT; local + public flows unchanged.
Priority
Low until a user asks — cloning already covers the common case. Tracked so it's not forgotten.
Problem
The coding ENGINE is already provider-agnostic (it git-clones any URL or runs a local path, then drives Claude Code). What's GitHub-specific is only: (a) private-clone tokens via the GitHub App, (b) repo listing, (c) issues. So public GitLab/Bitbucket repos and local checkouts already work; only PRIVATE clone + listing for non-GitHub providers is missing.
Approach
RepoProviderabstraction for auth: GitHub App (today) + per-provider PAT/OAuth (GitLab, Bitbucket) for private clone tokens.user_api_keys).Scope
lib/repo-providers.ts(token resolution by host), credentials storage, add-repo wiring.Acceptance
Priority
Low until a user asks — cloning already covers the common case. Tracked so it's not forgotten.