It's been a busy seven months since Convex 1.0 was released. Twenty times as many developers are using Convex every week, and their apps generate 50 times as much traffic on our platform. We've shipped ten significant releases since 1.0, including major features like vector search, preview deployments, and server-side rendering. A lot has changed!

However, one thing that hasn't changed is our commitment to release an open-source Convex backend. So today, we're very pleased to announce the initial release:

Click here to go right to the good stuff.

What's in the repository

The convex-backend codebase consists of just over 200,000 lines of code, which comprise the core backend implementation of Convex. The majority of the backend is written in Rust, with a healthy dose of TypeScript supporting the server-side function environment.

While this is a single-machine version of Convex, it contains exactly the same fully up-to-date code used by the cloud service. All app APIs are supported, so any project that runs in the cloud service should run just fine in the open-source backend.

Some supporting platform features currently require using the cloud service. These include:

  • The Convex dashboard
  • Streaming import/export using services like Fivetran and Airbyte
  • Log streams to observability services like Axiom and Datadog
  • Exception streaming to services like Sentry

Why we're excited about this

Local-first development. Modern laptops are wonderfully powerful. Correspondingly, more and more developers prefer iterating on their codebases with their own hardware. Additionally, with local development, flaky Wi-Fi is no problem, and deployments over loopback are as fast as it gets. Due to these benefits, we anticipate that customers may frequently use open-source Convex for development. So we intend to invest in tooling updates (such as npx convex) over the next few months to make provisioning local Convex "dev instances" just as easy as the cloud product.

Self-hosting alternative. Convex is a uniquely productive way to build your full-stack projects, but we know it's also one of a kind and leads to a pretty Convex-specific app architecture. These attributes can create understandable concerns about "lock-in" and vulnerability to future pricing changes. Now, with the open-source backend, you can self-host! That's right: running open-source Convex in production is completely okay with us. Just be prepared that operating it may end up being a lot of work. If your project starts getting adopted and needs scale, seamless migrations, automatic backups, and high availability... we strongly recommend you switch to the cloud service. But we're happy to offer you the option to run Convex in production yourself if the tradeoffs make sense to you.

Transparency on how Convex works. As developers have increasingly been using Convex for complex projects, we often find ourselves in detailed conversations about how Convex works. Accordingly, we're working on some great in-depth blog posts outlining the backend architecture. But it's even better if everyone also has access to the code! That way, when explaining a concept, we can also refer to the specific code that implements it.

The license thing

After talking to many developers, founders, and lawyers, we've decided to follow in the footsteps of our friends at Sentry and adopt the FSL. We feel it strikes the right balance of providing as many benefits as possible to Convex customers and developers while discouraging larger cloud services from simply reselling our startup's product.

Our particular take on the FSL converts all convex-backend source code to Apache 2.0 two years after its release[1].

How to get started

  1. Head on over to the GitHub repository.
  2. Clone the codebase and follow the README.
  3. Feel your machine heat up as you compile a lot of Rust.
  4. And you'll have Convex running locally!

If you want to share notes or feedback on the new open-source Convex backend, join our Discord community.

  1. Some parties would insist this license choice signifies that convex-backend is source-available, not open-source. And perhaps when it converts to Apache two years later, then it's truly open-source? Anyway, the nuances of that argument have already been well explored in countless other Internet forums, so we'll keep it simple. ↩︎