Sidebar & navigation
Left sidebar
Top to bottom, with the conditions for visibility:
| Item | Visible when |
|---|---|
| Dashboard | Always (the landing page) |
| Organizations | Multi-tenancy installs only (caps.tenancy === "multi") |
| Edge Instances | Always (org-scoped) |
| Registries | Always |
| Marketplace | Always |
| Applications | Always |
| Alarms | Always |
| Audit Logs | When your role has audit-logs:read |
| Settings | Always (your own profile) |
| Admin | Super-admins only |
Org-scoped items grey out when no organization is selected. Pick one from the org selector at the top.
Order of visibility checks for each item
- Super-admin only? → hide if you're not super-admin
- License-cap gated? (e.g. Public Edges) → hide if the cap is 0
- Org-scoped? → grey out (disabled) if no org selected, visible but unclickable
- Otherwise → show
Top bar
| Element | What it does |
|---|---|
| Logo | Returns you to /dashboard |
| Org selector | Picks the active organization. The choice is remembered between sessions. |
| Language toggle | EN ↔ TR. Affects every label including this docs page |
| Theme toggle | Light / dark / system |
| Notifications bell | Live operations + firing alarms badge |
| User menu (avatar) | Settings · Logout |
Admin section nesting
When you're a super-admin and click Admin, the sidebar expands to show:
- Organizations — all orgs system-wide
- Users — every user
- Edge Instances — public edges (when
MaxPublicEdges > 0) - Registries — global registries (when `MaxPublicRegistries
0`)
- Marketplace — global packages (when
MaxPublicMarketplacePackages > 0) - Categories — the taxonomy editor
- SSH Keys — the global SSH key catalog (Provisioner)
- License — the licensing dashboard
- Audit Logs — cross-org audit view
- Settings — system-wide settings
Each of these is gated independently — super-admin alone isn't enough; the corresponding license cap must also be > 0 for the public-resource pages.
License-required state
If no license is loaded (or the loaded one is invalid), every sidebar item is hidden and you're sent to the License Required landing page. The only paths that work in this state:
/login,/register— auth surface/admin/license— upload the JWT/api/capabilities,/healthz,/readyz— backend probes
Grace state
If the active license is past its exp but inside the grace
window, the dashboard renders normally with a yellow banner at
the top: "License expires in N days; renew before grace ends".
Mutating actions (install, alarm save, etc.) start failing once
you're in grace; reads still work. See
Explanation: license states.