sci2sci reposted this
Coding Agents need a proper workspace - so we made one! Announcing Xen - our agentic virtual monorepo orchestration. So what's the problem? Any more or less mature company has multiple projects - and every one of them knows that coordinating work across them is a time-burning mess. Big tech solves it with mono-repo structures - they allow you to work with all the company project like it's a single one. The problem? Well, your company is not Google (except the case you actually work in Google). We wanted to make it easier to complete the work across multiple software project as a single agentic coding session - all in all, with our dozen of projects, we face this issue every day. So our - quite brilliant - CTO, who worked first-hand with Google-scale infrastructure, made a scaled-down version of mono-repositories: keeping all their pros for agentic coding, and none of the headaches of migrating to them and supporting them after. If you're actively using tools like Claude code, or Codex, or our Parseltongue-CLI - and want to work across multiple software or research git repositories - this is an absolute must-have in your toolbox. I will share the link to our github in the comment, and if you want to check more technical explanation, dive into Valerii's announcement!
Meet Xen - a Virtual Monorepo orchestrator. (We're also preparing big Parseltongue update - will share in coming weeks) The idea is simple: sometimes we want to work across multiple git projects locally like it's a single repository, but preserve the original git-based flow upstream. I bet that virtually every software-heavy company from 15 to 5000 people has the issue of synchronizing work across multiple projects - and heated discussions about their repo structure. With the rise of agentic coding, this issue became even more interesting. I want to complete my work in a single session - and managing 5 tickets, switching IDEs, giving an agent permissions on multiple roots is just unnecessary overhead. The problem is that monorepos come with a bunch of coupling and overhead too. They absolutely make sense if you're Google managing Android releases, and absolutely don't if you're a few-hundred-person company. There are git submodules, but honestly, after a few years, I ended up with a bunch of scripts managing their synchronization, which looked ugly and were pretty inconvenient. So I came up with the idea of a Virtual Monorepo and implemented it in Xen. Why "virtual"? In a normal monorepo structure, you have close coupling of your intents and your state. E.g. 𝗴𝗶𝘁 𝗰𝗵𝗲𝗰𝗸𝗼𝘂𝘁 𝗺𝗮𝘀𝘁𝗲𝗿 is one action that expresses the intent of going to master and synchronizes the state. What Xen does differently is store only intent. You configure what main/dev/test means in each repository - Xen delegates the state work to each repo, and the state itself stays managed by git. That means you can do things like 𝘅𝗲𝗻 𝘀𝘆𝗻𝗰 𝗺𝗮𝗶𝗻, where main can be configured to point to different branches in different repositories - master, develop, a pinned major release - and keep them in sync, preserving the intent of what main means for your specific monorepo. The same applies to commands: the 𝘅𝗲𝗻 𝗰𝗮𝘀𝗰𝗮𝗱𝗲 --𝗰𝗵𝗮𝗻𝗴𝗲𝗱-𝗼𝗻𝗹𝘆 '...' fans operations out across the multirepo layout, allowing centralized control of cross-repo changes. For example, cascading '𝗴𝗶𝘁 𝗮𝗱𝗱 -𝗔 && 𝗴𝗶𝘁 𝗰𝗼𝗺𝗺𝗶𝘁 -𝗺 "..." && 𝗴𝗶𝘁 𝗽𝘂𝘀𝗵' - will apply same commit message and push all changed repos. You can always add a new repo via 𝘅𝗲𝗻 𝗽𝗼𝗿𝘁𝗮𝗹 𝗮𝗱𝗱 𝗴𝗶𝘁@𝗴𝗶𝘁𝗵𝘂𝗯.𝗰𝗼𝗺:𝗼𝗿𝗴/𝗿𝗲𝗽𝗼.𝗴𝗶𝘁 --𝗮𝘁 𝘀𝗲𝗿𝘃𝗶𝗰𝗲𝘀/𝗿𝗲𝗽𝗼 and initialize/bring your local drafts to the existing repositories by executing 𝘅𝗲𝗻 𝗿𝗲𝘀𝗼𝗻𝗮𝘁𝗲 𝗿𝗲𝗽𝗼 --𝘀𝗼𝘂𝗿𝗰𝗲 ~/𝘀𝗰𝗿𝗮𝘁𝗰𝗵/𝗿𝗲𝗽𝗼. If you're ready to start, just: 𝗯𝗿𝗲𝘄 𝗶𝗻𝘀𝘁𝗮𝗹𝗹 𝘀𝗰𝗶𝟮𝘀𝗰𝗶-𝗼𝗽𝗲𝗻𝘀𝗼𝘂𝗿𝗰𝗲/𝘅𝗲𝗻/𝘅𝗲𝗻 If you are starting from a fresh repo - 𝗽𝗼𝗿𝘁𝗮𝗹 to your remote, 𝗿𝗲𝘀𝗼𝗻𝗮𝘁𝗲 your local changes, 𝗰𝗮𝘀𝗰𝗮𝗱𝗲 your commits - or point your agent at the docs and let it handle the initialization sequence. And if you're the kind of person who'll get the reference - prepare for 𝘜𝘯𝘧𝘰𝘳𝘦𝘴𝘦𝘦𝘯 𝘊𝘰𝘯𝘴𝘦𝘲𝘶𝘦𝘯𝘤𝘦𝘴.