$ icat felix.png && whoami
Felix Lin
i like building reliable software — here's some of my work
$ ls links/
$ tree projects/ · click a row to cat it
├──shipped/production — other people depend on it
2026
zylosnode.js · agent infra
›
channel integrations, plugin system, and reliability infra for an open-source agent platform
$ cat projects/zylos.md
# zylos
- what
- an open-source platform that turns LLM runtimes (Claude Code, Codex) into persistent agents — memory across sessions, real communication channels, no human in the loop
- comms
- six production channel integrations — Discord, Microsoft Teams, WhatsApp Business, LINE, Zalo, Zalo Personal — each against one channel-conformance contract on a SQLite-backed gateway; 400+ users on deployed agents
- hardening
- webhook signature verification, SSRF-guarded media fetch, and timing-safe token comparison across all six, plus JWKS-validated Entra ID auth across four sovereign Azure clouds for eight registry components
- onboarding
- the dashboard connect flow for every channel (Next.js/TypeScript, AES-GCM credential encryption, WhatsApp Business OTP path) — 30% of all human-agent IM connections
- plugins
- the component system: modular plugins with hot-reload config, lifecycle hooks, and a public registry, enabling community integrations across 10+ channels
- infra
- production agent services with health monitoring, crash recovery, heartbeat probes, and context-aware session rotation
- links
- zylos-ai org ↗
2026
zylos-recallnode.js · retrieval
›
retrieval layer that surfaces the right memory into an agent’s live sessions
$ cat projects/zylos-recall.md
# zylos-recall
- what
- automatic recall for a persistent-memory agent — relevant memory injected as it works
- problem
- an agent can store months of memory but won't resurface it unless someone loads it by hand
- approach
- BM25 and dense-embedding retrieval fused by Reciprocal Rank Fusion, cross-encoder reranked every turn; fail-open behind a 1s timeout
- outcome
- gated on an 18-case golden set at nDCG@k 0.95 / injected-F1 0.85 — a regression threshold, not a benchmark. live against a production agent's memory; the eval side became mem-eval
- links
- repo ↗
2026
mem-evalpython · docker
›
docker harness that measures what LLM agents actually retain over long horizons
$ cat projects/mem-eval.md
# mem-eval
- what
- measures what agents actually retain — not what they claim to
- problem
- memory demos test recall with the answer still in context; that measures prompting, not memory
- approach
- a dockerized distill/answer/judge harness replays chat histories one memory-sync per simulated day, then probes the agent on its real runtime after controlled noise
- outcome
- 125 LongMemEval questions scored to a 75% retention baseline; traced the weakest category (20%) to upstream distillation rather than answer-time retrieval
- links
- repo ↗ · harness readme ↗
results — claude runtime, vanilla-memory arm · longmemeval-s · 125 questions · overall 75%
knowledge-update93%
single-session-user93%
temporal-reasoning82%
multi-session73%
single-session-assistant73%
single-session-preference20%
accuracy by question type · 15–50 questions per type · full run data in the repo under data/runs/
2021
gait-rehab-appflutter · dart
›
flutter app for stroke-rehab patients, built at Chapman’s gait lab
$ cat projects/gait-rehab-app.md
# gait-rehab-app
- what
- a Flutter/Dart app for stroke-rehab patients, built as a mobile-development intern at Chapman’s Gait Rehabilitation & Research Lab
- problem
- clinicians see a patient an hour a week and can’t tell whether the exercises happen in between
- approach
- rep tracking, progress charts, and adherence monitoring in one patient-facing app
- outcome
- gave clinicians visibility into between-visit adherence
- links
- internal to the lab; not public
├──research/measured and peer-reviewed
2022
smartmetercomputer vision · time series
›
leak detection from an analog water meter — computer vision reads the dial, seasonal ARIMA flags divergence; MLNLP '22
$ cat projects/smartmeter.md
# smartmeter
- what
- a latch-on accessory that turns an ordinary water meter into a leak detector
- problem
- household leaks hide inside normal usage, and analog meters can't flag them
- approach
- a Cloud Vision dial reader takes readings off an unmodified analog meter; seasonal ARIMA learns the household's daily rhythm from 15-minute readings
- outcome
- held-out one-day forecast validated by RMSE against a seasonal-naive baseline; divergence from the forecast flags a candidate leak. proof of concept on seven days of data — the flagging rule is the paper's design, not a deployed system
- links
- paper ↗
└──coursework/CMU · code private, academic integrity
2025
memory-allocatorc · systems
›
malloc/free in C — segregated free lists, footerless blocks, mini-blocks; 11,031 KOPS at 74.1% util
$ cat projects/memory-allocator.md
# memory-allocator
- what
- a general-purpose dynamic memory allocator (malloc/free) in C
- problem
- fast and low-waste pull against each other
- approach
- segregated explicit free lists with better-fit search, footerless allocated blocks, two-word mini-blocks for the smallest allocations, adjacent-block coalescing
- outcome
- 11,031 KOPS throughput at 74.1% memory utilization
- links
- code private (academic integrity)
2025
network-proxyc · systems
›
multithreaded HTTP proxy in C with an LRU object cache
$ cat projects/network-proxy.md
# network-proxy
- what
- an HTTP proxy in C that serves many clients at once
- problem
- repeated requests each cost a round-trip to the origin, and a single-threaded proxy stalls everyone behind one slow request
- approach
- detached thread-per-connection, with a mutex-guarded LRU object cache answering repeats
- outcome
- fewer redundant network calls, lower latency under load
- links
- code private (academic integrity)
2025
unix-shellc · systems
›
tiny unix shell in C — job control, signals, I/O redirection
$ cat projects/unix-shell.md
# unix-shell
- what
- a mini Unix shell (tsh) — runs programs and manages foreground/background jobs
- problem
- children exit and signals arrive whenever they want; naive handling loses jobs or deadlocks
- approach
- fork/exec with per-job process groups; SIGCHLD/SIGINT/SIGTSTP handlers; signal-blocked critical sections with a sigsuspend foreground wait; I/O redirection
- outcome
- no lost children, no zombie buildup, ctrl-c/ctrl-z land on the right job
- links
- code private (academic integrity)
2026
rl-pongpython · pytorch · rl
›
advantage actor-critic agent that learns atari pong from reward alone
$ cat projects/rl-pong.md
# rl-pong
- what
- a reinforcement-learning agent trained to play Atari Pong (ALE/Pong-v5, restricted to up/down)
- problem
- no labels — the agent only sees a score and has to work out which of thousands of frames mattered
- approach
- Advantage Actor-Critic in PyTorch — separate policy and value networks (2×256 hidden), n-step advantage returns, decoupled policy and value objectives
- outcome
- learns from reward alone; reported on reward curves, not a single accuracy number
- links
- code private (academic integrity)
$ cat now.txt
exploring agent memory — how AI systems retain, recall, and prove it. ask me about LLM agents, eval harnesses, or retrieval.