The multi-tenant SaaS core
your product starts from
Authentication, two-axis permissions, scoped API keys, signed webhooks and audit logs — the platform plumbing every SaaS rebuilds, ready on day one.
Acme Platform
acme-platform
Members
- ARAva ReyesOwner
- JMJon MeyerAdmin
- LKLena KochMember
Permissions enforced
Every action checked server-side
The core
Everything a SaaS needs before its first feature
Six product-neutral surfaces, each hardened, tested and documented — so you build your domain, not your plumbing.
Access control
Permission is the currency. Roles are just bundles.
Roles are fixed, named bundles of permissions on two independent axes. Add or change a bundle and no endpoint code moves.
- Two axes, never mixed — platform System roles and per-project roles.
- Endpoints check permission strings; role names live in exactly one table.
- A single audited override key is the only cross-tenant bypass.
Project role → permissions
| Viewer | Member | Admin | Owner | |
|---|---|---|---|---|
| Read project & members | ||||
| Write resources | ||||
| Manage members & settings | ||||
| Delete & transfer |
Integrate
A clean REST API, the same everywhere
One envelope, stable error codes, cursor-free page/take pagination and an OpenAPI spec that generates your types. Authenticate with a session or a scoped API key.
"opacity-40"># List the projects the API key is scoped to
curl https:"opacity-40">//api.localmind.app/api/v1/projects \
-H "Authorization: Bearer $LOCALMIND_API_KEY"
"opacity-40"># Create a webhook endpoint (project-scoped)
curl -X POST \
https:"opacity-40">//api.localmind.app/api/v1/projects/$PROJECT_ID/webhook-endpoints \
-H "Authorization: Bearer $LOCALMIND_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{ "url": "https:">//example.com/hooks", "subscribedEvents": ["member.added"] }'Why this core
Built on principles, not shortcuts
Secure by construction
Tenant isolation is enforced at the repository layer, cross-tenant reads return 404, and sensitive actions demand step-up re-verification.
Product-neutral
Zero domain features — your product hangs off a reserved resources:* surface, so the core stays a reusable foundation.
Contract-driven
The OpenAPI spec is the source of truth; a renamed field becomes a frontend compile error before it ever ships.
FAQ
A foundation. LocalMind is a clean, multi-tenant SaaS core — authentication, RBAC, API keys, webhooks and audit logging — with zero domain features. You build your product on top of the reserved resources:* surface.
Two independent axes. A platform System role governs the operator/admin surface; a per-project role governs a single project. Authorization always checks a permission string — role names never appear at a call site.
Passwordless: an email one-time code, a passkey, or Google / GitHub social login, with optional TOTP two-factor. Sensitive actions require a fresh step-up verification.
A transactional outbox writes the event in the same database transaction as the state change, so state-changed always implies event-emitted. Deliveries are HMAC-signed, retried with exponential backoff, and replayable from the dashboard.
Start on a core you can trust
Sign in and create your first project — the auth, permissions and webhooks are already wired.