Overview
Discover what makes Actual Budget powerful
Actual is a **local‑first** personal finance engine that exposes a rich, programmatic API while keeping all data on the client. Built in **Node.js** with a modular package structure, it separates concerns into `loot-core` (business logic), `desktop-client` (UI framework), and `desktop-electron` (Electron wrapper). The core runs on any platform that supports Node, enabling lightweight deployments as a CLI or web service. Data is stored in an encrypted SQLite database that can be replicated across devices via a custom sync protocol or third‑party services such as Fly.io, Docker Swarm, or self‑hosted servers.
Language & Runtime
Core Engine
UI Layer
Persistence
Overview
Actual is a local‑first personal finance engine that exposes a rich, programmatic API while keeping all data on the client. Built in Node.js with a modular package structure, it separates concerns into loot-core (business logic), desktop-client (UI framework), and desktop-electron (Electron wrapper). The core runs on any platform that supports Node, enabling lightweight deployments as a CLI or web service. Data is stored in an encrypted SQLite database that can be replicated across devices via a custom sync protocol or third‑party services such as Fly.io, Docker Swarm, or self‑hosted servers.
Architecture
- Language & Runtime: JavaScript/TypeScript on Node.js (v18+), compiled with ES modules.
- Core Engine:
loot-coreprovides the budgeting, transaction, and reporting logic. It exposes a REST‑like JSON API over IPC for external tooling. - UI Layer:
desktop-clientis a React‑based SPA rendered inside Electron (desktop-electron). The UI consumes the core via IPC, enabling hot reload and live editing. - Persistence: Local SQLite database with optional AES‑256 encryption. Schema is versioned and migrations are handled by the core.
- Sync: A lightweight, event‑driven sync layer that can push changes to a remote HTTP endpoint or a peer‑to‑peer server. It supports conflict resolution and optional end‑to‑end encryption.
Core Capabilities
- Budgeting Engine: Envelope budgeting, rolling forecasts, and real‑time balance calculations.
- Transaction API: CRUD operations, tagging, categorization, and recurring rules exposed via a JSON‑over‑IPC interface.
- Reporting: CSV/JSON export, chart data streams, and customizable dashboards that can be consumed by external analytics tools.
- Extensibility: Plugins are plain Node packages that register hooks into the core lifecycle (
onTransaction,onSyncStart). The plugin API is documented in the community docs and can add new UI panels, importers, or export adapters. - Webhooks: Optional webhook endpoints can be configured to notify external services on data changes, enabling integrations with Zapier, IFTTT, or custom microservices.
Deployment & Infrastructure
Actual can run in multiple contexts:
- Desktop App: Electron bundles for Windows, macOS, and Linux. Self‑contained, no external dependencies.
- Docker: Official image exposes
/dataas a volume for persistence and/syncfor remote endpoints. Ideal for CI pipelines or lightweight VPS hosting. - Fly.io / Kubernetes: The app can be deployed as a stateless service behind a reverse proxy, with persistent storage mounted via volumes. The sync layer scales horizontally by running multiple replicas that coordinate through a shared database or a message broker.
- Serverless: The core can be packaged as an AWS Lambda or Cloudflare Worker for lightweight API endpoints, though the UI remains client‑side.
Integration & Extensibility
- API: The IPC JSON API can be wrapped in a REST or GraphQL layer for external consumption. SDKs are available in JavaScript and Python, simplifying integration into existing stacks.
- Plugins: Add new data sources (e.g., bank feeds via Plaid), custom visualizations, or automation scripts. The plugin registry supports dynamic loading at runtime.
- Webhooks & Callbacks: Configure URLs that receive POST payloads on transaction creation, budget adjustments, or sync events.
- Custom UI: Because the desktop client is React‑based, developers can fork the UI or embed it in a web application using
react-domand the core’s IPC bridge.
Developer Experience
- Documentation: Comprehensive community docs cover architecture, API contracts, and plugin development. Inline TypeScript types aid IDE autocompletion.
- Community: Active Discord channel, GitHub discussions, and a Weblate project for translations. Issue templates enforce consistency for feature requests.
- Testing: The core is unit‑tested with Jest, and integration tests run against a headless Electron instance. CI pipelines enforce linting and coverage thresholds.
- Licensing: AGPL‑3.0, ensuring that any derivative work remains open source while allowing commercial use under the same terms.
Use Cases
- Personal Finance SaaS – Deploy a private budgeting service for clients, exposing the API to a custom front‑end while keeping data on your infrastructure.
- Embedded Finance – Integrate budgeting logic into a larger application (e.g., a personal CRM) by importing the
loot-corepackage and exposing transaction endpoints. - Automation Pipelines – Use webhooks to trigger external workflows (e.g., send a Slack message when a budget is exceeded).
- Data‑Driven Analytics – Export transaction streams to a data warehouse for custom reporting or machine‑learning models.
Advantages
- Performance: Native Node.js engine with minimal overhead; SQLite queries are fast for typical personal‑budget workloads.
- Flexibility: Full control over data storage, encryption, and sync mechanism. No vendor lock‑in.
- Open Source: AGPL guarantees that improvements benefit the community, while still allowing commercial deployment.
- Extensible Architecture: Plugin system and IPC API make it trivial to add new features or integrate with existing services.
- Privacy‑First: Local storage and optional end‑to‑end encryption give developers confidence when handling sensitive financial data.
Actual offers a developer‑centric platform
Open SourceReady to get started?
Join the community and start self-hosting Actual Budget today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Tags
Explore More Apps
Omeka S
Digital heritage publishing for institutions
webtrees
Collaborative online genealogy platform for family tree management.
ConvertX
Self-hosted file conversion for over a thousand formats
Langfuse
Open-source observability for LLM applications and agents
CSA Admin
Effortless CSA & ACP management platform
Starbase 80
Self-hosted other
