Self-hosted development platform β Git, Container Registry, Kubernetes, PostgreSQL, NFS storage
The BFF sits between the React frontend and AWS API Gateway. The browser never touches AWS directly β the API key is injected server-side only. Every request passes through a layered guardrail stack before being forwarded.
slowapi Β· RATE_LIMIT=10/minute/api/<endpoint> POST routes.
Returns HTTP 429 when exceeded.
Limit is configurable via .env without code changes.
guardrails.py Β· 6 regex patternsAKIAβ¦)
aws_access_key_id / aws_secret_access_key
xoxb-)
ghp_β¦)
MAX_REQUEST_BYTES=51200 (50 KB)ALLOWED_ENDPOINTS = {triage, explain, runbook-snippet}logger.info(metadata only)conv_id[:8], endpoint,
status_code, latency_ms.
Full prompts and responses are never logged to stdout.
Only persisted (encrypted at rest) in PostgreSQL history.
_cleanup_response() Β· per-endpoint```json)
"key": "value" dict responses to readable text
{, } lines) from steps lists
\n and \" in runbook markdown
database.py Β· SQLite (dev) / PostgreSQL (prod)conv_id, endpoint,
model_id, confidence, latency_ms,
status_code. Supports project-based organization,
archiving, soft-delete, and full-text search.
Survives container restarts.
REQUEST_TIMEOUT_SECONDS=30