The most significant single release since v0.22 (marketplace/modules launch). First cut where a team-sized customer can honestly buy Enterprise: log in with their identity provider, auto-provision + auto-remove users, assign roles across their team, publish modules only their team sees, stream every signed receipt to a shared vault they control.
WorkOS SSO
SAML/OIDC — Okta, Azure AD, Google Workspace, Ping. Enterprise buyer types their domain at /marketplace/sso, browser bounces through their IdP, JIT-provisions User + Membership + mints the same JWT the password flow issues.
Multi-seat + RBAC (5 roles)
viewer / operator / publisher / admin / owner. Higher role implicitly grants every lower one. Last-owner protection prevents an org from becoming ownerless via demotion or removal.
SCIM Directory Sync
WorkOS webhook handler. When the customer's IdP flips a user, we mirror it: JIT-create Membership, sync attributes, mark removed_at on delete. Group→role mapping via Organization.dir_group_role_map (admin configures at /marketplace/org/dir-role-map).
Configurable receipt vault (4 drivers)
local (filesystem path — covers external SSD, NAS mount, USB) · s3 (hand-rolled AWS SigV4, zero deps, works with AWS S3, MinIO, R2, GCS) · network_share (SMB/NFS) · custom (importlib loader for user-supplied Python drivers). Secrets never in the marketplace DB — configured as env:/file:/keyring: references.
Air-gap install kit
Self-contained tarball (railcall_airgap_v0.26.tar.gz) with every file + governance ruleset + station bundle + MANIFEST.txt sha256 + verify.sh. Move to network-isolated host, run verify.sh, then install.sh. No outbound at install OR runtime.
Session invalidation on removal + role demotion
AuthService.invalidateAllSessions bumps user.session_generation and revokes every un-revoked refresh token in one transaction. Max window from 'you're fired' to 'your JWT stops working' is 15 min — access-TTL grace.
Admin audit log
OrgAuditLog append-only table. Every admin-scoped mutation writes here — member invited/role_changed/removed, vault config changed, SCIM events, subscription activated. Owner+ view at /marketplace/org/audit with event-slug filter + keyset pagination.
Long-lived API keys (rc_ak_live_*)
Web UI at /marketplace/settings/api-keys — sha256 stored, per-key scopes, one-shot display on create. Wired into POST /listings (canonical CI/CD use case: headless module publishing).
Team-tier billing
$100/seat/mo, min 2 seats, 14-day free trial. Self-serve Stripe Checkout at /marketplace/org/billing. Real live-mode subscription pointed at real license-mint service.
GDPR Art. 20 org data export
GET /org/export dumps organization + members + invitations + org-owned listings + 500 most recent audit lines as JSON. Owner-only. Recorded in the audit log itself.
/trust/subprocessors + /status
Public per-vendor list of every third party that touches customer data (Render, WorkOS, Stripe, Resend, GitHub, Cloudflare) with data categories, jurisdictions, and 30-day new-vendor notification commitment. Live client-side probes of railcall.ai + marketplace API at /status.