Mixture-of-Experts models only use a few experts per token. MoEVM keeps the right ones on the GPU and pages the rest from the SSD, so models beyond the GPU’s memory budget run on Apple Silicon — with output identical to llama.cpp without MoEVM.
8.72 tok/s gpt-oss-120b (58 GiB) on the GPU, median of 5
3.1× Qwen3-Coder-Next vs llama.cpp op-offload, same prompt
0.0 max logit difference — 1,024 rows × 151,936 tokens
95.8 % expert-cache hits with LRU (optimal: 97.5%)
1Pack
Routed experts packed into a sidecar file — 4,608 records with a SHA-256 index.
2Stage
A RAM arena with LRU eviction; 4 threads prefetch the experts the router is likely to pick.
3Route
Read the router’s choice once per layer, plan GPU slots, swap expert ids atomically.
4Compute
Experts run from a persistent Metal pool; the rest of the model stays on the GPU.
5Protect
Epochs: a slot is never evicted before the GPU is done with it. A memory-pressure listener trims RAM.
6Verify
Every change is gated by logit parity against llama.cpp without MoEVM.
The performance ladder
llama.cpp op-offload4.24
Sidecar + Metal pool13.08
Hardened, dynamic-K19.31
4k context21.88
Graph-build, no copy hook21.90
Qwen3-Coder-Next Q4, tokens/s, runs with routing traces on. Clean head-to-head with tracing off: 6.41 → 19.90 tok/s (3.1×).
How I kept it honest
Parity row by row: max difference, argmax and token over the full vocabulary.
Jitter test: 500 µs injected delays and forced syncs — still 0.0.
Launch gates written before the results; median of 5 runs, never the best one; warm-cache numbers refused.
I take freelance projects: I design, build and ship AI tools wired into the software your team already uses. Also open to joining a team or a startup that needs someone who builds — remote-first today, regular stays in Seoul, and a move to Korea ahead.
AI executive assistant inside WhatsApp, hosted in France.
Context
SouverainIA’s founder wanted an AI executive assistant for SME leaders that lives where they already work — WhatsApp — with every byte hosted in France.
What I did
Built the product solo: Python backend, WhatsApp (Meta) integration, a “Chef IA” that sets daily priorities and sends nightly summaries.
Brand and the full site: Next.js static export, industry pages, a “Bastide vs public AI” comparison, a security page.
An SEO + AI-search content loop: scheduled drafts, competitor watch and a monthly visibility report — nothing publishes without human review.
Next.js
Static export
SEO / GEO
Scheduled agents
2026 · Redesign concept · client pitch
ESLITECH
Manufacturer site redesign on their live CMS.
Context
ESLITECH (brand Smartfurry), an aquarium and pet-products manufacturer, had a dated site. The brief: same content and pages, a premium look.
What I did
Rebuilt the front end in Vue 3 + Vite on their live CMS API, keeping every URL, call-to-action and popup working.
A motion system, bento product sections and a dedicated About page.
Shipped a public demo on Cloudflare Workers: HTTPS, noindex, forms disabled.
Vue 3
Vite
CMS API
Cloudflare Workers
2026 · Founder & CEO
Selvren
AI experts on private documents, every claim checked against its sources.
Context
Teams want answers from their own documents — with proof. Selvren started as a chatbot for pet shops, became AquaChat for aquarium stores, then a B2B platform of AI domain experts.
What I did
Founded the company and led the build with a team of AI coding agents: I set the architecture, the rules and the merge gate, and reviewed the work.
Hybrid retrieval over private documents and an expert catalogue, then a rule-based verifier that checks every claim against its sources — it abstains or quotes when sources are thin.
Security by design: row-level security in PostgreSQL, encrypted originals, antivirus on uploads, an egress proxy, hashed and revocable API keys.
GDPR tooling: data export, erasure, a written retention doctrine.
Result
3,182 commits in 11 weeks, 11,901 tests in the merge gate, 28 architecture decision records.
Fastify
TypeScript
PostgreSQL 17
pgvector
Mistral
React
TanStack Start
Clerk
2026 · R&D · local-first AI
Atelier
Raw idea → product brief through 8 specialist engines, 100% local.
Context
Every product I build starts as a raw idea. Atelier turns it into a brief an engineering team — human or AI — can execute.
What I did
A local-first chain of 8 specialist engines, from discovery to product, with every step’s data persisted.
Runs entirely on a MacBook (M5 Pro) with Ollama and MLX, under a strict zero-cost rule: no paid API, no rented compute.
Benchmarked local coding models to pick the engine (qwen3-coder 30B: 5× faster than qwen2.5-coder 32B).
Result
Idea → product brief end to end in about five minutes, fully offline.
Python
Ollama
MLX
Local LLMs
2026 · Product, UX & app · partner
Naiad
Connected-aquarium companion app with an AI assistant.
Context
Naiad is a companion app for a hardware partner’s connected aquariums — built as a partner demo.
What I did
Designed the whole flow: account-first onboarding with EU data residency, product recognition by QR code, tank profile.
A living dashboard (water parameters, a confidence score), species compatibility, device control for lights and pumps, a logbook.
An AI assistant that explains trends and prepares safe actions — but never controls a device without the owner’s confirmation.
Mobile-first web app
IoT
AI assistant
EU data residency
2021–2023 · Le Mans Université
GLPI
Set up GLPI for the service desk and IT inventory.
Context
The IT department supports staff across a whole university campus — every request and every piece of equipment has to be tracked.
What I did
Put GLPI in place: a ticketing service desk for user requests and an inventory of the IT equipment.
Used it day to day with the team for support follow-up.
GLPI
Service desk
IT asset inventory
2021–2023 · Le Mans Université
PC deployment
A deployment server to install staff workstations.
Context
New and reinstalled workstations had to reach staff ready to use, the same way every time.
What I did
Set up a deployment server to install work PCs in a repeatable way.
Prepared and installed staff workstations.
Deployment server
Workstations
2021–2023 · Le Mans Université
Support & maintenance
User support, network and server maintenance.
Context
Two years as an apprentice inside the IT team of a university, alongside a Bac+2 in systems and networks.
What I did
Day-to-day support for university staff.
Maintenance of the network and the servers with the team.
Hardware maintenance of workstations.
Networks
Servers
Support
2026 · Minecraft server · modpack
DataRace
A 223-mod “Create Civilisations” server, tuned and hosted.
Context
Still building for Minecraft: a modded survival server built on top of the “All of Create” pack.
What I did
Assembled and shipped seven versions in five days (June 2026): colonies, world generation, trains, far-view rendering, a performance pass, then content and quality-of-life mods.
Wrote down every choice: no land-claim mods, hard mob packs blocked, each mod tested on a staging world before going public.
Tuned and hosted it: server memory 4 → 10 GB with GC settings, view distance 8, simulation distance 6, on a VPS with a game-server panel.
Result
223 server mods on Minecraft 1.21.1 (NeoForge), measured at 20 TPS (5.3 ms per tick).
NeoForge 1.21.1
JVM tuning
VPS
Docker
2026 · Minecraft mod · co-developed
Pokémon League
A competitive league mod in Kotlin: gyms, ELO, tournaments.
Context
A full competitive mode on top of Cobblemon, the Pokémon mod for Minecraft.
What I did
Started the project with another developer and built its economy system.
The mod covers a 7-stage league with 5 gyms, ranked 1v1 and 2v2 with ELO, double-elimination tournaments for up to 32 players and 96 quests.
Kotlin
Fabric
Cobblemon
Minecraft 1.21.1
2025 · Own product · beta
SyncCast
Keeps esports casters on the same frame across Twitch and YouTube.
Context
Esports casters commentate the same match from different places — and each platform delivers it with its own delay.
What I did
Built the product in 8 days (268 commits, December 2025): rooms, a leader caster as reference, and resyncs scheduled on a shared server clock (Ably).
Twitch drift measured every second; a spread over 500 ms triggers a scheduled realignment.
An own HLS relay: streamlink + FFmpeg into 1-second segments on Cloudflare R2, segments uploaded before the playlist.
Teams with Admin / Manager / Caster roles and invites; room chat and live drawing over the video; Row Level Security on every table.
Redesigned the landing page in 2026 to explain the backend — only with what the code actually does.
Result
Beta, with 52 unit and 14 end-to-end tests.
Next.js
Ably
Supabase
hls.js
FFmpeg
Cloudflare R2
This site measures its audience with Google Analytics, only if you accept. Your choice is kept for 6 months.