My personal projects
Synchronised viewing, narrative role-playing and development from a phone: explore the use cases, technical choices and current stage of each project.
Synchronised viewing, narrative role-playing and development from a phone: explore the use cases, technical choices and current stage of each project.
With a conversational agent, I define the need, constraints and acceptance criteria. I give the coding agents the specifications, context and access to development and testing tools.
Codex and Claude Code implement the tasks using the instructions, roles and skills I’ve prepared. I retain decisions and reviews.
The agents use the application, in a browser, on a device or through the CLI depending on the project. They observe results, diagnose discrepancies and retest after fixes.
I personally test the application, check the acceptance criteria and give final approval.
Development and testing repeat until the acceptance criteria defined during scoping are met.
Watching several streams together, playing with an AI game master or developing from a phone: these are the needs behind my projects.
7 projects3 in productionpersonal projects
Development tools:Claude CodeCodexCursor
Technologies used in my projects, grouped by area.
Synchronised YouTube, Twitch and Kick viewpoints in one viewer. The web app is public; the Android app is tested on a device and shares the Rust media core.
Open the web app to create a shareable session and compare YouTube, Twitch and Kick viewpoints.
Modify the code for the scoped task and criteria.
Drive the scenario via MCP/CDP on an identified build.
Read ADB logs when the diagnosis requires them.
Address the identified cause and review the fix.
Repeat the checks suited to the scenario.
Native video rendering is checked separately from the DOM, using recordings and SyncBench measurements suited to the scenario.
My role I prepare the phone workflow, instructions and skills, scenarios and criteria; I review fixes and testing tools before qualifying the build.
MultiPOV brings together YouTube, Twitch and Kick viewpoints for Discord sessions and events. In VOD, audio synchronisation measures delays; a clock and offsets then maintain alignment. The web app is live at watchmultipov.app (Solid, TypeScript, Vite, PWA and hls.js). The shared Rust engine runs as WASM on the web and natively in the Tauri 2 Android app. The Android app embeds the web viewer, Media3/ExoPlayer players and instrumented live synchronisation for on-device testing.
An AI runs the story; the engine resolves rules and checks state changes. Players create and share their own worlds.
Explore the narrative game: the AI runs the story and the engine checks rules and game state.
Tackle the complex core before the interface.
Exercise the game through the shared CLI.
In audits, compare game state, raw LLM exchanges and drift checks.
Update the engine or tools based on the diagnosis.
Replay the scenario and check for regressions.
The CLI shares the web engine; replay rereads a trace without another LLM call. Raw exchanges are captured in instrumented audit scenarios.
My role I define game rules and development order, give agents engine access and prepare context; I review diagnoses, traces and testing criteria.
Multiplayer text-based TTRPG web platform where a generative AI acts as the game master. Original game system (2d6+stat, GM Moves, Trait Cards, Vows & Clocks, 5 pacing modes) secured by a 19-invariant 'drift gate' that validates every LLM output before applying state. Designed with Claude (Anthropic) as primary provider, the application also supports Gemini, OpenAI or a local model (Ollama, llama.cpp, vLLM via OpenAI-compatible API) through an adapter architecture. The community creates its own universes via an 11-step wizard in 4 phases (Fandom import, AI-assisted generation, voice profiles, lore by season/episode, translation) and publishes after moderation. Python 3.12 / FastAPI + WebSocket backend, asynchronous SQLite, Vite frontend, multi-container Qwen TTS pool and a free tier with virtual Flares currency.
Use Claude Code or Codex on a remote Linux machine from an Android phone. Dictate prompts and control the mouse and shortcuts with a Joy-Con, without a physical keyboard.
Send a message through the form at nomadrust.dev to request access. The site explains the Android/Linux setup, dictation and Joy-Con controls.
Define the expected behaviour and task for the relevant role.
Assign the Rust, Flutter or patch work to Claude Code.
Run suitable tests; Rust tests and Clippy for Rust code.
Address mismatches, then rerun the checks.
Check consistency across the Android/Linux journey.
Claude Code works on Rust, Flutter, patch and distribution adaptations around the RustDesk foundation.
My role I define the Android/Linux journey, prepare context for each role and decide on RustDesk adaptations; I check integration and expected behaviours against my own usage.
Nomad lets you develop from an Android phone connected to a Linux workstation over RustDesk. The phone displays the remote desktop and captures dictation; a Nintendo Switch Joy-Con in the other hand controls the mouse and shortcuts through configurable profiles for Claude Code, OpenCode or Codex. A Linux daemon orchestrates display, audio and transcription when the mobile client connects. The project includes an adapted RustDesk fork (gamepad, voice call, branding), an Axum + SQLite + Ed25519 licence server with offline and expiry grace periods, and the bilingual nomadrust.dev website. Access is available on request through the website form.
A French/English site pre-rendered with Angular, a PDF CV generated from portfolio data and an animated astronomical background.
Compare the source image with the animated result and its integrated effects.
French/English portfolio built with Angular 21 and pre-rendered as static HTML. It combines canonical routes per language, SEO and social-sharing metadata, a responsive Tailwind CSS 4 layout and PDF CV generation. An astronomical background is selected daily; its layered animation has a static fallback based on device capabilities and preferences.
Turn hours of podcast audio into structured, searchable data while keeping the API budget in check.
Open the demo to search podcast transcripts and extracted metadata.
The analyser transcribes podcasts with Whisper, then uses ChatGPT to extract guests, topics and timestamped passages. A React interface provides search. Processing takes about 2 hours per hour of audio. This personal project has processed 20% of the Floodcast catalogue and 10% of TFTC.
Automate a live stream control room in real time: the video itself triggers OBS scene changes.
Automation application for my Call of Duty streams on TikTok. Visual patterns detected in NDI streams trigger OBS Studio actions, with latency of around 100 ms. The PySide6 interface configures detection zones; OpenCV processes images with CUDA GPU acceleration.
By having an LLM play Minecraft for fun, I figured out how to give it rules and the right context — the foundation I reused in Aidventures and in how I develop with Claude Code.
Autonomous Minecraft bot driven by an LLM through the Model Context Protocol (MCP). A deliberately strict "atomic" architecture: the Mineflayer bot is only an executing arm (unit actions, no decisions), while the LLM reasons over raw data surfaced by sensors (discovered blocks, hazards, inventory, Y-levels) to decide what to mine, build or flee. Three MCP servers separate actions, Minecraft knowledge (recipes, Y-levels, tools) and a persistent spatial memory in SQLite. A learning project that taught me, through play, how to frame explicit rules and provide the right context to an LLM — a skill directly reused in the Aidventures drift gate and in the way I scope Claude Code-assisted development.