I'm working on a research project exploring preference falsification in LLM multi-agent networks: simulating how AI agents navigate the gap between private beliefs and public expression under social pressure. We're building a dual-channel simulation framework where agents maintain honest internal beliefs but decide what to say publicly based on social costs, testing whether LLM agents reproduce the cascade dynamics from Kuran's preference falsification theory. Building this with a team at USC for CSCI 544, with the goal of publishing.
If you're working on something interesting, I'd love to talk.
recent
-
Chrome Extension Testing MCP
An MCP server that lets AI coding agents autonomously test Chrome extensions. No manual reloading, no copy-pasting console errors, no clicking through the same popup for the hundredth time.
After building Auditex and GitTrack, the worst part was never the coding; it was the testing. Every small change meant reloading the extension, clicking through the UI, checking storage, and pasting errors back into the agent. For simple extensions, there's no reason an agent can't do that itself. So I built an MCP server that gives Claude direct access to a real browser through Playwright: 13 tools covering popups, storage, network, badges, messaging, tabs, and more. Published on npm.
TypeScript, Playwright, Model Context Protocol, Chrome Extensions API
-
Auditex
A Chrome extension that runs Kokoro TTS entirely in your browser. No backend, no paywall, no server costs. Ever.
I got frustrated with Speechify's paywall and built a free alternative. The first version used a cloud backend. Then I realized I'd just recreated the same cost problem. So I moved the entire TTS pipeline into the browser using ONNX Runtime. 310MB model, running on-device, streaming audio through a chunked buffer with IndexedDB persistence. It works. I wrote about the whole journey.
JavaScript, ONNX Runtime Web, Web Audio API, Web Workers, IndexedDB, OPFS