What is a unit
A unit is a type of service participating in SeeraOS. It can handle part of a business domain, such as notes, or integrate a system with Discord. It declares its capabilities, configuration requirements and how it participates in the platform.
A unit instance is a specific deployment of that service for a tenant. It has its own identity, configuration and reported state. You write a unit; an instance joins an environment.
Why separate these concepts
An application that needs notifications does not have to implement the Discord API. It calls integration operations and publishes events using an agreed contract. The integration unit handles communication with the provider.
The capability description separates application logic from a specific service implementation. This does not mean every unit works with every platform version. The contract, SDK and environment must be compatible.
Four distinct concepts
| Concept | What it describes | Example |
|---|---|---|
| Unit | A service type and its capabilities | Notes or the Discord integration. |
| Unit instance | One specific deployment | A Notes instance with its own identity and configuration. |
| Manifest | Unit requirements and declarations | Instance limits per tenant, tenancy model and configuration fields. |
| Exposition | A versioned capability surface | note.v1 or discord-integration.v1. |
An exposition document is a release artifact describing objects, operations and events in a contract. The .NET SDK checks the running code against the supplied document. Do not replace this artifact with a description freely reconstructed from runtime code.
Unit and plugin
In the integration examples, plugin means an extension implemented as a unit. Do not assume it is loaded directly into an application process or installed in a browser. The Discord example runs as a separate TypeScript service and uses an SDK.
What the SDK handles
The SDK handles platform participation: enrollment, instance identity, configuration, supported transports, expositions and state reporting. The author implements operation logic, domain persistence and external API integration.
The SDK does not choose your database or automatically provide application screens. Notes stores data in process memory. This is an example, rather than production persistence.
Tenancy declarations and product scope
A manifest can declare a tenancy model and instance limits. Notes declares SingleTenant and one instance per tenant. That declaration does not establish that all SeeraOS applications are ready for full multi-tenancy.
Next: unit lifecycle or the Notes example.