Sandbox
@dubbl-org/dubbl

Self-hosted accounting app with an MCP server

dubbl is a full accounting platform for bookkeeping, invoicing, payroll, inventory, projects, CRM, and reporting. It is built as a Next.js app with PostgreSQL, Drizzle, and Trigger.dev, and it includes a built-in MCP endpoint for agent access to accounting data.

45 stars15 forksTypeScriptUpdated 2mo ago
Who it's for

Builders who want to self-host their accounting system and connect agents to it through MCP.

What it delivers

You can run your own accounting stack and let MCP-compatible agents work with its data.

What it does

Double-entry bookkeeping

Chart of accounts, journal entries, and bank reconciliation.

Invoicing and quotes

PDF invoices, payment tracking, recurring invoices, and credit notes.

Payroll and projects

Employees, contractors, pay runs, leave, timesheets, tasks, and billable hours.

Inventory and assets

Warehouses, stock takes, BOMs, serial and lot tracking, fixed assets, and depreciation.

API and MCP access

A REST API with key management and a built-in MCP server for agent connections.

How to get it

  1. 1Run
    # Push schema to database
    pnpm db:push
    
    # Seed with demo data (optional)
    pnpm db:seed
  2. 2Run
    pnpm dev
  3. 3Dubbl uses Trigger.dev for scheduled maintenance and delayed retries. For production,…
    pnpm trigger:deploy

README

dubbl logo

dubbl

Open source, double-entry bookkeeping for modern teams.

License GitHub stars PRs Welcome


dubbl is a full-featured, open-source alternative to Xero and QuickBooks. It is API-first, developer-friendly, and built for teams that want full control over their financial data.

Features

  • Double-entry bookkeeping - Chart of accounts, journal entries, bank reconciliation
  • Invoicing and quotes - PDF generation, payment tracking, recurring invoices, credit notes
  • Bills and purchase orders - Accounts payable, purchase requisitions, landed costs
  • Banking - CSV import, bank reconciliation, scheduled transactions
  • Expense management - Claims, receipt OCR, approval workflows, recurring expenses
  • Inventory - Warehouses, stock takes, assembly/BOM, serial and lot tracking, valuation
  • Payroll - Employees, contractors, pay runs, tax forms, timesheets, leave management
  • Projects - Time tracking, milestones, tasks, billable hours
  • CRM - Pipeline management, deals, analytics
  • Fixed assets - Depreciation schedules, disposal tracking
  • Budgets - Budget creation, variance analysis, budget vs actual
  • Tax - Multi-jurisdiction tax rates, VAT returns, BAS, Schedule C, sales tax
  • 25+ financial reports - P&L, balance sheet, cash flow, aged receivables, and more
  • Multi-currency - Exchange rates, currency conversion
  • Documents - File management and storage
  • Audit trail - Full audit log for compliance
  • API-first - Complete REST API with API key management
  • MCP Server - Connect any AI coding agent via Model Context Protocol (OAuth 2.1)

Quick Start

Prerequisites

  • Node.js 20+
  • PostgreSQL 15+ (or use Docker)
  • S3-compatible storage (optional, for file uploads)

Installation

# Clone the repository
git clone https://github.com/dubbl-org/dubbl.git
cd dubbl

# Install dependencies
pnpm install

# Set up environment variables
cp .env.example .env

Edit .env with your configuration:

# Database
DATABASE_URL=postgresql://user:password@localhost:5432/dubbl

# Auth
AUTH_SECRET=your-random-secret-here
AUTH_URL=http://localhost:3000

# Stripe (optional)
STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...

# Trigger.dev background jobs (required for production scheduled tasks/retries)
TRIGGER_PROJECT_REF=proj_...
TRIGGER_SECRET_KEY=tr_dev_...

# S3 Storage (optional)
S3_BUCKET=dubbl-uploads
S3_REGION=us-east-1
S3_ACCESS_KEY_ID=...
S3_SECRET_ACCESS_KEY=...
S3_ENDPOINT=https://s3.amazonaws.com

Database Setup

# Push schema to database
pnpm db:push

# Seed with demo data (optional)
pnpm db:seed

Run

pnpm dev

Open http://localhost:3000 in your browser.

If you ran the seed script, log in with demo@dubbl.dev / password123.

Background Jobs

Dubbl uses Trigger.dev for scheduled maintenance and delayed retries. For production, set TRIGGER_PROJECT_REF and TRIGGER_SECRET_KEY, then deploy the tasks:

pnpm trigger:deploy

Without Trigger.dev, scheduled backups, bookkeeping maintenance, invoicing maintenance, trash purge, report schedules, notification digests, Stripe retries, and webhook delivery retries will not run automatically. Webhook retries are scheduled when a delivery fails, so keep TRIGGER_SECRET_KEY configured in the app runtime before accepting webhook traffic.

Tech Stack

Self-Hosting

See the Self-Hosting Guide for instructions on deploying dubbl with Docker.

MCP Server

dubbl includes a built-in Model Context Protocol server that lets any MCP-compatible AI agent interact with your accounting data. The MCP server uses Streamable HTTP transport with OAuth 2.1 authentication and is available on all plans.

Works with Claude Desktop, Claude Code, Cursor, Windsurf, VS Code Copilot, and any other MCP-enabled agent. Just point your client at:

https://dubbl.dev/api/mcp

See the MCP documentation for setup instructions for each client.

Documentation

Full documentation is available at dubbl.dev/docs or by running the app locally and visiting /docs.

Contributing

We welcome contributions of all kinds: bug fixes, features, documentation, and tax regulation updates.

  • Open an issue to report bugs or request features
  • Submit a pull request with your changes
  • Help keep tax information accurate by reporting outdated rules
  • See the Contributing Guide for details

License

Licensed under the Apache License 2.0.

Files in the repo

Repository payload36 top-level entries
  • .github
  • app
  • assets
  • components
  • content
  • drizzle
  • hooks
  • lib
  • public
  • scripts
  • tests
  • trigger
  • .dockerignore
  • .env.example
  • .gitignore
  • AGENTS.md
  • CLAUDE.md
  • components.json
  • docker-compose.prod.yml
  • docker-compose.yml
  • Dockerfile
  • drizzle.config.ts
  • eslint.config.mjs
  • LICENSE
  • mdx-components.tsx
  • next.config.ts
  • package-lock.json
  • package.json
  • pnpm-lock.yaml
  • postcss.config.mjs
  • proxy.ts
  • railway.json
  • README.md
  • source.config.ts
  • trigger.config.ts
  • tsconfig.json

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More other

🎨 Best DeepSeek Harness Design Plugin. The open-source Claude Design alternative. 🖥️ Local-first desktop app. 🖼️ Your coding agent becomes the design engine: prototypes, landing pages, dashboards, slides, images & video — real files, HTML/PDF/PPTX/MP4 export. 🤖 Claude Code / Codex / Cursor / DeepSeek Harness / OpenCode & 20+ CLIs via BYOK.

95k
HKUDS/
Vibe-Trading

"Vibe-Trading: Your Personal Trading Agent"

33k
tinyhumansai/
openhuman

OpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.

40k

Your Personal AI Assistant; easy to install, deploy on your own machine or on the cloud; supports multiple chat apps with easily extensible capabilities.

35k