Concepts
Modular Gateway
The platform is an API modular monolith: one Gateway process hosts all vertical services. Each service owns its routes and usually its own Postgres database, but they share one host, CORS stack, in-process events, and Identity.
Your app / SDK → Gateway (:5600) → Service module
Console Nuxt → Console API (:5501) → Gateway (JWT)
Documented public APIs are on the Gateway. The Console BFF is for the first-party Console UI.
Projects and environments
- A project is the top-level tenant container (billing, API keys, ownership).
- An environment (for example Development / Production) isolates service config, providers, and data within a project.
- Most customer APIs require both ids in the path:
/{service}/projects/{projectId}/environments/{environmentId}/...
Services catalog
Projects expose a catalog of enableable services (GET /projects/catalog). Per environment you enable services and attach provider settings (…/services, …/providers).
Providers
Services such as AI, Email, STT, TTS, Billing, and Storage can route work to configured upstream providers. Credentials and options live on the environment provider settings — not in client apps.
Some providers can optionally use a Tunneling public URL as the base address for local/self-hosted backends.
API keys
API keys belong to a project. Create, list, and revoke them via Projects APIs or the Console. See Authentication.
Base URL
Configure SDKs with the Gateway origin, for example:
http://localhost:5600
Production deployments use your Gateway public URL. Console NUXT_PUBLIC_GATEWAY_BASE should match the same origin your apps use for OIDC and API calls.
Health
Each service exposes GET /{service}/health (Identity uses /auth/health). Gateway root also serves GET /health.