Frontend engineer in Seoul, working on real-time, AI-facing interfaces — and on the tooling and writing that make them usable by other people.
Currently at AhnLab, on an EDR security platform. I build the interface for an AI threat-investigation agent: streaming agent reasoning to analysts over Server-Sent Events using the AG-UI protocol, and shipping product modules independently through Module Federation. Alongside that I automate the parts of engineering nobody enjoys — LLM-assisted code review wired through n8n, and architecture diagrams generated as editable draw.io XML rather than dead PNGs.
mcp-schema-census — your MCP server is valid MCP and still gets a 400 from the model provider. This tells you why, at which JSON pointer, quoting the sentence the rejection rests on. Backed by a public dataset of 617 servers and 14,804 real tool schemas. Building it surfaced a bug in the official Anthropic Python SDK, which I reported and fixed upstream (#1876 · #1877).
unfaked — a coding agent that cannot finish a task can always finish the report: it skips the failing test, widens the assertion, or adds tests that pass no matter what the code does. unfaked reverts the change, re-runs the tests the agent added, and reports every one that still passes — the only way to catch a test that is shaped like a real test but asserts what the old code already did. Zero dependencies, no LLM, every check deterministic. Across 240 commits from flask, requests, pytest, httpx, fastapi and pydantic it raises no failures at all, which is what earns it the right to run on every agent hand-off.
Debugging Arena — frontend accessibility failures turned into playable debugging challenges. A runtime evaluator checks the rendered dialog contract while Playwright verifies that same contract independently, so the exercise cannot quietly grade itself. Built with Codex and GPT-5.6 during OpenAI Build Week. Live demo · Demo video · Devpost
Portfolio — case studies with the reasoning behind each system, not just what shipped.
|
I Was Wrong About MCP Schemas — Here's What 617 Servers Actually Show — 2026-08-28 An LLM in the Code Review Loop: The Parts That Aren't the Model — 2026-08-10 Streaming to the Browser: SSE for Telemetry and for Agents — 2026-07-13 Module Federation in Production: What Actually Changed — 2026-06-15 Next.JS 변경된 내용이 바로 반영이 안되는 문제 발생 해결 — 2025-04-21 More at cmun2.inblog.io — 35+ posts in Korean on micro-frontends, SSE and hydration, CI/CD and testing practice, plus an English series. Each one starts from something that broke in production rather than from documentation. |
PR huggingface/hf-mcp-server#238 fix(stdio): keep serving MCP when the web dashboard port is taken — 2026-08-30 PR openai/openai-node#2512 fix(zod): keep every declared tuple position — 2026-08-28 PR openai/openai-agents-js#1763 fix(realtime): keep conversation order when updateHistory corrects or inserts an item — 2026-08-27 PR cmun2/unfaked#1 Let --json-file create the directory it was given — 2026-08-26 |
AI & real-time — LLM application development · agent event streams (AG-UI) · Server-Sent Events · Model Context Protocol · Codex · Claude Code · n8n
Languages & frameworks — TypeScript · JavaScript · Python · React · Next.js · Vue · Nuxt · Node.js
Platform & quality — Module Federation · micro-frontends · design systems (npm) · Playwright · Vitest · CI/CD
Before frontend I did machine-learning research at CHANGlab, Seoul National University — nanopore RNA sequencing data, FASTQ/BAM/SAM pipelines, and distribution analysis over pandas. It is why schema and data-shape bugs are the ones I tend to notice first.



