System design
Interface, reasoning and memory stay separable
Every external dependency sits behind an environment-configured boundary, so the product runs with or without them.
Request path
Interface layer
Typed React application with the investigation workspace, alert triage, memory browser, analytics and activity log.
Service layer
Server functions expose a FastAPI-compatible investigation contract. When FASTAPI_URL is configured, reasoning is delegated to that service; otherwise a deterministic fallback keeps the workflow complete.
Reasoning layer
Groq-backed hypothesis evolution runs behind the service boundary so model credentials never reach the browser.
Memory and persistence
Alerts, evidence, investigations, hypotheses, recalls, decisions, outcomes and audit logs are stored in PostgreSQL. Retained experiences can additionally be pushed to Hindsight.
Credentials never reach the browser
Model keys, memory service keys and privileged database credentials are read only on the server at request time. The browser holds a publishable key scoped by row level security policies.