Skip to content
Annuva

Open source · Self-hosted · AI-ready

Know which customer is worth it.

Annuva is the billing and profitability dashboard for freelancers and small agencies who sell hosting, domains and maintenance next to their project work. Customers, recurring charges, fixed costs and invoices in one place – and your AI assistant can work with all of it.

Free under the AGPL · one Docker container · your data stays with you

AnnuvaDashboard2026

Revenue

€48,320

Result

€31,870

Recurring

€18,240

Tax reserve

€7,650

Cash flow

JFMAMJJASOND
IncomeExpenses

Is the customer worth it?

  • Studio Lindnerworth it+€1,840
  • Bakery Huberworth it+€620
  • Sommer Winerycheck-€140

Which invoices are still open?

3 invoices, €2,140 in total. The oldest is 12 days overdue.

  • One Docker container
  • SQLite, MySQL or Postgres
  • 78 MCP tools for AI
  • REST API + OpenAPI 3.1
  • German & English
  • AGPL-3.0, free forever

Why Annuva

Four questions a spreadsheet can’t answer

Hosting customers pay yearly, domains renew in March, the server bill arrives every month. Annuva brings it together and answers the questions that matter at a glance.

What did I earn this year?

Revenue, expenses and result per year, including a plan year built from your recurring charges and fixed costs.

What comes in and goes out next month?

Monthly cash flow with planned values and the running balance – the yearly domain renewals never take you by surprise again.

Which customer is actually worth it?

Recurring surplus per customer after domains, packages and a fair share of the server costs – with a clear rating.

How much tax should I put aside?

An estimate from your profit and your marginal tax rate per year, plus manual adjustments.

Built-in AI connection

Just ask your numbers.

Annuva contains an MCP server. Connect Claude, Cursor, VS Code or any other MCP client and work with your business data in plain language – no export, no copy and paste, no extra plugin.

Your AI assistant

connected to Annuva

Which invoices are overdue?

list_invoices · status = open

Two invoices are overdue: RE-2026-041 for Bakery Huber (€480.00, 9 days) and RE-2026-044 for Studio Lindner (€1,190.00, 3 days). Shall I send reminders?

Yes, remind both please.

remind_invoice × 2

Done – both reminders are on their way.

Ask about your business …
  • 78 tools

    Everything the REST API can do: customers, invoices, billing run, costs, taxes and the dashboard.

  • Safe by design

    Personal tokens with read or read/write scope. A read token only sees the read-only tools, and issued invoices can never be changed.

  • Part of your instance

    The MCP server runs inside your own Annuva. There is no extra service, no account and no middleman.

Connected in three steps

  1. 1Create a tokenIn Annuva under Profile → API tokens, with read or read/write access.
  2. 2ConnectOne command for Claude Code – or URL and header in any MCP client.
  3. 3AskYour assistant picks the right tools by itself – from a quick question to a complete billing run.
bash
claude mcp add --transport http annuva https://annuva.example.com/api/mcp \
    --header "Authorization: Bearer an_…"

Things you can simply ask

  • Create the yearly hosting invoices for all customers and show me the drafts.

  • Which customers cost me more than they bring in?

  • Add 12 hours of maintenance for Bakery Huber to a new invoice.

  • How much tax should I put aside for this year?

  • Which domains and contracts renew in the next 60 days?

  • Book last month’s server bill of €38.90 as a fixed cost.

Features

Everything recurring, finally in one place

Built for people who host websites, run servers and maintain projects for their customers.

Dashboard

Key figures, revenue per year, cash flow, costs by assignment and the tax estimate – filtered by year and customer.

Customer rating

For every customer: recurring revenue, pass-through costs, server share and surplus. You see at once who pays off.

Recurring charges

Monthly, quarterly, half-yearly or yearly. The billing run creates one draft per customer – or per partner agency – without duplicates.

Invoices & PDFs

Gapless numbers, PDF templates, small-business rule (§ 19 UStG) or VAT per line, cancellation invoices, e-mail delivery and reminders.

Fixed costs & expenses

Servers, licences and subscriptions with renewal dates; one-off expenses with receipts and categories.

Resources

Domains, containers, proxy hosts and databases per customer – you know what runs where and who pays for it.

Partners & agencies

Agencies receive one combined invoice for all of their end customers.

Offers & tasks

Offers as PDFs with number and status, tasks with due dates – the small things around a customer stay with the customer.

Works everywhere

German and English, light and dark, from phone to ultra-wide screen. Several users with the roles admin and user.

Self-hosting

Running in two minutes

One container, SQLite by default, no configuration required. Put your reverse proxy in front – done.

  1. 1Save the compose file
  2. 2Start the container
  3. 3Open the setup wizard with the token from the log
  • Your databaseSQLite out of the box, MySQL or PostgreSQL with a single variable.
  • Backup = one folderDatabase, uploaded files and generated secrets live in one data directory.
  • Updates in one commandPull the new image and restart; migrations run automatically.
  • Any domainAnnuva takes its URL from the reverse proxy headers – no base URL to configure.
yaml
# compose.yaml
services:
    annuva:
        image: ghcr.io/dasred/annuva-app:latest
        container_name: annuva
        restart: unless-stopped
        ports:
            - "40100:40100"
        volumes:
            - ./data:/var/www/data
bash
mkdir -p data && sudo chown 1000:1000 data
docker compose up -d
docker compose logs annuva | grep -A1 "Setup required"
bash
curl -H "Authorization: Bearer an_…" \
    "https://annuva.example.com/api/v1/invoices?filter[status]=open"
json
{
    "items": [
        {
            "number": "RE-2026-044",
            "status": "open",
            "date": "2026-11-02",
            "dueDate": "2026-11-16",
            "grossAmount": 1190
        }
    ],
    "total": 1
}

For developers

Automate everything

All business data is available through a REST API with personal bearer tokens. The OpenAPI 3.1 description is always current, because the API, the MCP tools and the forms are generated from the same entity definitions.

Open source

Free software, no lock-in

Annuva is free software under the AGPL-3.0. Host it yourself at no cost, read the code, change it. Your data stays in a database you control – no lock-in, no subscription.

FAQ

Questions & answers

Is Annuva really free?

Yes. Self-hosted, Annuva is free and open source under the AGPL-3.0. You only pay for your own server.

Who is Annuva for?

Freelancers and small agencies who sell recurring services – hosting, domains, maintenance contracts – next to their project work and want to know what really pays off.

Which AI assistants work with Annuva?

Every MCP client that supports Streamable HTTP with an authorization header – for example Claude Code, Claude Desktop, Cursor or VS Code. The MCP guide shows the setup for each of them.

How safe is it to let an AI work with my data?

The assistant works with the permissions of your token. Use a read token for analysis and a read/write token only where it should change data; issued invoices can only be cancelled, never changed. Keep in mind that everything the assistant reads is sent to the provider of your AI model.

Does Annuva replace my accounting software?

No. Annuva writes invoices and shows revenue, costs and an estimated tax, but it is not bookkeeping software and the tax figure is no tax advice. Your accountant still gets your invoices and receipts.

Does it work for small businesses under § 19 UStG?

Yes. With small-business taxation invoices carry no VAT and the required note; with regular taxation every line has its own tax rate.

Which databases are supported?

SQLite is the default and needs no setup. For larger installations Annuva also runs on MySQL and PostgreSQL.

Can several people work with it?

Yes. Users have the role admin or user, each with their own language, time zone, theme and API tokens.

Ready to see what your customers are worth?

Look around in the demo or have your own instance running in a few minutes.