Security Research Manager at CyCraft Technology, based in Taiwan. I maintain awesome-web-security — a curated web-security learning list, 13.6k★ / 1,800+ forks — and lately I've been building infrastructure for LLM agents that have to get security judgment right, not just look plausible.
Five agents, each pointed at a real problem instead of a benchmark. Three of them are things you can use today, and one of those needs no install at all:
diff-sentry — catch a malicious pull request before you
merge it. A GitHub Action that reads a change the way an attacker hopes you won't: pull_request_target
that checks out the PR head, base64 that decodes to a shell payload, secrets reaching a network sink,
payloads shoved past the diff viewport by a whitespace run. Fifteen lines of YAML, and no API key, no
model and no network — so it runs on fork pull requests under the read-only token they already get.
- uses: qazbnm456/diff-sentry@v0.4.0ctx-distillery — your coding agent's memory rots. Distil it. Every project you work on with an AI coding agent accumulates a pile of past conversations too large to read and a memory store that quietly starts contradicting the code. This reads both and proposes what to prune and what is worth promoting into a durable memory file or a reusable Skill — and never writes a byte without your explicit, per-candidate approval. Ships as a PyPI package and as an Agent Skill.
uv tool install "ctx-distillery[cli]"
npx skills add qazbnm456/ctx-distilleryrlm-notebook — a research notebook where you can check the answer. Paste in sources of any kind (text, web pages, PDFs including scanned ones, YouTube captions), ask a question, and every claim comes back with a coordinate into the original you can open and read. A Trajectory drawer sits over the run behind each answer: every planner turn in the model's own words, a tool timeline scaled to real elapsed time, and what the pre-submit validator rejected before letting it through. The limit is in the UI, not just the README: a verified citation proves the coordinate exists, never that the sentence around it is faithful, which is why you get to click through.
uv tool install "rlm-notebook[api] @ git+https://github.com/qazbnm456/rlm-notebook"
rlm-notebook serve # the HTTP API and the browser workspace, on 127.0.0.1 by defaultOr skip the install: a live demo with six real notebooks, three in English and three in Traditional Chinese from the same sources, replaying the reasoning traces those runs actually produced.
Two more are research agents rather than products, and honest about it:
| Project | What it does |
|---|---|
| cve-reverser | Reverses a publicly disclosed WordPress CVE from its patch into a local-lab PoC and a Nuclei detection template. Strict planner/lifeline/generator role separation, so no single model both reasons about the bug and writes the final template unchecked. |
| toolscout | Implements Microsoft's ATLAS method: a small planner solves tasks over a huge MCP toolspace by discovering it progressively (list → load → describe → call) instead of holding hundreds of tool schemas in context. |
All five sit on rlm-harness — a reusable harness over DSPy's Recursive Language Model module. Every task gets a full, replayable JSONL trace (main steps, sub-model calls, tool calls), execution is sandboxed by default (pyodide/Deno; raw local execution is refused unless you opt in), and those traces export as reward-free SFT/RL datasets. It is domain-agnostic — security just happens to be my own first use of it.
The through-line: every verdict traces back to evidence rather than being trusted as self-report, every run is exportable as training data, and every README says plainly what is not solved yet. I would rather ship an honest residual-risk section than a demo that only works once.




