Under the River

burke2 pts0 comments

Under the River (2026) - ShopifySkip to Content

SearchType something you're looking for

Log inStart for free

blog|Infrastructure<br>Under the River<br>What it took to ship our Slack-native agent River, lessons learned, and the substrate that runs beneath it. Co-authored by River.<br>/ Javier Moreno<br>/ River

Published on May 28, 2026

img]:mt-3 [&_a>img]:mb-8 [&_a>img]:h-[revert-layer] [&_img]:my-12 [&_a>img]:inline-block [&_figure>img]:mb-0 [&_figure]:mb-12 [&_img]:inline-block [&_ul]:list-disc [&_ul]:space-y-3 [&_ul]:pl-6 [&_ul]:mb-6 [&_ul_li]:pl-4 [&_ol]:list-decimal [&_ol]:space-y-3 [&_ol]:pl-6 [&_ol]:mb-6 [&_ol_li]:pl-4 [&_ol_li::marker]:font-bold [&_iframe]:max-w-full [&_figcaption]:mb-12 [&_figcaption]:text-center [&_figcaption]:text-xs [&_figcaption]:sm:text-sm [&_figcaption]:mt-1 [&_strong]:font-medium [&_.heading--4]:font-aktivgroteskextended [&_.heading--4]:text-2xl [&_.heading--4]:font-medium [&_.heading--4]:tracking-[-.02em] [&_iframe]:mt-3 [&_iframe]:mb-9 [&_.container]:m-0 [&_.container]:flex [&_.container]:gap-5 [&_.container]:flex-wrap [&_.green]:text-[green] [&_.red]:text-[red] [&_.pros]:bg-[#eafaea] [&_.pros]:rounded-[10px] [&_.pros]:p-5 [&_.pros_h3]:mt-2 [&_.cons]:bg-[#ffebe6] [&_.cons]:rounded-[10px] [&_.cons]:p-5 [&_.cons_h3]:mt-2 [&_.pros]:tablet:flex-[1_0_calc(50%-10px)] [&_.pros]:flex-[1_0_100%] [&_.cons]:tablet:flex-[1_0_calc(50%-10px)] [&_.cons]:flex-[1_0_100%] [&_.pros_.grid-container]:grid [&_.cons_.grid-container]:grid [&_.grid-container]:gap-[5px] [&_.grid-container]:grid-cols-[15px_auto] [&_.pros_.grid-container]:p-[5px] [&_.cons_.grid-container]:p-[5px] [&_.aspect-video_iframe]:mt-0 article-content [&_.truncated-text]:relative [&_.truncated-text]:max-h-[300px] [&_.truncated-text]:overflow-hidden [&_.truncated-text]:mb-6 [&_.truncated-text::before]:absolute [&_.truncated-text::before]:content-[""] [&_.truncated-text::before]:bottom-0 [&_.truncated-text::before]:w-full [&_.truncated-text::before]:h-[150px] [&_.truncated-text::before]:bg-gradient-to-t [&_.truncated-text::before]:from-white [&_.truncated-text::before]:from-50% [&_.truncated-text::before]:to-transparent [&_.truncated-text\_\_toggle]:absolute [&_.truncated-text\_\_toggle]:bottom-0 [&_.truncated-text\_\_toggle]:w-full [&_.truncated-text\_\_toggle]:text-center [&_.marketing-code]:bg-[#f0f1f2] [&_.marketing-code]:font-bold [&_.marketing-code]:p-1 [&_.marketing-code.marketing-code--block]:p-4 [&_.marketing-code--block]:block [&_.marketing-code--block]:max-w-full [&_.marketing-code--block]:overflow-x-scroll [&_.marketing-code--block]:mb-5 [&_.partners-signup]:mt-6 [&_.partners-signup]:mb-12 [&_.partners-signup]:bg-gray-200 [&_.partners-signup]:p-3 [&_.partners-signup]:md:p-6 [&_.table]:block [&_.table]:overflow-x-scroll [&_.table]:max-w-full text-engineering-dark-text [&_h2]:text-inherit [&_h3]:text-inherit [&_h4]:text-inherit [&_.heading--4]:text-inherit [&_a]:text-[#E7ECFB] [&_strong]:text-engineering-dark-text" itemProp="articleBody"><br>It’s a strange time to be working in developer tools. Things we were doing six months ago don't make sense anymore. Tools that didn't exist a year ago are now central to how we work. The texture of the job has never changed so fast, and the tools we’re building reflect that.

River is an AI agent that lives in our company Slack. We launched it a couple of months ago. Now, one in eight merged pull requests across Shopify is coauthored by it.

Tobi shared how River has become a teaching workshop for our company, but the agent surface layer is only one part of the story. This is what we built underneath River, and the bet we placed in early 2024 that made it all possible.

Part I · The signal

Spring 2024

Here’s where Shopify was: many repos, bespoke development environments, slow feedback. Friction we’d learned to live with, especially when the alternative was "rewrite everything."

Around that time, we made two seemingly unrelated decisions:

Become a monorepo company. One repository for all things Shopify ships. We call it World.

Build everything with Nix . Dev environments, CI, production images: one reproducible substrate.

These were not crowd-pleasers. They were infrastructure-hygiene moves some thought were a waste of effort. But a bet drove them:

“Code is going to be increasingly written with AI, and our infrastructure needs to be the substrate for that.” — a sentence we said in early 2024

What happened next, in brief: It was painful. And it worked.

What broke and what we got

Moving Shopify into one repo caused real breaks. CI had to scale by an order of magnitude, almost overnight. Merge queues became load-bearing. The build cache became a product. Test infrastructure had to be rebuilt around the assumption that any change might recompile a large share of the graph. Dozens of scattered team-level assumptions had to be undone, one by one. This is the unsexy part of the story.

But the payoff:

An AI coding agent at the root of the repo, navigable cross-zone

Skills: written-down...

text truncated container code river block

Related Articles