SOMA-Control

One binary. IAM + Vault + Feature Flags + Licensing.

Replaces: Auth0, HashiCorp Vault, LaunchDarkly, custom entitlement logic

Routes
3414 services
Idle RSS, measured
5.15MiB
OpenSSL in build
0pure-Rust crypto
Dashboards
4embedded WASM

Four vendors' products, as rings of one process

IAM, secrets, flags, and licensing share one port, one Axum router, and one Postgres pool. The dashboards compile to WASM and travel inside the binary. Each service has its own deep-dive page:

216 routes · WebAuthn to SCIM

envelope encryption · transit API

real-time flags · 3 SDKs · sub-ms eval

plans · meters · entitlement webhooks

Anatomy of soma-control: one process and one Postgres pool at the center; IAM, Vault, Flags, and Licensing as rings; the capability surface on the outer ring; WASM dashboards embedded ONE PORT ONE PROCESS ONE POSTGRES POOL soma-control 216 + 46 + 42 + 37 routes · one Axum router one process one pool · one port 5.15 MiB idle · measured IAM 216 routes Vault 46 routes Flags 42 routes Licensing 37 routes WebAuthn · SAML OIDC · SCIM · TOTP AES-256-GCM · AES-KW envelope encryption plans · meters coupons · webhooks segments · multi-env change requests embedded WASM dashboards — no CDN, no Node.js

The full authentication surface, out of the box

Everything below ships enabled in soma-iam — none of it is a tier, an add-on, or a partner integration.

The soma-iam surface: WebAuthn, TOTP, email OTP and passwords for humans; M2M tokens, personal access tokens, device flow for systems; SAML, OIDC and SCIM federation above; multi-tenant RBAC with deny overrides under every request FEDERATION & PROVISIONING SAML 2.0 OIDC provider · JWKS / ES256 SCIM 2.0 HUMANS SIGN IN WITH WebAuthn / Passkeys TOTP authenticator apps email OTP passwords — Argon2id SYSTEMS AUTH WITH M2M tokens personal access tokens device authorization flow sessions — ES256 JWT soma-iam 216 routes · 37 modules · 52 migrations pure-Rust crypto · no OpenSSL EVERY REQUEST PASSES multi-tenant RBAC deny overrides audit hooks One surface, every protocol — no per-connection pricing, no adapter marketplace.

The box, itemized

Same capability, two ways to get it. The right column names the structural cost of the usual route — the tier it's gated behind or the infrastructure it drags in — not a price quote.

Capabilitysoma-controlThe usual route
Identity — soma-iam
WebAuthn / Passkeysin the boxMFA add-on tier on IdP SaaS
SAML 2.0 + OIDC providerin the boxthe "SSO tax" tier
SCIM 2.0 provisioningin the boxenterprise tier
TOTP · email OTP · device flowin the boxassembled from add-ons
Multi-tenant RBAC + deny overridesin the boxcustom code on top of the IdP
Secrets — soma-vault
Envelope encryption (AES-256-GCM + AES-KW)in the boxa Vault cluster, or KMS lock-in
Transit encryption APIin the boxa Vault deployment
JSON Schema validation of secret shapein the boxconvention and hope
Feature flags — soma-flags
Real-time propagation (Redis pub/sub)in the boxseat-priced flag SaaS
Segments · multi-env · change requestsin the boxhigher seat-priced tiers
TypeScript / Python / Go SDKsin the boxincluded, but MAU-metered
Licensing — soma-licensing
Plans · usage meters · coupons · addonsin the boxa billing SaaS, or a custom build
Entitlement webhooks with deliveryin the boxcustom glue code

Honesty note — not in the box: an enterprise SSO partner ecosystem, compliance paperwork, or a support organization. Client SDKs and the Terraform provider are beta (see maturity below). The surface above is aimed at a startup running for years without switching — not at feature-count parity with any incumbent.

The control plane, priced in RAM

Self-hosting the same three concerns the conventional way, using each vendor's own documented minimums, at idle:

ConcernThe usual answerDocumented minimum
IdentityKeycloak1,250 MB/pod · min. 2 services · external DB
SecretsInfisical~16 GB across 3 services (app + PG 8 GB + Redis 4 GB)
Feature flagsGrowthBook2 GB / 1 vCPU × 3 instances + MongoDB
Licensingtypically SaaS-onlyno self-hosted option to size
All foursoma-control5.152 MiB idle, measured · one process · one Postgres

