-
-
Gemini-generated security case file with evidence, detectors, root cause, and remediation workflow.
-
Live Firestore dashboard showing AI security cases generated from Phoenix traces.
-
Human-gated prompt patch review with before/after replay against the original attack.
-
Deliberately vulnerable demo app showing prompt injection triggering an unsafe tool call.
Inspiration
AI apps are becoming tool-using systems, but most security reviews still happen after the fact with scattered logs, screenshots, and guesswork. I wanted to build a workflow that treats AI observability traces as forensic evidence and turns prompt injection or RAG injection events into structured, reviewable security cases.
What it does
Evidence Freezer captures attacks against a deliberately vulnerable AI app, stores the runtime traces in Arize Phoenix, and processes them through a private watcher service. The watcher reads Phoenix trace evidence, runs detector pre-screening, sends normalized evidence to Gemini 2.5 Pro on Vertex AI Agent Engine, and stores the resulting case file in Firestore.
The dashboard lets reviewers inspect the incident type, severity, evidence pair, timeline, detector output, root cause, and proposed prompt patch. It also supports patch replay so a proposed fix can be tested against the original attack prompt.
How we built it
The stack runs on Google Cloud. The target app, dashboard, watcher, and Phoenix adapter run on Cloud Run. Phoenix stores OpenInference-style traces from the vulnerable app. The watcher uses a Phoenix MCP-compatible adapter to pull trace evidence, then calls Gemini 2.5 Pro through Vertex AI Agent Engine. Firestore stores case files and replay results.
The frontend is built with Next.js and TypeScript. The services are containerized with Docker, deployed to Cloud Run, and validated with GitHub Actions, unit tests, build checks, and GCP smoke tests.
Challenges we ran into
The hardest part was making the demo real without making it unsafe. The target app is intentionally vulnerable, so the public surface had to stay separate from private processing services. Cloud Run IAM, scheduler-triggered polling, Firestore access, Phoenix auth, and Agent Engine invocation all had to work together.
Another challenge was making Gemini output strict structured case files while still handling messy trace evidence. We added schema validation, dedupe, detector pre-screening, and replay checks to keep the workflow reliable.
Accomplishments that we're proud of
Evidence Freezer demonstrates an end-to-end AI security workflow: attack, trace capture, evidence extraction, Gemini analysis, case-file generation, Firestore persistence, and remediation review.
I am especially proud that the dashboard is not just a static mockup. It reads live Firestore case documents generated from Phoenix traces and Gemini analysis.
What we learned
AI observability data is valuable security evidence, but it needs structure. Phoenix traces can show what happened, while Gemini can help classify and summarize why it matters. The key is keeping trace content as evidence, not trusted instructions.
We also learned that private service boundaries matter. The vulnerable target app should not directly control Gemini analysis or internal processing. The watcher acts as the controlled bridge.
What's next for Evidence Freezer
Next steps are integrating the official Arize Phoenix MCP server directly, adding event-driven trace processing for near-instant case creation, improving RAG-injection coverage, and expanding patch replay into a fuller remediation workflow.
Built With
- arize-phoenix
- docker
- gemini-2.5-pro
- github-actions
- google-cloud-firestore
- google-cloud-run
- google-cloud-scheduler
- mcp-compatible-trace-adapter
- next.js
- node.js
- openinference
- phoenix-client
- typescript
- vertex-ai-agent-engine
Log in or sign up for Devpost to join the conversation.