Docs
Introduction
What ClientOS is, how it is put together and how to read these docs.
ClientOS is a self-hosted client portal and agency admin for selling and delivering productized services. Your clients find a service, pick a package, pay and fill in a brief. Your team delivers the work, talks to the client and gets paid, all in one place that runs on your own server under your own domains.
Who it's for#
ClientOS is built for agencies and freelancers who sell services as products: fixed packages, clear deliverables, a delivery time and a price. Think SEO packages, design subscriptions, content retainers, link building, development sprints or any other offer you can describe on a service page.
One installation serves one agency. Inside it you can have as many clients as you like. Each client is a person who belongs to one or more companies, and each company can have its own team with its own roles.
What you get#
- A store with service pages, packages, add-ons, quantity pricing, recurring billing and a checkout that takes payment before an order exists. See Services and the store and Checkout and payments.
- Order delivery with briefs, statuses, deliveries, revisions, approvals and cancellations. See Orders and delivery.
- A branded client portal where clients follow their orders, message your team, download files, pay invoices and open support tickets. See The client portal.
- Money tools: invoices, credit notes, account credit, subscriptions, expenses, profit and loss, and reports. See Invoices and credit and Expenses, finance and reports.
- Sales tools: a lead pipeline, website form capture, short links with visit tracking, coupons and a referral program. See Leads and tracking and Coupons and referrals.
- A team workspace with a task board, messages, a help desk, roles and fine-grained permissions. See Team and permissions.
The three apps#
A ClientOS deployment runs three apps. Each one gets its own hostname under the domain you choose, alongside a fourth, files., for uploads and downloads.
| App | Example address | Who uses it | What it does |
|---|---|---|---|
| Portal | portal.example.com | Your clients and the public | The client portal, plus your public pages: service pages, forms, the signup page, invoice pay links and tracked short links |
| Admin | admin.example.com | You and your team | Everything you run the agency from: dashboard, orders, clients, invoices, settings. It also hosts the /setup installer on a fresh deployment |
| API | api.example.com | Both apps, payment providers, Resend | The server. It owns the database, checks every permission, signs people in, receives webhooks and runs the background jobs |
How they fit together#
- The portal and admin are Next.js apps. They render pages on the server and call the API over your internal Docker network, so those calls never leave the server.
- Browsers also talk to the API directly, for example to sign in. That's why the API has its own public hostname.
- All the hostnames share one parent domain, so a single session cookie works across them. That shared cookie is also what lets a team member with the right permission use "Sign in as" to view the portal as a client.
- Payment providers and Resend send their webhooks to the API's public address.
- Background work (renewals, reminders, overdue invoices and so on) runs inside the API process. There's no separate worker and no system cron to set up.
The stack in brief#
| Layer | What ClientOS uses |
|---|---|
| Web apps | Next.js 16, React 19, Tailwind CSS 4 |
| API | NestJS on Fastify, Node.js |
| Database | PostgreSQL 18 |
| Realtime presence | Redis 7 (only for who's online and typing) |
| File storage | Built-in storage on your server, or your own Cloudflare R2 bucket |
| Resend (outgoing mail and inbound email into tickets) | |
| Payments | Stripe, PayPal, NOWPayments, CoinGate, BTCPay Server, manual crypto-wallet payments and account credit |
| Bot protection | Cloudflare Turnstile |
| Packaging | Docker images, installed and updated by a one-command installer, behind Caddy for HTTPS |
What "self-hosted" means for you#
You run ClientOS. Nobody else hosts it for you.
- Your server. One command installs it on a Linux server you control, with its own database, file storage and HTTPS. Another updates it.
- Your domains. The portal, admin and API live on your own hostnames, such as
portal.youragency.com, carrying your name, logo and colors. - Your data. Every order, client, invoice and message lives in your PostgreSQL database. You back it up and you decide where it lives.
- Your files. Logos, deliverables and attachments are stored on your server, or in your own Cloudflare R2 bucket if you prefer, and served through short-lived signed links.
- Your accounts. Email goes out through your Resend account. Payments go straight into your Stripe, PayPal or crypto gateway accounts. ClientOS never sits between you and your money.
- Your keys, sealed. API keys you paste into Settings (Resend, R2, Turnstile, payment gateways) are encrypted in the database with a secret only your server holds.
You need a Linux server, a domain, your license key and a Resend account for email. The installer brings everything else: PostgreSQL 18, Redis, file storage and HTTPS certificates. Installation walks you through it.
ClientOS sends mail only through your Resend account, which you connect in the admin after installing. First run covers it.
How these docs are organized#
Getting started
- Installation: what you need, DNS and the one-command installer.
- Configuration: what the installer writes to
deploy/.env, and the few settings you might change. - First run: the setup page, then connecting email and payments.
- Updates and backups: the
clientoscommand, updates, backups, restores, your license and troubleshooting. - Local development: run the whole stack on your own machine.
Selling: Services and the store, Checkout and payments, Subscriptions, Coupons and referrals, Leads and tracking, Forms.
Delivering: Orders and delivery, Todo and checklists, Messages and files, Support tickets.
Clients and money: Clients and companies, The client portal, Invoices and credit, Expenses, finance and reports.
Administration: Branding and white-label, Team and permissions, Notifications and email, Settings reference.
If you're setting up a new deployment, read the Getting started pages in order.