- 🧩 I build iOS apps and enjoy going deep on modularization and architecture
- 🛠️ When I need a tool, I build it myself — from developer CLIs to full products
- 🤖 I prototype fast with AI and turn ideas into shipped software
- ✍️ I like to write down and share what I learn along the way
Things I designed, built, and shipped on my own.
haetae-robotics — Safety & security for physical AI: model output is treated as untrusted input before it ever reaches a robot.
| Repo | Platform | Description |
|---|---|---|
| haetae | A supervisory policy gate for AI-driven robots — every VLA / foundation-model action is allowed, slowed, or denied before it reaches the robot's own safety layer (pre-alpha) | |
| ataxia | derailment for embodied agents — induces psychopathology-like behavioral distortions in robot policies in simulation and measures the degradation against a healthy baseline |
Static analysis tools that turn codebases and database schemas into a queryable dependency graph. Dead code, cycles, impact analysis, layering rules, and architecture metrics all become queries over one graph.
| Tool | Platform | Description |
|---|---|---|
| cartograph | Queryable dependency graph for Swift / iOS codebases, built on IndexStoreDB | |
| kartograph | Explainable dependency graphs and dead-code analysis for Kotlin / Android | |
| gartograph | Queryable dependency graph for Go codebases — cycles, dead code, and layer rules as queries | |
| rustograph | Queryable dependency graph for Rust / Cargo workspaces — cycles, dead code, and impact analysis as queries | |
| dartograph | Evidence-backed dependency graph analysis for Dart / Flutter codebases | |
| schemagraph | Dependency graphs for databases — catalogs and SQL bodies in, impact analysis, cycle detection, and architecture rules out |
Cross-language graphs · isthmus links the graphs above across language boundaries, fed by TypeScript and Python producers · click to expand
| Tool | Platform | Description |
|---|---|---|
| isthmus | Joins the graphs above where per-language tools stop — Flutter MethodChannel/Pigeon (Dart ↔ Swift/Kotlin) and React Native bridge calls, HTTP client ↔ server routes, and code ↔ DB-schema persistence links |
|
| tsograph | Feeds isthmus from TypeScript / JavaScript (Node) services — HTTP routes (Next.js, Express, Fastify, NestJS…), OpenAPI contracts, ORM relation facts, and call graphs | |
| pythograph | Feeds isthmus from Python services — Django / DRF / Flask routes, Django & SQLAlchemy relation facts, and call graphs; parses with ast only, never imports your code |
Tools for running AI coding agents safely and smoothly — sandboxing, policy gates, account switching, outcome accounting, and shared knowledge. Deterministic and local wherever possible.
| Tool | Platform | Description |
|---|---|---|
| agentbelt | Confines AI coding agents on macOS to a single project directory — Seatbelt-enforced, kernel-tested | |
| exitzero | Offline policy and verification gates for AI-assisted coding teams | |
| multi-account-tool | Switches between multiple AI CLI accounts (Claude Code, Codex, Gemini/Antigravity) from one TUI — Keychain-backed with automatic rollback | |
| knowledger | Domain-scoped knowledge agreements for KBs, LLM wikis, and AI workflows — with a Hyperledger Fabric adapter |
More agent tools · 8 more — policies, skill stacks, session traces, and continuity, click to expand
| Tool | Platform | Description |
|---|---|---|
| joinery | The linker for agent skill stacks — extracts each skill's implicit CLI / MCP / client-feature dependencies, dry-fits them against your machine, then locks and compiles per-agent configs | |
| riskgate | One YAML policy that decides what your coding agent may do — allow, prompt, or deny every tool call, portable across agent CLIs, zero dependencies | |
| yield-audit | Outcome accounting for AI coding agents: what survived, what it cost, what was wasted — includes an AI rework-rate lens for phantom productivity | |
| epitaph | A repo-scoped ledger of rejected agent attempts — structured tombstones for rolled-back patches, consulted before the next agent retries the same path | |
| agent2perfetto | Converts Claude Code session logs into Perfetto trace JSON — view agent sessions as timelines, tool slices, and context / cost counters | |
| packet-ask | Sends only a scrubbed packet — never the raw repo — to personal coding-subscription subagents for review and second opinions | |
| relay-continuity | Local, privacy-first continuity for AI-assisted work — evidence-backed resume context without storing code, chats, or telemetry | |
| understatus | A calm macOS statusline addon for Claude Code — live CPU, memory, battery, disk, network, and AI-session info, with selectable themes |
Experiments that deliberately break a model's reasoning — and measure exactly how it breaks.
| Project | Platform | Description |
|---|---|---|
| derailment | Induces psychopathology-like cognitive distortions in LLMs by manipulating attention, salience, valence, and arousal, then scores the result against a healthy baseline — emulation, not diagnosis |
Mobile engineering, data, infra & testing · 7 more, click to expand
📱 For iOS & mobile engineering
| Tool | Platform | Description |
|---|---|---|
| locus | Where every UI element lives in source — a static traceability map from iOS accessibility elements to Swift code; CLI + MCP server | |
| strictmigrate | Delegates a Swift 6 strict-concurrency migration to agents — the compiler is the judge, a journal is the single source of truth; spans the KMP boundary | |
| coroner | Local post-mortem triage for iOS telemetry (.ips + MetricKit) — symbolicates, clusters, and journals crashes by version, then exposes them to coding agents over MCP | |
| reproof | Self-hosted mobile QA — records issues as video + actions + fixtures, replays them deterministically on Android / iOS, and re-verifies AI repair candidates against the approved recording |
🗄️ For data, infra & testing
| Tool | Platform | Description |
|---|---|---|
| vecdiff | Diffs two embedding-index snapshots for vector-DB migrations and index audits — local, numpy-only, CI-gateable | |
| localqpu | A local emulator of the IBM Quantum Platform API — a "test mode" for code that calls a quantum cloud: no queues, no cost, and any failure you want to simulate | |
| lychgate | A deterministic custodian for repos you stopped tending — merges provably boring Dependabot PRs and holds the rest at the gate; no LLM, no admin or workflow permissions |
Native macOS apps, built together with AI. Distributed at coden.kr.
| App | Description |
|---|---|
| Storage Medic | Find and clean up what's eating your disk space |
| Nits | Fine-tune display brightness and color temperature |
Side projects I've shipped · click to expand
| Service | Description |
|---|---|
| PickMeJobs | Job postings, aggregated in one place |
| Oneul Buffet | Map of buffets and company cafeterias |
| EVCar | EV charging station map |
| PyeonDeal | Convenience store deals and promotions |
| PolicyHanun | Government policies at a glance |
| Hansan | Real-time crowd density map of Seoul |
| Mosquito Index Map | Map of mosquito and pest activity |
| Observed | Real-time status monitoring for AI tools and infrastructure |





