What you’ll build
A developer flow that agents can actually run. You point Copass at three repos — a shared schema package, a backend service, a frontend app — and ask it to add a feature. The agent reads the full cross-repo graph, plans the change, and opens a PR in each repo with a dependency note linking them. Cursor and Claude Code live inside one repo. This recipe lives above them.Step 1 — index each repo
The CLI ingests a repo into the sandbox. Copass chunks the code, extracts entities (types, functions, modules), and crucially — links entities across repos. ACheckoutRequest type defined in api-schemas gets linked to every import of it in backend-api and frontend-web.
copass watch . per repo — it mirrors every save into the sandbox. See Filesystem driver.
Step 2 — ship the feature
What’s happening
- One sandbox, three data sources — every
copass ingest .registers that repo as a named data source inside the same sandbox. The knowledge graph sees all three as first-class context, not as three isolated searches. - Cross-repo entity linking is the unlock — when the agent reads
CheckoutRequestinapi-schemas, the graph already knows every file inbackend-apiandfrontend-webthat imports it. The agent doesn’t have to guess or grep; the joins are pre-computed. - GitHub is the write layer — the connected integration gives the agent
github.create_pull_requestacross any repo in the org. One auth, N repos. - The coordination is the value — a single-repo agent has to be told about the other repos. A cross-repo agent plans them together. PR ordering, dependency notes, and “this will break if merged first” warnings fall out for free.
Make it yours
- Expand the fleet —
copass ingest .works on any repo. Five repos, ten, the whole monorepo adjacent. The sandbox is free and scales with you. - Keep it live — replace
copass ingestwithcopass watchper repo. Agents always see the latest code without you running anything. - Constrain the agent — append
Never touch CI configs, env files, or migrations without explicit instruction.to the system prompt. The model respects it because the context is rich enough to know what those files are. - Run it from CI — wrap in a GitHub Actions workflow that fires on a
/featureissue comment. The bot reads the issue, ships the three PRs, and tags the assignees. - Swap GitHub for GitLab or Bitbucket —
router.integrations.connect('gitlab', …). Same prompt. Full list at pipedream.com/apps.

