Skip to content
Ichnois
docs/workspaces-fleet

Multi-Tenant Workspaces & Fleet

Isolate user projects with automated personal workspace provisioning, separate SQLite databases, and decoupled settings between platform fleets and microservices.

Decoupled Architecture: Platform Fleet settings govern global rules (severity thresholds, default automation modes), while Microservice Project settings govern service-specific scopes (repository mapping, path prefix stripping, custom Slack channels).

Automatic Workspace Auto-Provisioning

When a user authenticates via Supabase Auth or GitHub OAuth, Ichnois automatically provisions a private personal workspace bound to their Supabase user ID alongside a default microservice project.

  • Data Isolation: User workspaces are isolated at the database query level, preventing accidental cross-tenant incident leakage.
  • In-Memory Metrics Caching: Workspace operational metrics (active runs, incident counts, gate states) are cached with a 5-minute TTL to ensure fast dashboard load times.
Workspace & Project Auto-Provisioning
1# Multi-tenant workspace auto-provisioning
2user_ws = ensure_user_workspace(user_id=current_user["user_id"], email=current_user["email"])
3# Returns: WorkspaceRecord(workspace_id="ws_user123", name="Personal Workspace", plan="free")
4
5# Project registration & DSN generation
6project = create_project(
7 name="payments-service",
8 environment="production",
9 owner_id=user_ws.owner_id,
10 workspace_id=user_ws.workspace_id,
11)
12# DSN: https://proj_c76fccfd95bd@ichnoisapi.onrender.com/proj_c76fccfd95bd

Microservice Fleet Hub

Navigate to Projects in the developer console to view your microservice fleet. Each service card provides:

  • Live Gate 1 and Gate 2 triage status badges
  • Dedicated Sentry-compatible DSN snippet with one-click copy
  • Dynamic key rotation button with immediate edge cache invalidation
  • Direct link to the service-specific incident stream and blame logs

Telemetry Key Rotation & Invalidation

If a public telemetry key is exposed, click Rotate Key in the project card or call the API. Server B generates a new pk_live_ key and dispatches an instant invalidation payload to Server A Edge Gateway (/internal/v1/cache/keys/invalidate), revoking the compromised key within milliseconds.