🎨 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.
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.
Builders who want to self-host their accounting system and connect agents to it through MCP.
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
- 1Run
# Push schema to database pnpm db:push # Seed with demo data (optional) pnpm db:seed
- 2Run
pnpm dev
- 3Dubbl uses Trigger.dev for scheduled maintenance and delayed retries. For production,…
pnpm trigger:deploy
README
dubbl
Open source, double-entry bookkeeping for modern teams.
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
- Framework - Next.js (App Router)
- Database - PostgreSQL with Drizzle ORM
- Auth - NextAuth.js
- UI - Tailwind CSS + shadcn/ui
- Docs - Fumadocs
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
- .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 itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More other
"Vibe-Trading: Your Personal Trading Agent"
OpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.

Your Personal AI Assistant; easy to install, deploy on your own machine or on the cloud; supports multiple chat apps with easily extensible capabilities.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
macOS video editor built for AI