Hierarchy
Every API call and UI screen is scoped to an org and usually a project. Fleet and device operations also require a fleet ID (or fleet name resolved by CLI tools).
Authentication
Golain uses Zitadel (OIDC) for human users:- Web console (
pw) — authorization code flow; access token stored in the browser; API requests sendAuthorization: Bearer …andORG-ID. - Platform CLI (
platform-tui) — OAuth device authorization grant (RFC 8628); no client secret; token stored in~/.config/platform-tui/profiles/. - Golain CLI — OAuth browser flow against production endpoints (
api.ilyama.golain.io, Zitadel). - Devices — MQTT mTLS or username/password plus optional JITR bootstrap certificates; not user OIDC tokens.
Device identity and MQTT
Each MQTT device receives:- A stable device ID (UUID)
- Broker endpoint (host, port, TLS)
- Client ID and credentials or client certificate
- Topic filters — allowed publish/subscribe patterns scoped to the device
connection: block of a client YAML profile.
Tags and targeting
Tags are project-scoped labels attached to devices. Use them to:- Filter device lists in the console and CLI
- Target OTA deployments (
target-tags=prod,eu) - Drive automation rules
OTA model
Manage releases and deployments from the console or platform-tui.
Integrations
External systems (LoRaWAN NS, MDM, webhooks, gateways) connect through integration accounts and bindings at the project level. The console Connections area andplatform-tui integrations commands list configured providers.
Edge data sync (advanced)
Devices running Omega with the SQLite replication module can mirror local database tables to the cloud over MQTT/QUIC. The platform stages rows, runs schema review, and materializes data into project query surfaces. See Edge data sync.Device RPC
Devices with thedevice-rpc Omega module expose protobuf/gRPC services tunneled over MQTT. Cloud callers invoke unary methods via the RPC host https://rpc.ilyama.golain.io (sync), server-streaming methods via the /streams/ SSE path, or enqueue unary calls for durable delivery when devices are offline — see Queued invoke. Queued delivery is at-least-once; device handlers must implement idempotency. See Device RPC. This is separate from legacy shell RPC (exec:<command> over control topics).
Permissions
Access is graph-based (ReBAC): grants tie users and groups to orgs, projects, fleets, and devices. The console hides actions you cannot perform; API returns403 when a check fails.
Common roles at org level: owner, admin, member, viewer. Finer grants exist at project and fleet scope.
URLs and environments
CLI tools let you override API and auth endpoints per profile — see Platform CLI login.