Open source · OpenResty · Lua · PostgreSQL

One API for sign-in, tenants and business modules

OpsAPI is a self-hosted, multi-tenant API platform. It signs your users in once for every app, keeps each customer's data in its own workspace, and switches on the business modules a product needs, from CRM to UK tax filing.

  • Lua in Nginx workers
  • 20 business modules
  • 16 presets
  • Helm chart
  • TypeScript SDK
# bring up API, dashboard, Postgres and friends
$ ./start.sh -e local -n -j all

# is it up?
$ curl -s localhost:4010/health
{ "status": "healthy", … }

# browse every endpoint
$ open localhost:4010/swagger

How it fits

Every client, one API, only the modules you need

Apps call one OpsAPI, which loads the modules a deployment needs and stores everything in PostgreSQLDashboardYour appsMobile, scriptsOpsAPIsign-in · workspacesroles · webhookspluginsPROJECT_CODEcrm · invoicingaccounting · taxecommerce · cmshospital · …only these loadPostgres
Lua runs inside OpenResty's Nginx workers, so a request never hops to a separate app server. The deployment's preset decides which modules exist.
See the architecture

Live demo

Click around a real deployment

Sign in to the full admin dashboard, with every app and sample data, using a read-only demo login or SAML single sign-on, then log in to five apps in Java, PHP, Python, Rust and Go that share one OpsAPI sign-in.

6
front ends on one sign-in
5
languages: Java, PHP, Python, Rust, Go
1
call to check a token: /auth/me

Technotes

For developers, DevOps and SRE

Technote · 29 October 2026

SAML single sign-on per workspace

Each workspace connects its own SAML 2.0 identity provider. How the sign-in round trip works, what OpsAPI checks in every response, and why an IdP can only vouch for its own workspace.

securityssosamlidentity
Read →
Technote · 28 October 2026

Keeping admin dashboards off the internet: VPN and zero-trust access

Customer apps are public; the dashboards that run the platform shouldn’t be. How to put OpsAPI admin, the edge admin, the vault UI, Grafana and the Kubernetes API behind a VPN or ZTNA broker, with OpsAPI sign-in and roles still on top.

zero trustsecurityvpnsre
Read →
Technote · 28 October 2026

Webhooks: sending workspace events to your own systems

How OpsAPI turns business changes into signed HTTP deliveries, how retries and ordering work, how to verify a request, and how the CMS “website update” webhook refreshes a static site.

webhookseventsintegrationscms
Read →
Technote · 28 October 2026

Single sign-on for any app: the OpsAPI sign-in flow

How a Java app and a PHP app share one sign-in through OpsAPI: the hosted sign-in page, the nonce, the token hand-back and the one call that proves who the user is.

ssoauthsecurityjava
Read →
Technote · 28 October 2026

One request through OpsAPI: from nginx worker to PostgreSQL

What happens between a request arriving and the JSON going back: the global before_filter, the public allow-list, JWT and API-key checks, feature-gated routes, the middleware chain, the routes → queries → models layering and the two response envelopes.

architectureluaopenrestylapis
Read →
Technote · 28 October 2026

Building a safe public demo login

Publishing a password for a real admin dashboard without leaking anyone's data or letting visitors break it: a separate workspace, a read-only role and a reset job.

securityrbacdemoprivacy
Read →

All technotes →

Read the code

OpsAPI is open source. Run it from Docker Hub, or clone it and bring the whole stack up with one script.