Identity charges per active user. Flags per seat. Observability per host, then per gigabyte. CRM, HRMS, docs, tasks, recordings, scheduling — per seat, every month, forever. A small company now runs ~150 SaaS apps at around $8,000 per employee per year. None of it costs the vendor more when you hire. It just costs you more.
SOMA is that stack rebuilt in Rust as open source you self-host for nothing — one design system, one login, one Postgres across every product. When you'd rather we ran it, we meter the two things that actually cost money: bytes stored and bytes moved.
SOMA is in beta. Some components are earlier-stage than others — the roadmap shows where everything stands.
SaaS apps, small company
~150
SaaS spend / employee
$8,000/yr
Infra floor, self-hosted
$540+/mo idle
SOMA, self-hosted
$0any headcount
live process · this server right now
8MB
RSS
0.0
Req/s
0ms
p50 latency
0.0%
CPU
The problem · 01
Do the multiplication your vendors hope you won't.
Per-employee SaaS spend at small companies now averages about $8,000 a year — the highest of any company size, because you carry an enterprise-shaped tool stack across far fewer people. For a typical early team:
25 people×$8,000/yr≈$200,000/yr≈$16,600/mo
on software subscriptions — before a dollar of cloud compute, before a single customer. Hire twenty-five more and the seat-priced majority of it doubles, even though serving a seat costs the vendor a few hundred bytes of Postgres.
SaaS spend and app-count figures: Zylo 2025 SaaS Management Index (40M+ licences under management) — $4,830/employee/yr average across all company sizes, ≈$8,000 and ≈150 apps at small companies. The worked example multiplies the small-company average; your stack will differ.
The problem · 02
The meter is rigged to your success.
Look at what each vendor counts. Almost every line of that $200,000 is indexed to a measure of your own growth — users you won, people you hired, machines you needed. Not one of these units tracks the vendor's cost to serve you.
Tool class
Typical vendors
Billed by
Doubles when…
Identity
Auth0, Okta
monthly active users
your product succeeds
Feature flags
LaunchDarkly, Split
seats + MAU
you hire, or you succeed
Observability
Datadog, New Relic
hosts + GB ingested + custom metrics
you scale out
Product analytics
PostHog, Mixpanel, Amplitude
events captured
people use your product
Notifications
Customer.io, Braze, Novu
profiles + messages
your audience grows
CRM & sales
Salesforce, HubSpot
seats
you hire
HR & people
Workday, BambooHR, Rippling
employees
you hire — twice over
Docs & tasks
Notion, Confluence, Jira, Linear
seats
you hire
Record, schedule, meet
Loom, Calendly, Fireflies
seats
you hire
SOMA, self-hosted
you, on your own box
nothing
never
SOMA Cloud
us, on ours
GB stored + GB moved
you genuinely store or move more
Billing metrics above are the published, structural pricing units for each product class — the unit, not a quoted price. The unit is what determines whether your bill tracks your headcount.
The problem · 03
Self-hosting the incumbents doesn't save you either.
The standard escape route is to self-host the open-source alternatives. But each one arrives with its own database, its own runtime and its own appetite — these are the vendors' own published minimums, at idle, before load.
$540–640per month in AWS on-demand compute, across roughly 18–21 containers, to run a minimal version of the stack above at idle. That's the floor under the $16,600 — the cost of dodging SaaS the conventional way.
A SOMA layer is a set of products that ship together, sharing one design system, one login, one Postgres and one audit trail. Four layers exist today in some state; the architecture doesn't cap the count — each new layer compiles against the ones below it.
one ui · one login · one schema · one audit trail
Foundation
SOMA-DevKit
■ shipped
The shared floor every layer stands on. Postgres pooling, migrations, crypto, caching, storage and telemetry wiring — and soma-ui, 160+ Leptos components that are the face of every product in the stack. Your CRM will look like your observability looks like your IAM, because they're drawn from the same kit.
soma-infrasoma-schemasoma-uisoma-auditsoma-sdks
↳Replaces the fortnight every team spends re-wiring the same pool, the same migration runner, the same AES-GCM helper. soma-schema is on crates.io today.
Developer layer
Everything an engineering team subscribes to
The tools you'd otherwise assemble from six vendors and twenty containers — as Rust binaries on one Postgres.
Every one of these is mostly identity, permissions, records, search, notifications and an audit trail — which is precisely what the rest of the stack already is. Building them is assembly, not invention. None of this is written yet, and this page says so.
CRMHRMSPRMERMTasksDocsRecordScheduleMeet notes
↳ will replaceSalesforceHubSpotWorkdayBambooHRRipplingPartnerStackJiraLinearAsanaNotionConfluenceLoomCalendlyFireflies
Seeds in the repo today: SOMA-Video-to-md already turns recordings into structured markdown — the start of the meeting-notes piece.
Operations layer
Running the actual business, not just the software
■ usable
Complete vertical platforms — staff, customer and field apps on one backend — proving the whole substrate end-to-end. Where the business layer manages the company, this layer runs its operation.
↳the first vertical; the pattern for the ones that follow
Next strata
The stack keeps accreting
Layers get added when a group of products makes sense together — media production and purpose-built small LLMs are already taking shape in the repo. The seam on the left is the rule: whatever the layer, it ships on the same UI, the same login, the same Postgres.
docker run -p 80:80 soma/ecosystemHowever many layers you run — nine services, Postgres, Redis and Caddy boot from one command (SOMA-Ecosystem).
Zoom into one product
The anatomy of soma-control — the pattern every product follows
Four services that would each be a separate vendor, as rings of one process: shared port, shared router, shared Postgres pool, dashboards compiled to WASM and embedded in the binary.
The model
We stopped counting people.
Seat pricing exists because it's easy to meter, not because a seat costs anything to serve. A user record is a few hundred bytes. So we bill the two quantities that genuinely move our own costs, and ignore everything else.
Self-hosted
$0
Apache 2.0, every layer and every library. Clone it, run it, fork it, sell what you build on it.
Unlimited users, seats, tenants, environments
No licence key, no seat audit, no phone-home
Every dashboard included, embedded in the binary
Runs on one VPS. Often on one container.
SOMA Cloud — planned
Tier+ meter
A flat tier for the capability surface and the support you want, then usage on two axes only.
Tier — picks features, regions, retention and response times. Never headcount.
Storage — per GB-month actually held, after compression and cold-tiering to Parquet.
Network — per GB egressed.
Same binaries as the open-source release. Leaving means pointing at your own Postgres.
Never on the invoice
Add your whole company on the first of the month. Add a hundred thousand end users. Turn on every layer. The bill moves only if you stored or moved more bytes.
SeatsUsersMonthly active usersEmployeesHostsContainersAgentsEventsCustom metricsProjectsEnvironmentsAPI callsAdmin seatsSSO upchargeAudit-log upcharge
SOMA Cloud is a planned track, not a live product — there are no tier boundaries or per-GB rates to quote yet. Single sign-on and the audit log are in the open-source release and will never sit behind a pricing tier.
Where this actually stands
Beta, and specific about it.
The foundation and most of the developer layer run today. SOMA-AI and SOMA-Radar are fast-moving builds. The business layer is a plan with seeds behind it. The operations layer has one real product. Anyone claiming a whole stack of this size is finished in beta is lying; the roadmap is the ledger instead, refreshed from the repos themselves.