Core platform
Shared Services
Cross-cutting capabilities — identity, audit, search, notifications, billing, and file storage — are provided once as a shared mesh. Applications consume them through the SDK instead of rebuilding them per product.
ForDevelopersEnterprise architectsImplementation teams
The service mesh
Shared services run on a common plane and are available to every workspace, studio, and partner application. Consuming a service inherits its governance automatically — an audit entry is written the same way regardless of which app triggered it.
Shared services mesh
Service catalog
| Service | Responsibility | Consumed via |
|---|---|---|
| Identity | Authentication, sessions, tenant scoping | services.identity |
| Audit | Immutable action ledger and lineage | services.audit |
| Search | Cross-entity retrieval and ranking | services.search |
| Notifications | Email, webhook, and in-app delivery | services.notify |
| Billing | Metering, quotas, and usage records | services.billing |
| Files | Per-tenant object storage with signed access | services.files |
Consuming a service
Services are injected through the SDK and are already scoped to the caller's tenant and permissions. There is no separate configuration to keep them inside the sovereignty boundary.
services.ts
// Shared services are injected, not re-implemented per app.
import { services } from "@iios/sdk"
await services.audit.record({ action: "report.export", subject: reportId })
await services.notify.send({ channel: "ops", template: "threshold_breach", data })
const results = await services.search.query({ q: "degraded pumps", scope })Reuse is the default
Before adding infrastructure to an application, check the service catalog. Reusing a shared service means you inherit its security, auditing, and residency guarantees for free.
