Actual Budget companion: reconciliation, bulk editing, rules, payees, backups, bank sync & ActualQL
10K+
The advanced admin, budgeting, diagnostics, sync, reconciliation, and ActualQL workbench for Actual Budget.
Actual Bench is a companion application for Actual Budget designed for the work that becomes cumbersome in the standard Actual UI: bulk data management, full-year budgeting, advanced rule maintenance, diagnostics, cross-budget workflows, reconciliation, automation, and ad-hoc analysis.
It is not a replacement for Actual Budget's everyday transaction experience. Think of it as the workbench you open when you need to inspect, repair, organize, audit, reconcile, sync, or reshape your budget data.
Actual Bench supports two ways of connecting to Actual Budget.
The recommended architecture.
Connect directly from the browser to your Actual Budget server using Actual's browser API transport.
Existing actual-http-api deployments remain fully supported for integrations and workflows that use the HTTP API bridge.
Run the latest stable release:
docker run -d \
--name actual-bench \
--restart unless-stopped \
-p 3000:3000 \
-v actual-bench-data:/data \
xrous/actual-bench:latest
Then open:
http://localhost:3000
The latest unreleased build from main is also available for testing:
docker run -d \
--name actual-bench-edge \
--restart unless-stopped \
-p 3000:3000 \
-v actual-bench-edge-data:/data \
xrous/actual-bench:edge
The edge image may contain unfinished or unstable changes.
Use latest for normal deployments.
Save the following as docker-compose.yml:
services:
actual-bench:
image: xrous/actual-bench:latest
container_name: actual-bench
ports:
- "3000:3000"
environment:
ACTUAL_BENCH_DB_PATH: /data/actual-bench.sqlite
# --- Optional settings ---
# Disable Direct Actual Server mode and offer only
# HTTP API Server / actual-http-api connections.
# DIRECT_BROWSER_API: "0"
# Logging level: debug | info | warn | error
# LOG_LEVEL: info
# Enables encrypted server-side credential storage
# for supported unattended HTTP API workflows.
#
# Use a strong, persistent secret and do not change
# it after credentials have been enrolled.
# SYNC_VAULT_KEY: "<strong-secret>"
# Optional secret protecting the external
# automation/scheduler trigger.
# SYNC_SCHEDULER_SECRET: "<strong-secret>"
volumes:
- actual-bench-data:/data
restart: unless-stopped
volumes:
actual-bench-data:
Start Actual Bench with:
docker compose up -d
Then open:
http://localhost:3000
Actual Bench stores its own application and workflow metadata in a server-side SQLite database.
The default location is:
/data/actual-bench.sqlite
The Docker volume:
actual-bench-data:/data
should be persisted so Actual Bench configuration and app-owned data survive container recreation.
This may include data such as:
This database is not a replica of your Actual Budget database.
Your Actual Budget files and financial records remain managed by Actual Budget.
All additional configuration variables are optional.
ACTUAL_BENCH_DB_PATHLocation of Actual Bench's server-side metadata SQLite database.
Default:
/data/actual-bench.sqlite
DIRECT_BROWSER_APIControls availability of Direct Actual Server mode.
Set:
DIRECT_BROWSER_API=0
to disable Direct mode and offer only HTTP API Server connections.
LOG_LEVELControls server logging verbosity.
Supported values:
debug
info
warn
error
SYNC_VAULT_KEYEnables Actual Bench's encrypted server-side credential vault.
This is required for supported unattended workflows that need Actual Bench to access an HTTP API connection while the browser is closed.
Use a strong, persistent secret.
Changing the key after credentials have been enrolled can make previously stored credentials inaccessible.
SYNC_SCHEDULER_SECRETOptional secret used to protect the external scheduler trigger when that integration is enabled.
Actual Bench is designed around keeping access to your Actual Budget environment under your control.
For Direct Actual Server connections, credentials remain client-side.
Server-side credentials are only stored when you explicitly enable functionality that requires unattended HTTP API execution and configure Actual Bench's encrypted credential vault.
Actual Bench's metadata database stores application-owned workflow information rather than maintaining a copy of your Actual Budget financial database.
GitHub
https://github.com/x-rous/actual-bench
Documentation
https://x-rous.github.io/actual-bench/
Live Demo
https://actual-bench-demo.vercel.app
The live demo contains a shared sandbox budget and requires no Actual Budget server.
Content type
Image
Digest
sha256:b53a5f1a8…
Size
94.1 MB
Last updated
1 day ago
docker pull xrous/actual-bench