Dell
Multi-Node VM Clusters in Minutes, From the Browser: How Dell Built Dynamic Lab in Pure Python
Dynamic Lab: internal VM management app built with Reflex
Here's how JL Olmstead, a Senior Principal Engineer at Dell, describes Reflex after using it to ship a production-ready internal app:
Meet Dell, one of the largest technology companies in the world. Headquartered in Round Rock, Texas, Dell employs over 100,000 people and supports customers across enterprise infrastructure, data center hardware, end-user computing, software-defined storage, and managed services, including flagship products like PowerScale, PowerStore, PowerEdge, and the Dell client portfolio.
Behind those products sits a global support and engineering organization that needs to replicate, debug, and validate customer environments every single day.
Inside Dell's enterprise support and engineering org, engineers need on-demand access to fully configured clusters and VMs to reproduce customer setups, troubleshoot live cases, and validate fixes. For a support engineer working a ticket, the gap between a same-day resolution and a multi-day debug often comes down to how quickly they can stand up a lab that matches what the customer is running.
Historically, this was a real bottleneck. Engineers either had workstations under their desks, or shared servers that one person had configured and lent out to teammates. Spinning up a fresh, multi-node cluster on a specific product version, let alone one matching a specific customer configuration, was something only a handful of senior engineers could do efficiently.
JL, a Senior Principal Engineer at Dell, was tasked with fixing this. His mandate was to make lab provisioning self-service so that any engineer, including day-one techs and subject matter experts who weren't infrastructure specialists, could spin up a multi-node cluster in minutes, replicate a customer's environment, and start debugging. The third evolution of this internal tool, Dynamic Lab, would be browser-based.
The previous two iterations of the tool had been CLI-based. They worked, but they were cumbersome. Engineers had to memorize commands, poll for job completion, and run separate commands just to figure out how to connect to the VMs they had spun up.
JL has spent his development career in Python infrastructure. The backend services his team had built for scanning VMs, gathering data, and coordinating Jenkins and Ansible jobs were all written in Python. The path from CLI to browser was the bottleneck, but the question wasn't whether he could learn React. As a Senior Principal Engineer, his calculus was about what would actually scale: any UI layer outside his Python codebase would mean a parallel stack to maintain, a separate skill set to keep on the team, and another set of dependencies to take through Dell's procurement process.
He still spent months evaluating his options. React was the obvious enterprise default, but it would have meant ramping up on JavaScript, a frontend toolchain, and component libraries that none of his existing Python tooling spoke to. He explored Svelte and tried to get a Vue environment running. None of them got him to a working tool fast enough to justify the parallel stack cost.
Before Reflex, JL's own early attempts at building a webUI for the lab tool were, in his words, "hacked-together HTML" that "looked like garbage and were tough to use as an end user." That wasn't going to fly for a tool meant to scale across thousands of engineers under the Dell brand.
JL started prototyping Dynamic Lab in Reflex and had a working demo within a week. Because Reflex is pure Python, every backend service he had already written, including the VM scanners, the Jenkins and Ansible coordination, and the data collection logic, could be reused directly. No rewrite. No JavaScript layer. No new toolchain.
The team was able to:
- Reuse their existing Python backend services for VM scanning and Jenkins/Ansible coordination without modification
- Build a full browser UI using Reflex's
rx.card,rx.foreach, tabs, popovers, dropdowns, and built-in theming - Hook the app up to Dell's Okta SSO for authentication
- Embed a Guacamole-based SSH client so engineers can connect to provisioned VMs directly from the browser
- Stream live progress from Jenkins jobs into a UI progress bar as multi-node clusters spin up
- Self-host the entire app on Dell's internal ESXi / vCenter / vSAN / NSX infrastructure, with a roadmap to make Dynamic Lab fully hypervisor-agnostic via Ansible and Terraform
The result is a production beta that lets any Dell support engineer pick a product, pick a version, and spin up a fully working multi-node cluster, with networks, configuration, and clients all included, in a few minutes.
JL evaluated multiple paths to a production browser-based tool and chose Reflex because it allowed his team to:
- Build full-stack in Python, the language his entire backend already runs in. No JavaScript, no separate frontend team, no parallel toolchain.
- Standardize the team on a single language, critical for a tool that needs to outlast any one contributor and scale to thousands of users.
- Ship a polished UI without staffing a frontend specialist. JL built cards, tabs, dropdowns, alert dialogs, and live-updating views entirely in Python.
- Read and reason about the codebase. The whole app stayed in Python that JL's team could read and extend without context switching.
Dynamic Lab is currently in beta with 200+ engineers across Dell and is managing roughly 2,000 VMs at any given moment. The team is moving to beefier hardware to support broader adoption. The broader engineering organization, thousands of developers who were constrained by the original CLI bottleneck, represents the long-term opportunity.
JL is also extending the platform with:
- A Reflex-based management server that drops gateways into different environments, with the goal of making Dynamic Lab hypervisor-agnostic across customer and partner deployments
- A file upload pipeline using
rx.uploadso template creators can submit ISOs and other artifacts directly through the app - A migration from SQLite to Postgres to support the higher concurrency expected as user count scales
What started as one Senior Principal Engineer's attempt to replace a CLI is now embedded infrastructure for how Dell's support and engineering org reproduces customer environments and resolves cases.
See what other teams built
Contact Us



