Self-hosted client portal for service agencies
Your client portal. Your server. Your data.
Sell services, take payment, deliver work, invoice and support clients from one portal under your brand. Installed on a server you control with one command, so your clients' data stays with you.
- Runs on your own server
- Client data never leaves it
- One-time license, no per-seat fees
Built on
The tools serious products run on
- Next.jsPortal and admin
- ReactInterface
- TypeScriptTyped end to end
- NestJSThe API
- PostgreSQLYour data
- RedisLive presence
- DockerContainers
- Let's EncryptAutomatic HTTPS
- Cloudflare R2File storage, optional
- ResendEmail
How it works
From first click to final invoice
ClientOS follows an order the whole way, so nothing falls between tools.
01Sell
Every service gets its own page on your domain. Visitors pick what they need and order on the spot, without a sales call.
02Get paid
Card, PayPal or crypto, straight to your accounts. The order exists only once the payment is confirmed.
03Brief
Right after paying, the client answers your questions in their portal. Work starts with everything you need.
04Deliver
Hand over the files on the order. The client approves or asks for a revision, and it approves itself if they go quiet.
05Bill and report
Invoices settle themselves when clients pay, and every month adds up in your reports.
Self-hosted, for real
Your clients' data never touches our servers
Hosted portals keep your clients, contracts and invoices on someone else's computer. ClientOS runs entirely on a server you rent and control. We never see what is inside it.
Your server
Hetzner · DigitalOcean · AWS · any Linux VPS
Client portal
portal.youragency.com
Admin
admin.youragency.com
API
api.youragency.com
PostgreSQL
every client, order and invoice
File storage
deliverables and attachments
Caddy
HTTPS, certificates renewed for you
Clients, orders, messages, invoices, files and your staff accounts all live here, in your own PostgreSQL database and storage.
The only things that leave it
- Your Resend accountthe emails you send
- Your payment gatewaysStripe, PayPal, crypto
- Vibemonk license check-inlicense and version only, twice a day
The check-in carries your signed license and the version you run. No client, order or invoice data, ever.
Keys sealed with AES-256-GCM
Gateway, email and storage keys are encrypted in the database with a secret that exists only on your server.
A least-privilege database login
The API cannot change the schema, and refuses to start as a superuser or the table owner.
Private files, short-lived links
Every file except your logo is private and reached through a signed link that expires, after 15 minutes by default.
HTTPS on every address
Certificates are issued and renewed automatically, with HSTS. Only ports 80 and 443 are open.
2FA, roles and an audit trail
Two-factor sign-in, 122 staff permissions, and a logged, read-only, time-limited "sign in as".
Backups you hold
One command dumps the database, files and settings into a folder you can copy anywhere.
Want the details? See exactly what runs on your server.
Installation
Self-hosting without the server headache
No Docker files to write, no environment variables to fill in, no proxy to configure. If you can paste a command into a terminal, you can run ClientOS.
$ sudo ./install.sh==> Checking the server 2 CPU, 3911 MB memory, 74 GB free disk==> Checking your license ClientOS 1.4.0 is available to this key==> Checking DNS portal.clients.youragency.com → 203.0.113.24 admin.clients.youragency.com → 203.0.113.24==> Writing deploy/.env secrets generated==> Downloading ClientOS 1.4.0==> Starting the API is up ✓ ClientOS is running. https://admin.clients.youragency.com/setup
- 1
Point your domain at a server
One wildcard DNS record. Any Ubuntu or Debian server with 2 to 4 GB of memory.
- 2
Run the installer
It installs Docker, generates every password, downloads ClientOS with your license key and turns on HTTPS.
- 3
Finish in the browser
Name your agency, pick your colours and create the owner account. About two minutes.
After that, one command each
clientos updatebacks up, downloads the new release, restartsclientos rollbackback to the release beforeclientos backupdatabase, files and settings to a folder
White-label
Your clients see your brand. Never ours.
Pick two colours in Settings. ClientOS repaints the portal, the sign-in screen, every email and every invoice to match, on your own domain.
Features
Built for agencies that sell services like products
Store, delivery, messages, billing and growth tools, working as one system.
By the numbers
Deep where agencies need depth
- staff permissions
- 122staff permissionsgrouped into roles you build
- notification types
- 76notification typesin-app and email
- payment gateways
- 5payment gatewaysplus manual crypto and credit
- currencies
- 21currenciesnever silently converted
- form field types
- 17form field typeswith rules and multi-page
- optional modules
- 7optional modulesswitch off what you do not use
Technology
Production-grade, not a weekend template
The same stack modern SaaS companies run on, packaged so it installs on a single server. Typed from the database to the button.
Apps
The client portal and the admin
Next.js
Server-rendered pages
React
Interface
Tailwind CSS
Styling, themed from your two brand colours
TypeScript
End to end, one typed monorepo
API
Every rule, permission and payment
NestJS on Fastify
The server
Better Auth
Sign-in codes, passwords, 2FA, Google
Drizzle ORM
Typed queries and migrations
Zod
Every input and setting validated
Data
On your server, in your hands
PostgreSQL
All of your data
S3-compatible storage
Built in, or your Cloudflare R2
Redis
Live presence only
Background jobs
Renewals and reminders, in PostgreSQL
Server
Installed and updated for you
Docker
Every part in its own container
Caddy
HTTPS with automatic Let’s Encrypt certificates
Node.js
Runtime
Verified downloads
Every release file checked by its SHA-256
Connects to
- Stripe
- PayPal
- NOWPayments
- CoinGate
- BTCPay Server
- Resend
- Cloudflare R2
- Cloudflare Turnstile
- Google sign-in
Why self-hosted
Stop renting the system your business runs on
Hosted portals are quick to start and expensive to stay on. ClientOS is the same idea, installed on infrastructure you control.
Pricing
Pay once. Own it.
One license per domain, paid once. No monthly fee, no per-seat pricing, and no cut of your payments. Your only running cost is the server, from about $10 a month.
Starter
For an agency that installs it themselves.
$990one-time
1 year of updates
- License for one domain
- Every feature, no limits on clients or staff
- One-command installer and the clientos tool
- 1 year of updates
- Email support
Pro
We install it on your server and hand it over working.
$1,790one-time
3 years of updates
- Everything in Starter
- We install it on your server and domain
- Email and payments connected for you
- 3 years of updates
- Priority support
Agency
Installed, migrated and your team onboarded.
$2,690one-time
Lifetime updates
- Everything in Pro
- Migration from Wayfront (SPP) or a CSV import
- Onboarding call for your team
- Lifetime updates
- Priority support
In every package
Prices in US dollars. Need more than one domain? Each extra install is its own license.
- The full product: store, orders, messages, billing, tickets, reports
- Unlimited clients, staff and orders
- Your domain, your brand, no ClientOS name shown to clients
- Runs on any Ubuntu or Debian server you choose
- Keeps working when updates end
Get ClientOS
Own your client portal.
Pick a package and tell us a little about your agency. No call needed unless you want one.
- 1
Tell us which package
A person replies within one working day with payment details, or a demo if you asked for one.
- 2
Your license key arrives
It appears in your vibemonk.com account under Licenses, with the installer download.
- 3
ClientOS goes live on your server
Run one command yourself, or on Pro and Agency we install it and hand it over working.
FAQ