Hello kcp folks,
As previously announced, the kcp project has been undergoing migration to the monorepo structure. Today, we’re happy to announce that we consider this migration to be complete!
In addition to the email that has been sent on October 4, 2025 [1, 2], there are a couple of more changes that will be explained in this email.
Tl;dr:
If you are familiar with github.com/kubernetes/kubernetes staging pattern - it's almost the same.
The staging repositories are Go modules along with their source code located in kcp-dev/kcp/staging/src/github.com/kcp-dev. The staging repositories are not real Git repositories.
The published repositories are standalone Git/GitHub repositories that contain the source code mirrored from staging repositories. This enables using standalone Go modules such as github.com/kcp-dev/apimachinery.
Branches and tags are mirrored from the main kcp-dev/kcp repository to the published repositories. However, some published repositories have tags with a different major version, depending on the major version of the respective Go module.
Mirrored tags in published repositories prior to vX.29.0-rc.0 are pointing to the initial commit and as such are NOT usable. Please only use tags that are vX.29.0-rc.0 or newer, or tags that were manually published prior to the monorepo migration (e.g. v2.0.0 tag in kcp-dev/apimachinery).
SDK and CLI had to be converted to staging repositories as part of this migration, continue reading for more information about this change.
We recommend checking out the monorepo structure documentation for more details about the monorepo migration [3].
The kcp SDK and CLI have been converted to staging repositories as part of this migration. The Go modules for these libraries are now github.com/kcp-dev/sdk and github.com/kcp-dev/cli, respectively. We’ll stop publishing new sdk/ and cli/ tags in the main kcp-dev/kcp repository, but the existing tags will remain functional. Going forward, tags for these modules will be published in their respective published repositories by publishing-bot.
If your project is depending on any of these two modules, you’ll need to change the import path in your code and go.mod file (e.g. from github.com/kcp-dev/kcp/sdk to github.com/kcp-dev/sdk), followed by running go mod tidy. You’ll need to do this upon upgrading to v0.29.0 or newer.
The source code for all staging repositories now lives in the main kcp-dev/kcp [4] repository under the staging/src/github.com/kcp-dev directory. That source code (i.e. relevant commits) will be periodically synchronized (every 4 hours at the moment) from the main kcp repository to the respective published repositories. All code changes for these modules must be done by creating a PR in the main kcp-dev/kcp repository.
Finally, it’s important to note that mirrored tags in published repositories prior to vX.29.0-rc.0 are pointing to the initial commit and as such are NOT usable. Please only use tags that are vX.29.0-rc.0 or newer, or tags that were manually published prior to the monorepo migration (e.g. v2.0.0 tag in kcp-dev/apimachinery).
If you have any questions about this change, please do not hesitate to reach out to us. You can reply to this email or reach out via our official communication channels [5].
[1]: https://groups.google.com/g/kcp-users/c/kFspCVQ_sII
[2]: https://groups.google.com/g/kcp-dev/c/I5TOD3Zn904/m/vaNcvh1EAwAJ
[3]: https://docs.kcp.io/kcp/main/contributing/monorepo/
[4]: https://github.com/kcp-dev/kcp/tree/main/staging/src/github.com/kcp-dev
[5]: https://docs.kcp.io/kcp/main/#getting-in-touch