TL;DR: I’ve started a company, Astral, to continue building high-performance developer tools for the Python ecosystem — to keep building Ruff, and to build more Ruff-like things.

We’ve raised $4m in seed funding led by Accel, with participation from Caffeinated Capital, Guillermo Rauch (Vercel), Solomon Hykes (Docker), David Cramer (Sentry), and others.

I built Ruff to test a theory: that Python tooling could be much, much faster. That theory was validated in the initial prototype. But even still, I wasn’t sure whether anyone would care about a faster linter.

The past few months have proven that the Python community does care — a lot! Since August, Ruff has blown past one million monthly downloads and 12,000 stars. It’s been adopted by some of the most popular and established Python projects on Earth, like Airflow, FastAPI, Pandas, and SciPy — and by companies like Amazon, Hugging Face, LangChain, Microsoft, Mozilla, Netflix, and more.

Ruff’s growth has surpassed even the most ambitious expectations.

5,00010,00015,000GitHub Starsfor selected projectsRuffPyreisortMypyPyrightPyflakesFlake8Prospector20152020

Stars can be a vanity metric, but as a proxy for excitement... Ruff is exciting.

Beyond the numbers, I’m consistently amazed by the positivity around Ruff. It shines through in every interaction, every conversation. I feel extremely lucky to have found myself working on something that resonates so strongly with its users, so thank you to everyone that’s helped shape Ruff into what it is today — contributors and users alike.

As an engineer myself, I understand that adopting a new tool is a big decision with extensive, long-term impact. That smart, serious people were willing to adopt a pre-0.1 project so early in its development gave Ruff the oxygen it needed to grow and thrive. Many established projects and companies now rely on Ruff to write code every day. I view that as both my greatest source of motivation and my most significant responsibility. Thank you for your trust. I won’t let you down.

To me, the community’s response to Ruff is itself evidence of an opportunity: to make the Python ecosystem more productive by building great tools. I’m asked, on an almost-daily basis, to extend Ruff to some other problem space, to some other part of the Python toolchain…

Astral exists to meet that opportunity.

Introducing Astral

Astral’s mission is to make the Python ecosystem more productive by building high-performance developer tools. In short, we’re going to take the ideas behind Ruff to their extreme by (1) expanding Ruff itself and (2) building more Ruff-like things.

When users first try Ruff, they often describe a feeling of disbelief. Astral is an attempt to bring that same feeling to more of the toolchain.

Some of the things we build will look like natural extensions of Ruff (e.g., an autoformatter); others will diverge from the static analysis theme. But our North Star is pretty simple: make the Python ecosystem more productive by building tools people love to use — tools that feel fast, robust, intuitive, and integrated.

To pursue our goals, we’ve raised $4m in seed funding led by Accel, with participation from Caffeinated Capital, Guillermo Rauch (Vercel), Solomon Hykes (Docker), David Cramer (Sentry), Wes McKinney (Voltron Data), Nick Schrock (Elementl), and many others. These are investors and founders that I’ve admired from afar for a long time. I’m grateful for their support.

I believe my decision to focus on Ruff full-time, early on, was critical to its success: responding to issues in real-time, shipping fixes the same-day, keeping up a high development velocity — fulfilling that promise required full-time focus. I believe that maintaining these high standards, while broadening scope, requires a full-time team.

Raising money gives us the ability to build that team (there are now three of us), to fully invest ourselves in the work, to support our community contributors, and to build for the long-term.

What’s next?

In truth: more of the same. While I’m excited to reveal Astral to the world, this company (and this fundraise) enable us to continue down the path we’re already treading. Ruff remains Ruff, and our work will remain open-source and permissively licensed. In the future, we’ll build and sell services on top of our tools — but the tools themselves will remain free and open-source.

Our plan is to provide paid services that are better and easier to use than the alternatives by integrating our open-source offerings directly. Our goal is for these services to be as impactful as Ruff itself — but you may choose not to use them. Either way, Ruff will remain free and open-source, just as it is today.

From the start, Ruff has aimed to advance existing standards and integrate with the wider Python community (e.g., you can use Ruff alongside isort, or use it as an isort replacement; similarly, you’ll be able to use Ruff alongside Black, or use Ruff’s built-in autoformatter). This won’t change either. In fact, we consider it critical to our success.

Similarly, we’ll continue to build in the open alongside our community. Ruff is my first experience as an open source maintainer at scale, and it’s been an intentional goal of mine to create a project and an environment that’s welcoming to both new and existing contributors. While I’m still learning, we’ve had some early success here, and it will remain a priority — both for the project and for me personally.

As always, you can find the core team on Discord and on GitHub. We’ll also be at PyCon (first time, for me).

Get in touch

Finally: I’ve spent a lot of time over the past few weeks talking to users. Thank you to those that’ve already taken the time to chat with me, you know who you are.

If you write Python every day, use Python in production, have opinions on Python tooling, etc., I’d love to hear from you, regardless of whether you use Ruff.

What’s working well? What’s not? How can we help? Get in touch.

P.S. We’re hiring

We’re growing the team — not rapidly, but deliberately. Our early team includes the original author of Maturin, one of the core contributors to Rome, and, uhh, the author of Ruff. We’re looking to bring on another team member or two, opportunistically, to help build Ruff itself and more Ruff-like tools.

For me, the opportunity to work on these kinds of problems full-time is a dream come true. I love building tools, and I see tooling as an incredibly high-leverage endeavor. If you could make the Python ecosystem even 1% more productive, imagine how that impact would compound?

If you feel similarly, reach out. We work remotely across North America and Europe. For these early hires, we’re looking for team members that could, in theory, lead the design and implementation of entirely new tools and systems. Experience with Rust is important. A background in compilers or developer tools is helpful too.