Actual is going

You read that right. Actual, a personal finance system I've been working on for over 4 years, is going open-source. That means it will now be 100% free and completely open forever.

Let the forks commence.

"Show me the proof," they said. Here it is. That's the source code. All of it. In all of it's beautiful, wild and raw mess.

You can locally run the entire app, include the syncing server, in less than a tweet's worth of commands:

git clone
cd actual-server
yarn start

Now go to http://localhost:5006. (Read more at actual-server)

We are also moving from Slack to Discord. Join the discord!

Wait a second... what does that mean for me?

This is a significant shift and will have implications to all current subscribers. Here's what's going to happen:

  • Immediately, signups on have been turned off.

  • In June, all existing subscriptions will be cancelled. Specific dates coming soon. (we have delayed this until we figure out the right timeline)

  • In June, the existing syncing server will be shut down (we have delayed this until we figure out the right timeline). Instead, you should host your own server.

  • Unfortunately, the mobile apps are going to be deprecated. They should still work completely fine, and if you are on Android you should be able to build it locally and sideload them. Sadly, mobile apps require a lot of maintenance and money to stay in the app stores and now that we are decentralized, it doesn't make sense for us to take this on. The solution here is to eventually build mobile versions of the web apps. Eventually, the mobile apps will no longer be available in the app stores.

  • It's unclear what will happen with the desktop app. Even though it requires little maintenance code-wise, deployment and code-signing is still a significant burden. For now, the web app is the primary platform until we figure out a solution for this.

  • Over time, the docs content on the website will be migrated to github and the website will be shut down as well.

  • Support will go through github issues on the actual repo. Existing issues from the releases repo will be migrated over. The email will be turned off.

  • We are moving from Slack to Discord. Please join! The slack instance will eventually be shut down.

We are moving to letting you host your own server. With modern services like, it's easier than ever to deploy a server. We are changing from a centralized service to a decentralized one.

You can easily transition your data from the hosted version to the open-source version. Once you've setup your own server, load Actual and point it to your server, and your files show show up as local files. You can select each one and register it to the server for syncing.

See the actual-server project for how to setup your own server.

Some of you are going to disappointed in this. I'm sorry! I'm optimistic that most current users are technical and are actually going to be very excited about this change.

When I started exploring this, I got excited because it enables some really interesting features like an HTTP-based API. The existing API requires the entire app to be loaded. We couldn't offer an HTTP endpoint because we can't read your data. Now that you are hosting your server, you are in control and are free to offer an HTTP API.

You could even hook up your own bank syncing -- Plaid support a free development plan that covers an individual user. In fact, you'll see Plaid support in the syncing server because I already started building this out.

In the future, the open-source version will provide releases similar to before and will provide easy paths to upgrade. I'm actively calling people to step up and help! If you are a developer, please poke around and open PRs for any improvements. There are some initial project ideas in the contributing file. I will continue to work on how to manage the project.

The open-source version of Actual has the following changes:

  • The server has been rebuilt to remove the subscription-related workflows.

  • The app doesn't require an account anymore. On first run, it does ask for a URL to the server you want to use. You can point the app at any server.

  • If you want, you can skip the option to use a server and use the app completely locally.

  • Any tracking code has been removed.

Most of the app was left as-is. There is a lot of stuff in there that should be cleaned up, but I wanted to get this out.

What happened?

Building products is hard, building a business is even harder. I told myself that I was going to push through and make it happen no matter what. Even if it took years, I would slowly build my vision. When I stopped working full-time on Actual and started working at Stripe, I told everyone it wasn't going anywhere. And I meant it.

But the fact is this project is way bigger than me. I have to come to accept that. Even I were completely full-time, I need to hire at least 2 other people to properly sustain it. It's time to call it for what it is and open it up as a community project.

There's so much in the code waiting to be utilized. The API now is a self-contained bundle with all the code (compared to before where it was a thin client that connected to a running app). This means it's a full library capable of all the features in the app. Actual is now an open platform for building personal finance products.

By myself, I haven't had enough time to bring it to its full potential. Focusing on one specific thing for a week means 10 other things are left undone. It's not working.

It's currently 1:30 AM and I've been working all night. If I want to launch any features, this is what I have to do. Usually I can quickly prototype a feature, but documenting and launching it takes a ton more time. It's not sustainable. I've given up a lot over the last few years.

I completely underestimated how much work it takes to build a business. There's so much overhead. I'm always figuring out why a build failed, taxes, how to triage issues, responding to support, designing UIs, responding to Apple's complaints, and more. There's so much that goes on behind the scenes. There's no way a single person can possible do this alone, especially as a side project.

One thing I'm really excited about open-source is I no longer have to deal with any of the business or deployment stuff. I can focus on being a project manager.

Last month I was really sick for an entire week. During that time, the syncing server went down twice. I forced myself to sit down and dig into it even though I felt like I was going to throw up. I got it working, but it really made me think about my mental health. I've put a lot of stuff on pause over the last couple years, and I need to find a better balance.

The cost of doing something different

Actual is a very different product. It's not a normal SaaS app. It's a local-first app using a fancy technology called CRDTs that syncs changes across devices.

This has a lot of benefits, but one drawback is I can't use off-the-shelf solutions anymore. Hiring and getting help is harder. I'm super proud of being so ambitious, but ultimately doing something so different made it hard to iterate quickly. I can't simply make a quick database schema change. Every feature needs to be rolled out very thoughfully and maintain backwards compatibility.

I'm hopeful that open-source will make this easier; with lots of people involved it offsets the difficulty added. And I'm hopeful there will a lot of people involved because I get asked if I'm going to open-source at least once a month.

Now everybody can help

I've tried hiring part-time developers about 7 times. It never worked out because there isn't enough money to fund development. $4/month is insanely cheap. But pricing isn't the only issue: even if I bumped up prices, it just needs a lot more funds. Development is crazy expensive.

I was able to hire for some roles like support but it wasn't enough to balance it out.

How does open-source help with this? Isn't everybody working for free now?

While that's true, I've seen the magic of open-source work before. Now everybody is invested in the product, and changes are owned by everybody. We need some structure to move the project along of course, and need to guard maintainers mental health, but open-source has the potential to transform the product.

Please see the contributing file for some initial project ideas. Poke around the code, and join the discord to talk about ways you can help! I'm very optimistic that opening this up is going to make the project more healthy and active.

Right now, Actual is up to 810 paid subscribers. I'm proud of that. But it's time to call it for it is. It needs a lot more help, and I'm excited to see how it evolves as an open-source project.

- James