Docs

How Sovaria works

The path a request takes — gateway, identity, policies, the service and your database — and what each Sovaria service (Axis, Guard, Atlas, Vault, Forge, Pulse, Echo, Chrono, Ledger, Nexus…) is responsible for.

Updated Oct 17, 2026

Sovaria is a set of services behind one gateway. Your app talks only to the gateway, at your project URL; the gateway works out which project and who is calling, applies limits, and hands the request to the service that owns it. Each service checks your access policies before touching your data.

identityroutemay they?queryYour appSDK, REST,WebSocketEdgeTLS ·firewall ·flood limitsGatewayproject fromthe URL ·origin ·Axiswho iscalling(session orServiceAtlas ·Vault ·Forge ·Guardyour accesspoliciesYour databaserow-levelsecurity

What happens to one request

  1. Edge and gateway checks

    TLS ends at the edge. The gateway screens the request for injection and smuggling patterns, applies per-IP flood limits, adds security headers and works out the project from the host name (<ref>.sovarias.in or your custom domain).

  2. Who is calling

    A session token or API key is verified by Axis and turned into a verified identity (user, roles, organization, project, environment). Anything the client claims about itself is ignored.

  3. Limits

    Origin rules, rate limits and plan limits are applied. Over a limit, the request stops here with 403 or 429 and a reason.

  4. Routing

    The request goes to the service that owns the path. Where a service runs several instances, requests are spread with consistent hashing, and a circuit breaker stops sending to an instance that keeps failing.

  5. Access policies

    The service asks Guard whether this caller may do this action on this resource (How access is decided).

  6. Your data

    Allowed queries run in your project's database with the caller set for row-level security; the result goes back the same way.

  7. Recorded

    Usage is counted for billing (Ledger), the request is logged and traced (Echo), and changes to schema, policies and functions are recorded (Chrono).

Every response carries an X-Request-ID; errors also carry a trace_id. Search either in Logs & Audit to see the request's path through these steps.

The services

ServiceResponsible for
GatewayThe single entry point: TLS, project lookup, request screening, CORS and origins, rate and plan limits, routing, circuit breaking.
AxisIdentity: sign-up and sign-in, sessions and tokens, MFA and passkeys, organizations, members and roles, API keys, project settings, mobile apps and push.
GuardAccess policies: compiling and evaluating rules, policy versions, the audit chain.
Atlas-RelSQL: queries, the REST table API, transactions, schema changes, vectors in Postgres.
Atlas-DocThe document store: collections, queries, transactions and live listeners.
NexusProject databases: creating them, compute sizes, pooling, idle pause, backups.
pg-workerRuns project databases on worker hosts on Nexus's behalf.
VaultStorage: buckets, uploads and downloads, signed links, the S3-compatible API.
Forge and forge-runnerFunctions: deploys, versions, invocations, triggers, schedules and workflows; the runner executes your code in an isolated sandbox.
EgressThe outbound proxy functions use: only the hosts you allow are reachable.
PulseRealtime: WebSocket channels, presence, message replay and end-to-end encrypted channels.
EchoLogs, traces and simulation: request and function logs, log drains, Simulation runs.
ChronoVersion history: commits, timelines, snapshots and restores of schema, policies and functions.
LedgerPlans, entitlements, usage metering, invoices and payments.
QuorumCoordination between services.
SovariqThe AI agent that can explain and operate your project with your permissions.

Security boundaries

  • Projects are isolated: each has its own database role and data; keys and sessions work only for their own project.
  • Services trust only identities the gateway verified, never what a client sends.
  • Secrets (function secrets, OAuth client secrets, SMTP passwords, push keys) are encrypted at rest and never returned after you save them.
  • Functions run sandboxed, reach the internet only through the egress proxy and only the hosts you list.
  • Values in queries are bound as parameters by the database, never spliced into SQL.

When something fails

SituationYou seeWhat to do
A service instance is unhealthyRequests are routed to healthy instances; a few may get 502/503.Retry with backoff (the SDKs do).
Your database is starting or paused503 PROJECT_MAINTENANCERetry shortly; the first request wakes a paused database.
Another change to the same thing is running503 RESOURCE_BUSY with Retry-AfterRetry after the given seconds.
A limit is reached429 or 403 PLAN_*Back off, or raise the limit (Plan limits).

More in Reliability.

Something unclear or missing on this page?Tell us