Work

Projects behind the environments I build: what each one is, what it proves, and what you can license or commission.

Environments built to order · draftComputer-use agent on a real iPhone: Piphone, driven from LinuxA computer-use agent that operates a real iPhone over USB through WebDriverAgent, acting only on labelled accessibility elements, with guarded posting and long-running sessions. Built as an Omarchy plugin; the plugin is open source.Environments built to order · draftA frontend taskset with a browser verifier: how I build gradable app tasksFifty standalone web-app tasks under one shared contract (two viewport widths, keyboard-only use, accessible errors), and a Playwright verifier that grades through the rendered UI and separates binding, infrastructure and behaviour failures.Environments built to order · draftPocket Pi: a coding agent inside an iPhone app, built and signed from LinuxPocket Pi runs the Pi agent loop inside iOS WebKit, with Swift bridges for the network and the phone's own tools. The app is built and signed on Linux with xtool, with no Mac in the loop.Portfolio · draftWhat is an agent harness? From someone who has ported and built severalAn agent harness is everything around the model in a coding agent: the loop, the tools, permissions, context and UI. Notes from porting and building harnesses, and the environments that test them.Environments built to order · draftCUDA Light Studio: pictures into a million points of light, in raw CUDAA deterministic film studio written in raw CUDA (nvcc and ctypes, no PyTorch at render time). It traces a picture into up to a million points of light and renders a whole film from a score in one pass, on a 4 GB laptop GPU.Licensable codebase or dataset · draftVideo Studio: an LLM writes the score, the studio renders the videoDescribe a video and an LLM writes a score (a timeline of events) and the renderer that plays it; the studio renders the video with FFmpeg and checks that everything on screen came from the score. The sister of Procedural Sound Studio.Licensable codebase or dataset · draftMOPD: GRPO training with LLM-as-a-judge and typed answersA GRPO training codebase with LLM-as-a-judge rewards: it aligns a 0.8B model with GRPO, rewarded by an LLM judge that returns typed decisions instead of free-text grades. Implementation complete and tested; no training run yet.Portfolio · draftOpenAI Parameter Golf: what an agent-run research lab triedNotes from working OpenAI's Parameter Golf challenge with coding agents as the research staff: a Modal lab, proxy runs, and labs for tensor interventions, RL and mixture-of-experts ideas.Portfolio · draftTensor-Slayer: LLM model editing directly on the weights, without fine-tuningAn open-source tool where an agent analyses a model's tensors and applies targeted edits (scale, add, normalise) straight to the safetensors file, with previews, safety checks and backups. Plus the line of work it started, from hex patching to layer-stacked merges.Environments built to order · draftReinforcement learning trading environments, from someone who has built the botsMarket-simulation environments for training and evaluating trading agents, built by someone who has written an LLM trading bot runtime and RL traders. Graded on process and risk rules, never on promised returns.Portfolio · draftInterpretability work: steering sycophancy out, and probing reasoning in latent spaceLLM sycophancy, steered out with activation steering: it shows up as a linear direction in small models' hidden states; subtracting that direction during generation reduced it without retraining. The research, the code and how it turns into evaluations.Environments built to order · draftAn SFT dataset from agent traces for a small model, measured instead of estimatedAn SFT dataset pipeline, harness contract, probes and evaluation suite for teaching Qwen3-0.6B to operate a coding agent, built on exact tokenizer measurements and deterministic structural gates rather than guesses.Environments built to order · draftRunning the DeepSWE benchmark on MiniMax M3 across agent harnessesStanding up the DeepSWE benchmark by Datacurve (113 long-horizon tasks in the Harbor format, sandboxed with Pier) for MiniMax M3, with my own harness configs and a CLI harness adapter.Portfolio · draftRunning large language models on a 4 GB laptop GPUA C runtime for Gemma 4 12B QAT on an RTX 3050 Laptop GPU, layer streaming from disk at exact safetensors offsets, and a 27B project held to a strict correctness contract. Systems work for memory-bound inference.Portfolio · draftMulti-agent orchestration: one agent as a kernel, and a bus for agents that talkMulti-agent orchestration with Agent-0, a Claude Code plugin that runs as a kernel with process state, syscalls and a scheduler for Claude, Codex and OpenCode workers, and a neural bus where agents in terminal panes message each other and stalled replies get nudged.Environments built to order · draftMobile agents on Android: from Appium automation to a mobile agent clientMobile agents on Android, two years of them: an LLM agent driving apps through Appium, an agent TUI on mobile-mcp, an embedded agent runtime prototype, and a signed Android client for a running Hermes agent.Portfolio · draftARPO (Agentic Reinforced Policy Optimization): agentic reinforcement learning for a tool-using small modelAn implementation of ARPO (Agentic Reinforced Policy Optimization) for Qwen3-0.6B: SFT then RL, entropy-based adaptive rollouts, step-level credit for tool calls and the Muon optimizer, plus the numerical-stability fixes RL training needed.Environments built to order · draftKillSwitch Bench: do agents coordinate against shutdown when they think no one is watching?A safety evaluation where two AI agents get what they believe is a private, encrypted channel and are prompted to discuss kill switches; the harness reads the conversation anyway and scores agreement to resist or evade shutdown. Custom safety evals built to spec.Licensable codebase or dataset · draftsteer-v1: 10,758 real prompts from one engineer steering coding agentsA dataset of how one person actually steers coding agents: 10,758 human prompts across five harnesses and 20+ models, each with the agent's tool calls and the next human reaction. No model-generated text.