The list endpoint on EnvironmentAdminController now overrides the class-level ADMIN guard with isAuthenticated(), so VIEWERs can see the environment selector. The LayoutShell merges environments from both the table and agent heartbeats, so the selector always shows configured environments even when no agents are connected. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>