
Roost
Securing the FinchLabs Platform
Shared identity, sessions, registered application roles, access policy, and administration.
Roost is the shared FinchLabs identity and access layer. Applications keep ownership of their own features and data while relying on a common sign-in, session, and authorization foundation.
Roost connects the public FinchLabs entry point to shared identity, the authenticated dashboard, and each user's authorized applications.
Public entry at finchlabs.com. An unauthenticated visitor reaches the sign-in experience.
Authenticates the user, establishes session context, and resolves application access.
Canonical landing experience for a signed-in user, showing registered, authorized apps.
Each protected app validates identity and permissions while managing its own data.
The current platform contains several independent applications and services. Roost provides shared identity and application access for the protected applications below. Wingman is intentionally shown because it is part of the FinchLabs ecosystem, but it is still public and has not yet moved under Roost-backed access control.

Securing the FinchLabs Platform
Shared identity, sessions, registered application roles, access policy, and administration.

Progress Takes Flight
Fitness and workout application using Roost identity and normal application roles.

Ideas in Flight
MySQL-backed boards and cards with Roost identity mapped server-side to authorized user spaces.

Tracking FinchLabs Development
Private, read-only development history protected by Roost application authorization.

Application Proving Ground
Safe proving ground for uncertain shared integration behavior before changes reach higher-value applications.

Flying alongside FlightPath
Public FinchLabs API and integration client. It is part of the ecosystem, but Roost enforcement is still pending.
Centralizing identity does not mean centralizing application data. Roost deliberately stays narrow so the security model remains understandable and each product can evolve independently.
| Responsibility | Roost owns | Applications own |
|---|---|---|
| Identity and session | User account, authentication and session context | Trust server-validated identity; do not derive identity from arbitrary query parameters |
| Access | Registered application membership and effective application role | Feature- and data-level checks appropriate to the application |
| Navigation | Authenticated dashboard, authorized app catalog and registered application home URLs | Internal screens, workflows and in-application navigation |
| Domain data | Identity/authorization metadata | Workout history, Kumo boards/cards, LogBook entries and other business content |
| Public experiences | Front Door authentication entry points | Public pages and clients, such as Wingman today, unless explicitly integrated |
Roost v0.5.1 preserves the Verified Access experience: successful email verification enables the account without a separate manual administrator approval step.
A new user creates a Roost account with the required credentials.
The user completes the email-verification step.
Verified registration activates the account; manual admin approval is not required.
Roost evaluates registered application access and role. Verification alone does not grant every app.
Roost v0.5.1 established a clear separation between public sign-in, the authenticated dashboard and individual application destinations.
These are the design and verification principles for Roost-backed applications. They are not a claim that every possible security enhancement is already deployed across every app.
Server-side authorization - Use the authenticated Roost user and effective application role, never a client-supplied user ID as authority.
Least privilege - Only authorized applications and functions should be available. A valid account alone is not a blanket grant.
Keep domain data isolated - Roost owns identity and access. Apps retain their own persistence and enforce data ownership.
Protect session operations - Review secure-cookie attributes, CSRF protection, session expiration and login/logout behavior during implementation and release validation.
Preserve production state - Avoid replacing deployed users, application-role mappings, configuration or app-owned data without an explicit, backed-up migration.
Separate confirmed production capabilities from proposed, deferred or pending integration work.