Vendor minimums are for idle/light load and grow with usage; they are sizing guidance, not benchmarks. soma-control figure measured on linux/arm64, 2026-07-31, commit de4f858 — methodology at soma.dev/footprint. Sources: keycloak.org · infisical.com/docs · growthbook.io.

Identity, head to head

The identity slice alone, against the tools people actually shortlist — the three big SaaS providers and the seven most-deployed open-source servers. Figures are each vendor's own documented minimums or sizing guidance, at idle.

ToolRuntimeDocumented minimum / modelBrings along
Paid SaaS — nothing to self-host, nothing to measure
Auth0SaaSbilled per monthly active uservendor lock-in at the login box
OktaSaaSbilled per user / monthper-feature add-on pricing
Microsoft Entra IDSaaSper user / month (P1 / P2 tiers)Microsoft ecosystem coupling
Self-hosted open source — the top 7
KeycloakJVM1,250 MB/pod · min. 2 servicesexternal database
AuthentikPython2 cores · 2 GB minimumPostgres + Redis, server + worker
FusionAuthJVM512 MB–1 GB/node · 2 GB+ with threat detectionexternal database
ZitadelGo512 MB test · 2–4 cores + ~4–6 GB advised for prodPostgres
LogtoNode512 MB min · 1 GB recommendedPostgres
SuperTokensJVM core~1 GB-class instance per vendor guidancePostgres · headless core
Ory KratosGono published minimum — small Go binaryPostgres · headless, bring your own UI
soma-iamRust5.152 MiB idle · 0.282 s startup — measuredone Postgres — and the figure includes vault, flags, and licensing

Fairness notes: Zitadel and Ory are also lean Go servers — the gap there is scope and surface, not runtime weight. Vendor figures are their own published minimums or sizing guidance for idle/light load and grow with usage. soma-control's figure is measured idle RSS (linux/arm64, 2026-07-31), not a load benchmark. A detailed load, scaling, and performance analysis is planned; every result will publish at /footprint with reproducible scripts — nothing appears in these tables before it is measured. Sources: keycloak.org · goauthentik.io · fusionauth.io · zitadel.com · docs.logto.io · supertokens.com · ory.com · Auth0/Okta/Entra pricing pages (billing unit only).

Key components

ComponentWhat it isStatus
soma-controlSingle Axum binary booting all four services on one port; WASM dashboards embedded via rust-embedshipped
soma-iam216 routes, 37 modules; WebAuthn, SAML, OIDC, SCIM 2.0, TOTP, email OTP, device flow, M2M tokens, RBACshipped
soma-vaultEnvelope encryption (AES-256-GCM, AES-KW), transit encryption, JSON Schema validationshipped
soma-flagsRedis pub/sub propagation, multi-environment, segments, change-request workflow; TypeScript/Python/Go SDKsshipped
soma-licensingPlans, usage meters, coupons, addons, webhook deliveryshipped
Dashboards4 Leptos WASM dashboards (IAM 30 pg / vault 15 / flags 10 / licensing 11); embedded in the binaryshipped
Client SDKsTypeScript IAM+vault, Python vault+flags, Go vault+flagsusable
Terraform provider + GitHub ActionDeclare SOMA resources as IaC; inject vault secrets into CIusable
Deployment artifactsHelm chart for vault, AWS Dockerfile + scripts, Docker Composeusable

Why it matters

  • Four enterprise services in one Rust binary — no Docker Compose mesh for the control plane
  • WebAuthn/Passkeys, SAML, OIDC, SCIM 2.0, and TOTP all ship in IAM out of the box
  • Dashboards compile to WebAssembly, embedded in the binary — no CDN, no Node.js runtime
  • All crypto is pure Rust, OpenSSL-free: AES-256-GCM, ECDSA P-256, Argon2, HKDF, AES-KW
  • #![forbid(unsafe_code)] on every server crate

Maturity

Git activity

80 commits over 14 days (2026-07-16 to 2026-07-30), ~6 commits/day. DevKit submodule: 19 commits over the same window.

Get started →Source on GitHub →