Time, projects, and invoices for consultancies.

Consultainer tracks the hours your team works for each client and turns them into invoices — on your own server, from a single docker compose file. Open source, no per-seat pricing, no data leaving your network.

Consultainer dashboard showing hours this week, unbilled time, and outstanding invoices

Running in a few minutes

Postgres, the app, and a small scheduler for recurring invoices — all in one compose file.

  • Open it in a browser and create your organization and admin account. No email setup required.
  • Sign in with your own identity provider — Authentik, Okta, Entra ID, Keycloak, any OIDC.
  • Multi-arch images for amd64 and arm64. Upgrades are docker compose pull.
# grab the compose file and example settings
curl -O https://raw.githubusercontent.com/Armistice-Group/retainer/main/docker-compose.yml
curl -o .env https://raw.githubusercontent.com/Armistice-Group/retainer/main/.env.example

# fill in the Required section of .env, then
docker compose up -d

What it does

Built for engineering, security, and design consultancies billing by the hour, flat fee, or milestone.

Track time against real work

Log hours by hand or run a timer, against projects and tasks. See your week at a glance, or the whole team's.

Weekly time log grouped by day

Projects that know their budget

Per-person bill rates, hour budgets, tasks, milestones, and expenses — with invoiced-to-date always in view.

Project page with billing summary, hours budget, and team rates

Invoices from unbilled work

Pull unbilled time, completed milestones, and expenses into an invoice in a few clicks. Send PDFs, take payment through Stripe or Mercury, push to QuickBooks.

Invoice list with paid, sent, overdue, and draft invoices

Billing on a schedule

Put a client on a weekly, bi-weekly, or monthly cycle and their invoice drafts itself. Retainers bill a fixed amount on their own schedule.

Client page with projects, invoices, and a bi-weekly billing cycle

Works with your agent, too

A REST API and a built-in MCP server let Claude, Cursor, or any agent log time and draft invoices with a personal API key — the same permissions as the person it acts for.