* [AI] Consolidate loot-core connection: default web path, electron split, drop .browser * [autofix.ci] apply automated fixes * [AI] Replace browser-preload .browser extension with package.json subpath imports Use the imports field in desktop-client/package.json with conditional resolution (electron → empty stub, default → real implementation) to eliminate the last .browser file extension from the codebase. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Refactor connection imports to use @actual-app/core * Implement connection mock for desktop-client tests and update import path * [AI] Fix formatting and update imports after master merge Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * [AI] Fix connection mock in TransactionsTable tests and use electron-renderer condition Wire up the manual connection mock for TransactionsTable tests since the __mocks__ directory was removed, and restore electron-renderer condition in loot-core package.json exports. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * [autofix.ci] apply automated fixes * [AI] Remove redundant resolveExtensions from vite configs These arrays were identical to Vite's built-in default and served no purpose. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * [AI] Remove remaining resolveExtensions from vite/vitest configs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * [AI] Fix build failures: update browser-preload import path and condition - Change loot-core/shared/platform to @actual-app/core/shared/platform - Use electron-renderer condition for #browser-preload to match vite resolve Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * [AI] Remove redundant resolveExtensions from api and loot-core desktop configs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Remove '*.browser.ts' extension and alias resolutions Removed the special '*.browser.ts' file extension and file resolutions via alias, preferring conditions. --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Getting Started
Actual is a local-first personal finance tool. It is 100% free and open-source, written in NodeJS, it has a synchronization element so that all your changes can move between devices without any heavy lifting.
If you are interested in contributing, or want to know how development works, see our contributing document we would love to have you.
Want to say thanks? Click the ⭐ at the top of the page.
Key Links
- Actual discord community.
- Actual Community Documentation
- Frequently asked questions
Installation
There are four ways to deploy Actual:
- One-click deployment via PikaPods (~1.40 $/month) - recommended for non-technical users
- Managed hosting via Fly.io (~1.50 $/month)
- Self-hosted by using a Docker image
- Local-only apps - downloadable Windows, Mac and Linux apps you can run on your device
Learn more in the installation instructions docs.
Ready to Start Budgeting?
Read about Envelope budgeting to know more about the idea behind Actual Budget.
Are you new to budgeting or want to start fresh?
Check out the community's Starting Fresh guide so you can quickly get up and running!
Are you migrating from other budgeting apps?
Check out the community's Migration guide to start jumping on the Actual Budget train!
Documentation
We have a wide range of documentation on how to use Actual, this is all available in our Community Documentation, this includes topics on Budgeting, Account Management, Tips & Tricks and some documentation for developers.
Contributing
Actual is a community driven product. Learn more about contributing to Actual.
Code structure
The Actual app is split up into a few packages:
- loot-core - The core application that runs on any platform
- desktop-client - The desktop UI
- desktop-electron - The desktop app
More information on the project structure is available in our community documentation.
Feature Requests
Current feature requests can be seen here. Vote for your favorite requests by reacting 👍 to the top comment of the request.
To add new feature requests, open a new Issue of the "Feature Request" type.
Translation
Make Actual Budget accessible to more people by helping with the Internationalization of Actual. We are using a crowd sourcing tool to manage the translations, see our Weblate Project. Weblate proudly supports open-source software projects through their Libre plan.
Repo Activity
Sponsors
Thanks to our wonderful sponsors who make Actual Budget possible!
