2026-07-07 14:55:03 -04:00
---
kind: epic
slug: connected-repos
title: Connected repos — paste remote URL, forge adapters
plan_slug: automation-foundation
2026-07-07 15:45:40 -04:00
status: done
2026-07-07 14:55:03 -04:00
priority: P1
tenant_id: global
cursor_epic_id: null
updated_at: "2026-07-03"
---
# Epic objective
Workspace admins connect git remotes (Forgejo, GitHub, GitLab, Bitbucket, future Origin) via **paste URL** UX. Store `repo_links` with `forge_type` , API base, and credentials reference. Provide a `ForgeAdapter` interface for clone metadata, open PR, and (later) webhooks.
See automation foundation discussion: Vercel/Coolify-style “show me your repo.”
## In scope / out of scope
**In scope**
- `connected_repos` (or `repo_links` ) Drizzle table, workspace-scoped.
- tRPC CRUD + “test clone” (shallow fetch).
- Settings UI: connect / disconnect / list.
- Forge adapter trait + implementations: `forgejo` , `github` (minimum two).
**Out of scope**
- Webhook receivers (Epic 8).
- Orchestrator clone logic (Epic 6 consumes this table).
## Dependencies
- Workspace admin auth patterns (existing).
## Blocks
- Epic 6 (orchestrator), Epic 7 (worker).
## Acceptance criteria
2026-07-07 15:45:40 -04:00
- [x] Admin pastes Forgejo URL; Echodo stores link and detects `forge_type` .
- [x] Worker/orchestrator can read `git_remote_url` + default branch from API.
2026-07-07 14:55:03 -04:00
## Tasks
2026-07-07 15:45:40 -04:00
- [x] [Task-shared-forge-schemas ](./Task-shared-forge-schemas.md )
- [x] [Task-db-connected-repos-migration ](./Task-db-connected-repos-migration.md )
- [x] [Task-forge-adapters-trpc ](./Task-forge-adapters-trpc.md )
- [x] [Task-settings-connected-repos-ui ](./Task-settings-connected-repos-ui.md )