Side project · in progress — this page is a work log as it comes together.
Injection Range
LLM prompt-injection playground
An interactive lab where visitors try to jailbreak a scoped LLM — and watch the defenses (scoping, injection filters, rate limits) hold. The same defense-in-depth model that guards this site's own agent, made playable.
- Next.js
- TypeScript
- Self-hosted LLM
- Guardrails
Context
Injection Range is an interactive lab where anyone can try to jailbreak a scoped LLM — and watch the defenses hold. It makes the exact defense-in-depth model that guards this site's own "ask my work" agent something you can play with.
The problem
Prompt injection is one of the least-understood risks in shipping LLM features. People read about it abstractly but never *see* an attack meet a defense, so they either over-fear it or under-build against it.
Approach
A Next.js + TypeScript front end over a self-hosted LLM wrapped in layered guardrails: strict topic scoping, injection/pre-filtering, and rate limiting. Visitors send attacks; the app shows which layer catches each one. It deliberately mirrors this portfolio's agent architecture, so the demo *is* documentation of how the real thing is defended.
Securing it
This project is the security story — its entire purpose is to demonstrate guardrails working. The same principles apply to itself: the LLM is self-hosted and internal, input is treated as untrusted data, attacks are contained, and rate limits prevent abuse of the demo. The layers are shown explicitly; that transparency is the point.
What shipped
In active development — the guardrail architecture it demonstrates already runs live on this site's own assistant.
Links