Sell, get paid, deliver and invoice from one portal, under your brand, on your own server.
One-time license. No monthly fee, no per-seat pricing, no cut of your payments.
Tour · How it works · Features · Data · Install · Pricing · Compare · FAQ · Free resources
The ClientOS showreel. The full product, with sample data, is one click away in the instant demo.
Note
This repository is maintained by the ClientOS team, and ClientOS is our own product. Every claim below comes from getclientos.com or its docs and is sourced line by line in AUDIT.md. Anything we could not verify is in UNVERIFIED.md and is not claimed. See the full disclosure.
|
Clients, orders, messages, invoices and files sit in your own PostgreSQL database on a Linux VPS you rent and control. A license check-in is the only thing that leaves it. |
Your domain, five logo slots and two brand colours that repaint the portal, admin, sign-in, emails and invoices. Clients never see the ClientOS name. |
One license per domain, paid once. Unlimited clients, staff and orders. Your only running cost is the server, from about $10 a month. |
| staff permissions, grouped into roles you build |
notification types, in-app and email |
payment gateways, plus manual crypto and credit |
currencies, never silently converted |
form field types, with rules and multi-page |
optional modules, switch off what you do not use |
12 feature areas · 78 features · source: getclientos.com/features
Real screens from ClientOS, taken from the official tutorial recordings. Everything shown runs on the
agency's own domain (clients.youragency.com here).
More screens: task board, leads, subscriptions, branding, team and setup
From a stranger on your website to a paid, delivered and invoiced order, without a sales call in the middle.
flowchart LR
A["🛒 Sell<br/>a page per service<br/>on your domain"] --> B["💳 Get paid<br/>card, PayPal or crypto<br/>straight to you"]
B --> C["📝 Brief<br/>the client answers<br/>your questions"]
C --> D["📦 Deliver<br/>files, revisions,<br/>auto-approve"]
D --> E["📊 Bill and report<br/>invoices settle,<br/>months add up"]
style A fill:#fd4105,color:#fff,stroke:#fd4105
style E fill:#12141c,color:#fff,stroke:#12141c
| Step | What happens |
|---|---|
| 01 · Sell | Every service gets its own page on your domain. Visitors pick what they need and order on the spot, without a sales call. |
| 02 · Get paid | Card, PayPal or crypto, straight to your accounts. The order exists only once the payment is confirmed. |
| 03 · Brief | Right after paying, the client answers your questions in their portal. Work starts with everything you need. |
| 04 · Deliver | Hand over the files on the order. The client approves or asks for a revision, and it approves itself if they go quiet. |
| 05 · Bill and report | Invoices settle themselves when clients pay, and every month adds up in your reports. |
Every package includes the full product. Click an area to expand it, or read its page on the site.
🛒 Service store and checkout: sell productized services from your own domain
- A sales page for every service: draft, private or public, with a live preview while you edit.
- Five pricing models: tiered by quantity, fixed price, hourly, quote on request, and free. One-time or monthly.
- The order exists only once payment is confirmed: Stripe, PayPal, NOWPayments, CoinGate, your own BTCPay Server, manual wallet payments and account credit.
- Requirements collected straight after paying, so work starts with a complete brief.
- Coupons, tax and a processing fee, in 21 currencies, never silently converted.
- Passwordless accounts: buyers get a sign-in code by email. Cloudflare Turnstile keeps bots out.
- Store analytics from page view to paid. Item costs and margins stay private to your team.
📦 Orders and delivery: from brief to approval, always showing whose move it is
- Statuses moved by the work: awaiting brief, in progress, delivered, completed, plus custom statuses.
- Delivery on a clock: time with you, time with the client, and whether it was on time.
- Revisions, approvals and auto-approve: a quiet client stops holding your invoice open.
- Chase every missing brief at once.
- Cancellations and refunds with a reason, and a rating after each delivery.
- A kanban task board that writes its own cards from orders, revisions, tickets and payments.
- Search, filters, bulk actions and CSV on every list, plus a ⌘K command palette.
🧾 Invoicing, subscriptions and finance: invoices that settle themselves
- Gapless numbering:
INV-1001,INV-1002… with credit notes in their ownCN-series. - Pay links anyone can use, with no client account needed.
- Partial payments, refunds and credit notes. Overpayments become credit, spent first next time.
- Subscriptions that bill themselves, with card on file, retries, MRR and client self-service.
- Profit and loss month by month, per currency.
- Expenses with receipts, and margin by service.
- Delivery reports, a monthly report for every client, and CSV exports.
🎨 White-label: a portal your clients read as yours
- Your own domain, such as
clients.youragency.com, with HTTPS issued and renewed for you. - Two colours, repainted everywhere: admin, portal, sign-in, emails and invoices.
- Five logo slots for light and dark backgrounds.
- Rename the words clients read, so "Orders" can read "Projects".
- A portal menu and client dashboard you arrange, with a welcome message and video.
- Every email editable with a live preview, sent from your own address.
- Clients never see ClientOS: not in the portal, not in the emails, not on the invoices.
💬 Messages and help desk: conversations next to the work
- One thread per client and one per order, plus team channels and direct messages.
- Custom offers accepted in the thread: line items, a discount, a total, paid in one click.
- Presence, typing and waiting reminders.
- Saved replies, mentions, reactions and files.
- A help desk in the same portal: statuses, priority, assignee, internal notes, merge and snooze.
- First-response targets in your business hours.
- Email arrives as tickets. Files are private, behind signed links that expire.
📈 Leads and growth: where did the money come from?
- A lead pipeline (new, contacted, qualified, proposal, won, lost) with the source and value of each lead.
- Your website's forms send leads straight in, protected against spam.
- Follow-up emails that send themselves: a thank-you, then days 2, 5 and 10.
- Short links and a funnel to paid for every source.
- Conversions back to the ad platforms: Meta Conversions API, and a Google Ads offline export.
- A referral programme with partner links, commissions and payouts.
- A form builder with 17 field types, rules and multi-page forms.
🔐 Security and permissions: built for agencies that hold sensitive client lists
- Keys sealed with AES-256-GCM, using a secret that exists only on your server.
- A least-privilege database login: the API refuses to start as a superuser or the table owner.
- Private files behind expiring links, 15 minutes by default.
- 122 permissions and six built-in roles: Owner, Ops manager, Account manager, Writer, Outreach, Finance. Clients get per-company roles too.
- 2FA, passwordless codes and Google sign-in, with 2FA enforceable for the whole team.
- An audited "sign in as": read-only, 30 minutes, with the reason and every page logged.
- HTTPS with HSTS, only ports 80 and 443 open, every release file checked by SHA-256.
🖥️ Self-hosting: without the server headache
- One domain, one A record: portal at
/, admin at/admin, API at/v1. - One command installs everything, including Docker, PostgreSQL, file storage and HTTPS through Caddy and Let's Encrypt.
- Finish in the browser in seven short steps.
clientos update,clientos rollback,clientos backup: one command each.- No cron to set up: renewals, reminders and auto-approvals run inside the API.
- Seven optional modules (help desk, messages, coupons, subscriptions, forms, traffic tracking, referrals) you can switch off. The menus disappear and the data stays.
"Hosted portals keep your clients, contracts and invoices on someone else's computer. ClientOS runs entirely on a server you rent and control." (getclientos.com)
flowchart LR
subgraph YOURS["Your server · Ubuntu or Debian VPS"]
direction TB
P["Client portal /"]
AD["Agency admin /admin"]
API["API /v1"]
DB[("PostgreSQL<br/>clients · orders · invoices")]
FS[("File storage")]
P --- API
AD --- API
API --- DB
API --- FS
end
API -->|"emails you send"| EM["Your Resend<br/>or SMTP server"]
API -->|"payments"| PG["Your Stripe, PayPal<br/>and crypto gateways"]
API -.->|"license check-in, twice a day:<br/>signed license + version only"| LS["Vibemonk<br/>license server"]
style YOURS fill:#fff4ef,stroke:#fd4105
Those three arrows are everything that leaves your server. The license check-in carries no client, order or invoice data. If it cannot get through, ClientOS keeps working for a seven-day grace period; after that only the admin turns read-only, while the client portal, checkout and webhooks keep running and nothing is deleted.
curl -fsSL https://license.vibemonk.com/v1/licensing/install/clientos | sudo bash -s -- --license-key CLOS-XXXX-XXXX-XXXX-XXXXThe installer checks your license, installs Docker if it is missing, generates every password, downloads ClientOS with every file verified against its fingerprint, and turns on HTTPS. The docs put it at about 10 minutes, then you finish in the browser.
| Resource | Minimum | Recommended |
|---|---|---|
| Operating system | Ubuntu 22.04 or Debian 12 | Ubuntu 24.04 LTS |
| CPU | 1 vCPU | 2 vCPU |
| Memory | 2 GB | 4 GB |
| Free disk | 10 GB | 20 GB or more, SSD |
| Network | Public IPv4, ports 80 and 443 open | — |
Hetzner, DigitalOcean, Vultr, Linode and AWS Lightsail are all named in the installation docs.
sudo clientos update # back up, download, verify and restart
sudo clientos rollback # go back one release
sudo clientos backup # database, files and settings into one folderTip
Not technical? On the Premium and Custom packages the ClientOS team installs it on your server for you, connects email and payments, and hands over a working portal.
Warning
Backups do not run on their own. clientos backup writes everything to a folder, but nothing runs it
until you schedule it. The docs give a cron line for a daily 03:00 backup.
In every package: the full product (store, orders, messages, billing, tickets, reports) · unlimited clients, staff and orders · your domain and brand with no ClientOS name shown to clients · any Ubuntu or Debian server you choose · keeps working when updates end · 24/7 support.
Prices in US dollars, one license per domain. Each extra install is its own license. → Full pricing · Buy on getclientos.com
The difference is structural: who owns the server, and so whether you pay monthly or once. Competitor prices below are from each vendor's own pricing page, checked on 29 October 2026.
| ClientOS | Wayfront (formerly SPP) | Zendo | |
|---|---|---|---|
| How you pay | Once: $490 / $990 / $1,790 | $99–$129/mo (Base) · $249–$299/mo (Pro) | $25–$29/mo (Core) · $79–$99/mo (Agency) |
| Seats | Unlimited staff | 5 on Base, 10 on Pro, then $18–$20 per seat a month | 1 included, then $8–$17 per user a month |
| Where your client data lives | Your own server | The vendor's servers | The vendor's servers |
| Crypto payments | NOWPayments, CoinGate, BTCPay, manual wallets | Not listed | Not listed (Stripe and bank transfer) |
| Free trial | Read-only demo, 3 days | 14 days, no card | 14 days of Pro, then a free plan |
| Who runs the server | You (or the team, on Premium and Custom) | Wayfront | Zendo |
Hosted tools win on some things, and we say so: no server to patch, interface languages other than English, and integrations ClientOS does not list. Each comparison page has a section on who should stay where they are:
Wayfront (SPP) alternative · Zendo alternative · Agency Handy alternative · All comparisons
| monthly portal bill | kept over three years vs Wayfront Pro at list prices |
of client history moved | from install to live |
Figures are ClientOS's own published claims from the Dot Mirror case study, a white-label link building agency on the Premium package.
Connects to: Stripe · PayPal · NOWPayments · CoinGate · BTCPay Server · Resend · Cloudflare R2 · Cloudflare Turnstile · Google sign-in
Important
ClientOS is self-hosted but not open source. It ships as ready-built, SHA-256-verified Docker images with a one-command installer; the source code is not provided. This repository holds the marketing site and free resources, not the product.
What does self-hosted mean in practice?
ClientOS runs on a Linux server you rent and control, with its own PostgreSQL database, file storage and HTTPS certificates. Email goes out through your Resend account or SMTP server, and payments go straight to your gateway accounts. The only thing that leaves your server is a license check-in twice a day, carrying your signed license and the version you run.
What happens when my updates run out?
Nothing stops. ClientOS keeps running on the version you have, and you can renew to get newer releases. Lifetime updates come with the Custom package.
Can I move over from my current client portal?
On Start-up and Standard you bring your clients in yourself from a CSV file, with column mapping. On Premium and Custom the ClientOS team moves your data for you, or builds a migration tool for it.
Is it really white-label?
It runs on your own domain with your logos, two brand colours, your client-facing words and your email templates. The ClientOS name is not shown to clients anywhere.
Can the ClientOS team see my clients or their data?
No. ClientOS runs entirely on your server, and your database and files never leave it.
How many clients and staff can I have?
Every package states unlimited clients, staff and orders. The license is counted per domain, not per seat.
What languages does the portal support?
The interface is in English. You can rename the words your clients see, such as menu labels and headings, from the settings.
Can I try it before buying?
Yes. The instant demo emails you a login to a live ClientOS with sample clients, orders and invoices: the full agency admin and the client portal. It is read-only and works for 3 days. No call, no card.
Useful whether or not you ever buy ClientOS. No sign-up and no email required.
|
Self-hosted portals, hosted white-label portals, and the onboarding, proposal, project management, invoicing, scheduling and reporting tools around them. |
Vendor-neutral. They work with any client portal, or with none. |
Want a tool added to the list? See CONTRIBUTING.md: one pull request per addition, one neutral sentence, and disclose any affiliation, the same standard the ClientOS entry is held to.
This repository is maintained by the ClientOS team, and ClientOS is our own product. We are not a neutral party and the site does not pretend to be one. What it does instead is show its working:
- Every ClientOS claim comes from getclientos.com or its documentation. The full audit, with the page each fact was read from, is in AUDIT.md: 28 pages read on 29 October 2026.
- Every competitor claim comes from that competitor's own public pages, carries the date it was checked, and links to the source. Nothing comes from a review site or a listicle.
- Where something could not be verified, it is not claimed and is listed in UNVERIFIED.md instead. That includes Agency Handy, whose site refused connections from our network, and every gap in ClientOS's own published material: no renewal price, no refund policy, no customer count, no rating.
- There is no
aggregateRatingorreviewin any structured data on the site, because getclientos.com publishes no rating.scripts/check-links.mjsfails the build if one ever appears. - Every comparison page names the agencies who should stay where they are.
- Nothing here is a paid placement, and inclusion in the list is not an endorsement.
Found something wrong or out of date? Open an issue. Corrections are the point.
Project structure, local setup, build scripts and deploy
| Path | What it is |
|---|---|
src/pages/ |
The site's routes: one .astro file per page, plus three dynamic routes |
src/content/ |
Every fact the site states, as data. site.ts (ClientOS), alternatives.ts (comparisons), faq.ts, list.ts (the curated list), templates.ts |
src/components/, src/layouts/ |
Header, footer, CTA, FAQ, logo, the base layout with all SEO head tags |
src/lib/schema.ts |
JSON-LD builders: SoftwareApplication, FAQPage, BreadcrumbList, ItemList, WebPage |
templates/ |
The four free agency templates as markdown, generated from src/content/templates.ts |
public/og/ |
One branded 1200×630 social card per page, generated by pnpm og |
src/assets/fonts/ |
General Sans, the ClientOS display face, bundled by Vite under the right base |
public/screens/, public/video/ |
Product screenshots and the showreel, used by both the site and this README |
scripts/ |
The three build scripts (below) |
AUDIT.md |
The full source audit of getclientos.com and the two reachable competitors |
UNVERIFIED.md |
What could not be checked, and is therefore not claimed |
Pages are generated from the files in src/content/, so a number appears in exactly one place. Changing
the ClientOS Standard price, for example, is one edit in src/content/site.ts and it updates the pricing
page, the comparison tables and the JSON-LD offers together.
Requires Node 24+ (the build scripts import TypeScript data modules directly) and pnpm 11+.
pnpm install # install dependencies
pnpm dev # http://localhost:4321/tryclientos/
pnpm build # static site into dist/
pnpm preview # serve dist/ locally
pnpm check # astro check: TypeScript across .astro and .ts
pnpm og # re-render the social cards into public/og/scripts/build-downloads.mjsruns automatically asprebuild. It writes the four templates fromsrc/content/templates.tsinto bothtemplates/(browsable on GitHub) andpublic/downloads/(what the site serves), so the rendered page, the repo file and the download can never disagree.scripts/generate-og.mjsrenders one 1200×630 PNG per page with resvg, using the real ClientOS mark, the brand colours#fd4105and#12141c, and General Sans. The PNGs are committed, so a normal build never needs the native renderer. Run it after adding a page or changing a headline.scripts/check-links.mjsis a post-build check overdist/: every internal link resolves, every page has a canonical, a description, an<h1>, a title under 70 characters and anog:imagethat exists, and no page contains a rating claim.
pnpm build && node scripts/check-links.mjsThe same code deploys to two hosts. deploy-target.mjs decides the origin and
the base path once, and the Astro config and the link checker both read it:
| Host | URL | Base | How it is picked |
|---|---|---|---|
| GitHub Pages | https://huelab-byte.github.io/tryclientos/ |
/tryclientos |
the default |
| Vercel | https://<project>.vercel.app/ |
/ |
Vercel sets VERCEL=1 during its build |
Two optional environment variables override either: SITE_URL (the origin, e.g. a custom domain) and
BASE_PATH (e.g. /). SITE_URL is also what canonicals and the sitemap point at, so set it to the
same host on both deployments to tell search engines which copy is the original.
GitHub Pages. GitHub Actions builds and publishes on every push to main
(.github/workflows/deploy.yml). One-time setup: in the repository,
go to Settings → Pages and set Source to GitHub Actions. Without that, the workflow builds
and then fails at the deploy step with HttpError: Not Found.
Vercel. Import the repository; the Astro preset needs no changes (build pnpm build, output
dist). Nothing else is required.
Content in this repository (the list, the templates, the site copy) is released under CC0 1.0. Use it, change it, republish it.
Not covered by that waiver:
- The ClientOS name, logo, product screenshots and showreel, which belong to Vibemonk.
- The Dot Mirror quote and portrait, reproduced from the published case study.
- General Sans in
src/assets/fonts/andscripts/fonts/, from Fontshare, under its own license.
Competitor names (Wayfront, Service Provider Pro, Zendo, Agency Handy and every tool in the list) are trademarks of their respective owners. This repository is not affiliated with or endorsed by any of them.
Your client portal. Your server. Your data.
getclientos.com · made by Vibemonk


















