Hackathon Dashboard v0.1.8

About

What this is

A small web dashboard built for the hackathon. It runs on one laptop, opens on a phone on the same network, posts a summary card to a Teams channel and exports a self-contained snapshot for SharePoint.

How data is handled

  • All records are generated with a fixed seed. Nothing comes from a real system.
  • The Insight panel uses company AI only: a Power Automate flow with AI Builder, Bedrock in the company AWS account, the company GPU box, or the offline demo. Text is masked first (emails, phone numbers, long numbers). If the mask fails, nothing is sent.
  • Every insight call is logged with lengths and timing only, never with the text.
  • Secrets (the Teams webhook url, the flow url) live in environment variables or in a store sealed with Windows DPAPI, and are never shown or logged.
  • Everything kept on disk (records, audit log, last card, secrets) is encrypted at rest with DPAPI and decrypted in memory only when a function needs it. The exported snapshot is the one exception: it exists to be shared.

Configuration

VariableSetValuePurpose
HACK_TEAMS_WEBHOOK_URL default POST url of the Teams Workflows flow 'Send webhook alerts to a channel'.
HACK_PUBLIC_URL yes https://hack.netsecops.version1.com URL the 'Open dashboard' button on the Teams card points to.
HACK_AI_PROVIDER yes bedrock AI provider: demo, power-automate, bedrock, local, or auto (the ROUTE table in ai_lane.py).
HACK_PA_INSIGHT_URL default POST url of the Power Automate flow (HTTP trigger) that returns the insight text.
HACK_API_KEY default Shared key for POST /api/ask (header X-Api-Key), used by the Teams flow.
HACK_AWS_PROFILE default bedrock-lab AWS profile with Bedrock access only.
HACK_AWS_REGION default eu-west-1 Bedrock region.
HACK_BEDROCK_MODEL default Optional: one Bedrock model id that overrides the tier table.
HACK_LOCAL_LLM_URL default Base url of the company GPU box (vLLM, OpenAI-compatible).
HACK_LOCAL_LLM_TOKEN default Bearer token of the GPU box endpoint.
HACK_LOCAL_LLM_MODEL default driver Model name served by the GPU box.
HACK_BIND yes 127.0.0.1 Address the web server listens on. 0.0.0.0 to reach it from a phone.
HACK_PORT yes 8600 Port of the web server.
HACK_DEMO_SEED default 42 Seed of the demo dataset. Same seed, same data.