One Task, Two Providers: Coordinating Changes Across GitLab and GitHub in one session

By
BR

Brian Beach

Tech Lead

Kiro Web now works with GitLab, alongside the existing GitHub support. The more interesting part is what happens when your code lives across both GitLab and GitHub: you can add repositories from both to the same session, describe a single change, and let Kiro carry it across both, opening a merge request on one and a pull request on another. That matters when your code doesn’t live in one tidy place.

Code that lives in two places

Plenty of teams are split across providers, and usually for good reasons. Your open-source SDK lives on GitHub where the community can find it, while the service it talks to stays private on GitLab. Or an acquisition left half the org on one provider and half on the other. Or frontend and backend teams just landed on different tools years ago. Whatever the reason, the cost shows up the moment a change spans both. One logical update becomes one pull request and one merge request in two contexts, with two chances to forget a step and let the two sides drift out of sync.

A small example

Here's the setup Ill use. Its a deliberately trivial stand-in for the real thing. Picture your actual service and SDK in its place: thousands of lines, real business logic, real consumers.

A private service on GitLab:

Loading image...The user-service repository on GitLab, on the main branch, containing four files: .gitignore, README.md, package.json, and server.js — all from the initial commit by Brian Beach.

A public SDK on GitHub wraps that service:

Loading image...The user-sdk repository on GitHub, on the main branch with 2 branches and 1 commit by Brian Beach. Files include a src directory, .gitignore, README.md, package.json, and tsconfig.json — all from the initial commit.

Imagine that I want to add an email field, end to end. The server change belongs on GitLab. The SDK change belongs on GitHub. It's one idea that has to land in two repos, on two providers, without falling out of step.

One prompt, both repos

With both GitLab and GitHub already connected, I start a session and attach both repositories — user-service from GitLab and user-sdk from GitHub. Then I describe the change in plain language:

Loading image...The Kiro Web interface with the prompt Add an email field to the user response in the service, and expose it through the SDK. Both repositories are attached to the session: brianbeach/user-service from GitLab and brianjbeach/user-sdk from GitHub. Autonomous mode is enabled.

Because both repos are in the session, Kiro reasons about them together rather than treating them as two unrelated tasks.

Loading image...Kiro's reasoning log showing it identified the task as a multi-repo change spanning GitLab and GitHub, cloned both repositories, inspected their structure, and delegated implementation to a planner sub-agent to handle both the code changes and the MR/PR workflow.

Working in its isolated sandbox, it explores both repositories, figures out what each side needs, and makes the changes — adding email to the records and the response in the service, then updating the User type and the usage example in the SDK. It creates a feature branch in each repo and makes commits with clear messages.

Loading image...Kiro's session summary after completing the cross-repository change: email was added to server.js in the GitLab user-service and to src/index.ts in the GitHub user-sdk, with links to the resulting GitLab MR and GitHub PR.

When it's done, there are two changes waiting. A merge request on GitLab for the service.

Loading image...GitLab merge request titled Add email field to user response, opened by Brian Beach to merge feat/add-email-field into main. The summary describes adding an email field to the user data model, with the GET /users/:id endpoint now returning id, name, and email.

And, a pull request on GitHub for the SDK.

Loading image...GitHub pull request #1 titled Add email field to User type, opened by kiro-agent bot on behalf of brianjbeach. It merges the feat/add-email-field branch into main, with a summary noting that email: string was added to the User type in src/index.ts and the SDK compiles cleanly.

Each one carries a description of what changed and the approach. You review and merge each on its home provider, in exactly the workflow your team already uses. Nothing about your review process changes. You just didn't have to do the cross-repo bookkeeping yourself.

Wrapping up

The split across providers is often real and worth keeping: public versus private, one team versus another. What isn't worth keeping is the manual effort of holding a single change together across both. With GitLab and GitHub connected in Kiro Web, one prompt keeps the change consistent end to end and you still get a clean MR and PR to review on the providers you already trust.

Connect GitLab and GitHub in Kiro Web and try a change that spans both. Kiro Web is in preview at app.kiro.dev for Pro, Pro+, and Power subscribers. To go deeper, see the GitLab guide, and follow the Kiro Web changelog to see what ships next.