Freenary is an open-source personal finance app that you host yourself. It connects your banks, imports your accounts and transactions, categorises them, and shows you where your money goes — all in your own PostgreSQL database. Freenary is under active development: the Budget area works end to end, and three more areas (Portfolio, Analysis, Goals) are planned.
You need Docker Engine with Compose v2, and an account with a bank provider. The full walkthrough lives at Quickstart.
mkdir freenary && cd freenary
curl -O https://raw.githubusercontent.com/suiramdev/freenary/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/suiramdev/freenary/main/.env.examplecp .env.example .env
openssl rand -hex 16 # POSTGRES_PASSWORD
openssl rand -hex 32 # BETTER_AUTH_SECRETOpen .env and write these three lines:
POSTGRES_PASSWORD=<the first value>
BETTER_AUTH_SECRET=<the second value>
FREENARY_VERSION=latestlatest is the newest release. Pin a version such as 0.1 for an instance you keep; the Releases page lists them.
Powens is the default provider. Create a sandbox domain in the Powens console, then write the credentials into .env:
BANKING_PROVIDER=powens
POWENS_DOMAIN=acme-sandbox
POWENS_CLIENT_ID=<client id>
POWENS_CLIENT_SECRET=<client secret>Bank providers walks each console step.
docker compose up -dcurl http://localhost:3000/
curl -L -o /dev/null -w '%{http_code} %{url_effective}\n' http://localhost:3001/The API server answers OK. The web app prints 200 http://localhost:3001/login.
Open http://localhost:3001. Sign up with an email address and a password. With no email provider configured, Freenary signs you in at once.
These defaults reach
localhostand nobody else. Read Self-hosting before you serve the instance to other people.
The full documentation lives at freenary.dev (source in apps/fumadocs):
- Quickstart — a running instance on one machine
- Concepts — the vocabulary the interface uses
- Using Freenary — what you do on each screen
- Self-hosting — the install that serves other people
- Configuration — every environment variable
- Integrations — the API surface and procedures
- Contributing — set up the code, run the checks, open a pull request
- Architecture — workspaces, request flow and build
git clone https://github.com/suiramdev/freenary.git
cd freenary
bun install
bun run dev:updev:up runs the full stack in Docker behind OrbStack hostnames. Without OrbStack:
cp .env.example .env
bun run db:start
bun run db:push
bun run dev # web 3001, server 3000, docs 4000Run the checks before opening a pull request:
bun run check # lint and format
bun run check-types # TypeScript
bun run build # every appRead .github/CONTRIBUTING.md, then CONTEXT.md for the product vocabulary. Pull requests target dev.
Report a problem or request a feature: GitHub Issues.
Freenary is free software under the GNU Affero General Public License v3.0 or later. You may run, study, change and share it. If you change Freenary and let other people use it over a network, AGPL section 13 requires you to offer them the source of your version. Third-party notices: THIRD-PARTY-NOTICES.md.
Copyright (C) 2026 Marius (@suiramdev) and the Freenary contributors.