RWX announces $7M seed round and launch of Mint, a paradigm-shifting CI/CD platform
Early last year we began building a paradigm-shifting CI/CD platform to provide unmatched capabilities and the best developer experience in CI/CD. Today, we’re launching Mint.
Most CI/CD platforms were built in the early era of cloud computing and have not evolved to incorporate modern techniques and best practices. Largely, they’re all just running scripts on VMs. For a tool that is pivotal in an engineer’s feedback loop of making code changes, the status quo isn’t good enough. In pursuit of giving engineers better tools, we spent the past year building Mint.
With platforms today:
- Engineers are needlessly waiting on tasks to run that aren’t related to their code changes.
- Engineers have to spend time sifting through raw logs to identify failures, despite the fact that they’re viewing results in their browser which can display more richly formatted information.
- Engineers have to commit and push to run tasks, creating a very inefficient cycle for iteration.
Mint solves these problems and many more.
The barrier to entry to building a product in this space is quite high. We’ve been able to bring this to life with the support of a $7M seed round led by Quiet in 2022.
Backstory
We founded RWX in 2022 to drive meaningful improvements in engineering productivity. When we started, we explored a variety of ideas for how we could have the biggest impact. Our company name – RWX – is inspired by the Linux file permissions of read, write, and execute. It was an apt metaphor for researching, publishing, and doing work.
Through a winding path of research, experimentation, and talking to engineering leaders at over 100+ companies, we realized that one of the more tractable opportunities was in improving build and test tooling. The well-known xkcd comic about engineers waiting for their code to compile was published in 2007. Although some of our tools have improved, overall this experience is not much better today.
In an effort to make an impact quickly, we built and shipped Captain to detect and mitigate flaky tests, ABQ to optimize test parallelization, and Runners to provide more performant CI infrastructure.
Through this process, we realized that we weren’t going to be able to make the kind of difference we wanted to make by building on top of existing CI platforms. We were constrained in the quality of experience that we could create. We also discovered prevalent dissatisfaction around existing CI/CD tools among numerous engineering teams.
A New Paradigm for CI/CD
Mint moves CI/CD beyond scripts on VMs to a task-based DAG.
In CI workflows today, jobs are configured to run as scripts inside VMs. While the approach has served engineers well for a long time, it’s rather limiting. Running a new job in parallel requires re-executing all of the setup steps. With a single VM running steps with persistent state and infrastructure, the opportunity for optimizations around performance and retries is limited. The side effects that each step can have are unknown. Additionally, resource allocation is inefficient – providing more compute to a single step within a job is not possible without over allocating the compute for the other steps.
Mint defines CI/CD workflows as a task-based directed acyclic graph (DAG). It’s a more powerful model for definition and unlocks significant performance benefits. Most notably, a task-based DAG enables the ability to provide content-based caching, which we’ll talk about next.
The reuse and composition of tasks is much improved with a DAG. In our beta testing we heard that most Mint definitions require less than half the lines of configuration as were necessary with previous platforms.
The retry experience is also substantially improved with a DAG. Mint supports granular retries of tasks, even while other tasks in the run are still running.
Mint utilizes content-based caching, eliminating needless waiting
Engineers familiar with building containers understand content-based caching. When building a container, if the contents of files do not change, and the command does not change, the builder will produce a cache hit. This concept is also present in Bazel, but Bazel has far too high a cost of implementation to gain widespread adoption.
Mint brings the power of content-based caching to CI/CD. Running the same commands on the same files will automatically produce cache hits. This capability extends beyond simple tasks like installing packages. If you're running the same tests on the same source code, Mint will produce a cache hit. If you revert a commit and go back to the source code contents from a previous commit, your entire build in Mint will be a cache hit.
Mint supports filters so that you can specify which files in your repository are relevant for tasks. Utilizing this mechanism, you can ensure that engineers are never waiting for tests to run which aren't relevant to the changes in their PR.
Mint moves CI/CD from raw log files to rich semantic results
Most CI platforms provide build results as log files. This is understandable, since the commands that are run in CI produce text output designed for terminals. But engineers view build results in their browsers. And browsers are capable of rendering html and displaying richly formatted data.
Mint knows the difference between test failures, linter errors, and other types of task results. In Mint, each different type of task produces structured data (called semantic outputs) which Mint parses to render richly formatted results. The Mint UI then aggregates all of the relevant results into a single view, eliminating the need to click into individual jobs or scroll through log files.
Mint evolves CI/CD beyond commit and push workflows by providing a local CLI
In most CI platforms, you have to commit and push to run. This creates an extraordinarily slow feedback loop for making changes. Not having a way to validate any changes locally is terribly inefficient. You can see the prevalent dissatisfaction in this with the act repo having 50k stars.
Mint supports running workflows using a local CLI. Make your change and start a run. No committing and pushing necessary.
Mint moves CI/CD beyond guessing at fixes by providing a remote debugger
When executing code on remote infrastructure, it can be difficult to know how to fix issues when things go wrong. Without remote debugging, engineers have to resort to guessing at fixes, committing and pushing, and waiting for results. Debugging further usually involves adding a bunch of diagnostic commands to tasks, hoping to get some relevant output in the task logs.
The solution to this is obvious – provide a remote debugger that can open a shell in the remote infrastructure. A slew of tools are at our disposal to inspect the filesystem, inspect running processes, and solve system problems. With Mint, you can use those tools to figure out how you need to modify your commands to get your tasks to work.
Mint moves CI/CD beyond static tasks in yaml to dynamic definitions via code
Most CI platforms require task definitions to be specified in static yaml when a run starts. This is rather limiting. As engineers search for more advanced capabilities, many of the yaml definitions support expressions, but this starts to become difficult to maintain. There certainly seems to be a sense of collective yaml fatigue among engineers.
Some build tools circumvent this problem by moving entirely to definitions implemented in code. While this alleviates the problems of overly complex yaml, it also has some downsides in additional complexity, especially for simple tasks.
The solution to this problem is to support the best of both worlds – static definition and dynamic task generation. Mint allows defining tasks at runtime. This means that you can have a task which generates more tasks, which means you can use any programming language that you want to generate task definitions. Unlike the code-centric build tools, Mint facilitates dynamic task definition through a data API. You can write a data file containing task definitions at runtime, and Mint will run those tasks as part of the same run.
A thoughtful developer experience for every aspect of CI/CD
There's so much more that we could write about. While building Mint we reconsidered every aspect of CI/CD, putting deep thought into the design of each feature to provide the best developer experience.
Mint includes every feature you need in CI/CD: background processes (for docker services or other processes), environment variables, if conditions, expressions, event triggers, cron schedules, file artifacts, output values, log annotations, concurrency pools, incremental tool caches, parallel and matrix tasks, secrets, plain text vars, OIDC authentication, secrets scrubbing, third-party tasks (leaves), embedded runs, and more.
Getting Started
Sign up for the best developer experience in CI/CD at https://go.sniply.page/render-assets/?url=https://www.rwx.com/mint
If you want to get in touch directly, you can find our engineering team on our Discord server, or reach out to co-founder Dan Manges at [email protected]
Acknowledgements
It's taken a tremendous amount of engineering effort and ingenuity from the entire RWX team – Ayaz, Dan, Doug, Kyle, Pierre, Tommy, Tony, and past team members – to reach this point.
Thank you our first two beta testers – HubiFi and Visivo – for their willingness to adopt Mint, extensively test, and provide keen design insights. We've written about how HubiFi uses Mint and how Visivo uses Mint.
Learn more about HubiFi's automation and intelligence for financial teams at https://hubifi.com
Learn more about Visivo, the first open-source version-controlled BI framework built for the modern data stack, at https://visivo.io. We use Visivo for all of our internal dashboards and love it.
Finally, a small acknowledgement from Dan: the RWX name came from one of the best people and best engineers I’ve ever known. He used it to name a group chat of decade long friendships and people who taught me most of what I know about building software. He graciously let me appropriate the name for the company.
Getting Started
Sign up for the best developer experience in CI/CD at https://go.sniply.page/render-assets/?url=https://www.rwx.com/mint
If you want to get in touch directly, you can find our engineering team on our Discord server, or reach out to co-founder Dan Manges at [email protected]