I moved 39 repos into a monorepo to boost agentic coding Inkdrop developer Takuya moved 39 repositories into a single pnpm monorepo to remove the release bottleneck that slowed his agentic coding workflow with Claude Code. Takuya used git filter-repo to import each repository with its full git history, moving files into folders such as apps/desktop and packages/editor, renaming tags to the @ format like @inkdropapp/editor@0.7.0, and rewriting bare issue references such as #123 to inkdropapp/#123. The move followed a post by Mitchell Hashimoto, whose company Superlogical builds the Rex terminal app for AI agents, describing a workflow where AI reviews code before pushing to main and humans and AI review again afterward. Tips https://www.devas.life/tag/tips/ I moved 39 repos into a monorepo to boost agentic coding Hey, what's up? It's Takuya http://x.com/inkdrop app?ref=devas.life here. I recently moved my projects https://www.inkdrop.app/?ref=blog into a monorepo to speed up my agentic coding. Rethinking how I work with agents, from repository structures I came across a post by Mitchell Hashimoto https://x.com/mitchellh/status/2120221244478083249?ref=devas.life . He recently started a new company, Superlogical, which builds Rex https://www.superlogical.com/rex?ref=devas.life , a terminal app designed for working with AI agents. His team is small, and everyone on it is trusted to push commits straight to main. They skip the traditional flow of opening a pull request, waiting for someone to review and approve it, and then merging it. Instead, AI reviews the code before the push, and humans and AI review it again after it lands. Their workflow looks super fast. I'm a big fan of Mitchell, and I admire the quality of his work, like Ghostty. So I trust his technical decisions, including how his company uses AI. His post inspired me a lot and made me rethink my own workflow, starting from how my repositories are structured. One repo per package kept me focused on one module at a time Before I started coding with agents, each of my private modules lived in its own repository and was published to npm from there. Development was slower before AI, so I usually focused on one module at a time: make the changes, publish a new version, then update the apps. With semver, a change in one module couldn't unexpectedly break the apps. Many of these packages are shared across multiple projects, so this workflow was crucial for me. My release flow became the bottleneck When I started using Claude Code, I kept the same structure, and at first it simply sped up my traditional workflow. But the more I relied on agents, the more friction I felt. AI makes a lot of changes, blazingly fast, so my workflow became the bottleneck. I had set up trusted publishing on npm, so GitHub Actions published new versions automatically. Still, after every change to a package, I had to wait for the publish run to finish before an app could use the new version. Agents also make many changes that span multiple modules, and keeping the module structure in shape became painful. Because each task was spread across several repositories, agents often missed shared constants, functions, and APIs. I think my job now is to help AI make fewer mistakes. One way to do that is to give the project a shape where AI can quickly understand the whole picture: where to look and where to add things. That's why I decided to move to a monorepo. How I moved 39 repos in without losing a single commit The transition wasn't that simple. I have an Electron app, a React Native app, and a web app, each with its own tech stack and package manager my server-side code stays in its own repos . Most packages used pnpm, but the React Native app used Yarn, so I had AI switch it to pnpm. Some of my repositories are public, as contributions to the open source community: for example, React Native modules and tools that help developers build Inkdrop plugins. Those can't move into a private monorepo. Everything else moved in, and the repository is now a single pnpm workspace. I used git filter-repo https://github.com/newren/git-filter-repo?ref=devas.life to bring each repository in with its full git history. For each repo, it moved every file into its new folder for example, apps/desktop or packages/editor across all past commits. It also renamed the tags to the