FastAPI Module
fluvius.fastapi builds a standard FastAPI app, installs Fluvius error contracts and health checks, and mounts authentication, domain, query, and media capabilities.
from fluvius.fastapi import (
configure_authentication,
configure_domain_manager,
configure_query_manager,
create_app,
)
app = (
create_app(pkginfo)
| configure_authentication(auth_profile_provider=ProfileProvider)
| configure_domain_manager(UserDomain)
| configure_query_manager(UserQueryManager)
)
The factory requires a metadata module/object containing at least a version and name. Configurators receive the app and return it, so ordering is explicit.
Custom routes and auth
from fastapi import Request
from fluvius.fastapi import auth_required
@app.get("/protected")
@auth_required()
async def protected(request: Request):
user = request.state.auth_context.user
return {"user": user}
Framework failures use application/problem+json. Request IDs, startup wiring validation, policy validation, readiness state, and optional custom response envelopes are handled centrally.
Route base
FLUVIUS_API_BASE defaults to /api. Framework-owned auth, domain, query, docs, and transport routes honor the configured base; custom FastAPI routes remain where the application declares them.
For MCP, compose configure_mcp_server from fluvius.mcp. For realtime services, compose the configurators from fluvius.transport.