Hosted pilot
Already decided? The shortest path from nothing to a running deployment, with the gaps stated before you commit rather than after. Hosted pilot onboarding
cafaye exists so you never start a SaaS from scratch again: authentication,
tenancy, billing, notifications, media, and AI routing — production-grade,
self-hostable, and connected by typed contracts. It is an organization, not a
single repository: every service below lives in its own repo, versioned and
installable on its own. You can take the one you need rather than adopting the
whole platform, run the whole stack on your own infrastructure, and keep it
alive with the runbooks on this site. The code is free — the framework under
MIT, the services under a Business Source Licence, box, pantry and the
artifact distribution proprietary;
what is sold is managed hosting, upgrades, and support, and the
licensing page states the split and measures it against every
repository.
Hosted pilot
Already decided? The shortest path from nothing to a running deployment, with the gaps stated before you commit rather than after. Hosted pilot onboarding
Start here
Install the CLI, run a service against local Postgres, and see what exists today — with every unbuilt command marked as such. Getting started
Pricing, licence and security
What a unit costs, what the licence split permits you to do, and how your credentials are handled — with no invented prices and no softened gaps. Pricing · Licensing · Security and trust
Architecture
What each service owns, how they talk, and why the boundaries are where they are. Architecture
Upgrading
Running a deployment and moving to the current contracts? What breaks, and the order to fix it in. Upgrading
Runbooks
Provision a tenant, restore a database, rotate a secret, handle an outage, chase a webhook — and run any repository’s real gate. Runbooks
Troubleshooting
Keyed by the symptom you can see, not the component you suspect. Troubleshooting
| Service | What it does | Language |
|---|---|---|
identity |
Users, sessions, accounts & tenancy, OIDC provider | Go |
billing |
Plans, subscriptions, prepaid credits, usage metering, processor webhooks in and out | Ruby |
courier |
Transactional email, push, and every outbound webhook — signed and retried | Elixir |
darkroom |
Signed media uploads, variants, S3 and Cloudflare R2 | Rust |
muse |
LLM routing, credentials vault, token metering | Python |
gateway |
Public gateway / BFF — routing, JWT verification, rate limits | Go |
parlor |
The app shell: production-ready frontend template + admin | Next.js |
| Repo | What it does | Language |
|---|---|---|
cafe |
The CLI: cafe init · new · dev · deploy · gen · contract |
Go |
core |
The substrate: service manifests, OpenAPI & event specs, telemetry specs, generator engine | — |
pantry |
The registry: what a service is and how to reach it — closed source, public endpoint | Go |
cafaye-rb |
The shared Ruby gem: JWKS token verification, the transactional outbox, a Rails railtie | Ruby |
kit |
Shared CI workflows, lint configs, Docker bases, OTel templates for six languages | — |
docs |
This site | — |
Because services have different jobs. identity holds the keys to everything —
it wants Go’s discipline and static binary. courier fans out to thousands of
providers concurrently — that’s the BEAM. darkroom pushes pixels — no GC
pauses wanted. billing is pure domain modeling — Ruby’s home turf. muse
talks to models — Python’s ecosystem is unmatched. And parlor is the web.
Polyglot by design, connected by typed contracts, never by shared code.