Projects — michaelslop.org
Timeline — what got built when
← back to projects
2026-08-12 · timeline, process

Built with Claude Code. See how these projects were built for what that means in practice.

A record of the actual order things happened in, because the finished write-ups make everything look more planned than it was. Grouped into phases rather than a flat list — phases stay open, and there will be more of them.


Phase 1 — Foundation

Early August 2026

Before anything could be built reliably, the machine had to stop being a hobby setup.

  • Aug 3 — Text-to-speech pipeline working end to end: chat command → command bot → local speech server → broadcast audio. Four cloned voices.
  • Aug 3 — Discord mirror bot: a passive observer that relays the same speech audio into a voice channel for friends who are not watching. It never generates audio and never speaks from Discord messages — a deliberate constraint that has kept it simple ever since.
  • Aug 4 — Local model hosting stood up. First real benchmarking of what actually fits on a 32GB card, and the discovery that a default context length quietly breaks agentic tool calling.
  • Aug 5 — Developer tooling baseline: process supervisor, shell history, secret scanner, benchmarking, structural diffs, file watching, backups, Python linting. Every package passed three independent authenticity checks before install — two candidates were skipped because they could not be verified to that standard.
  • Aug 5 — Version control finally configured properly. Repositories initialised across the active projects.

Phase 2 — The stream stack

Aug 5 – Aug 8, 2026

Turning seven manually-started programs into something that starts itself and notices when it breaks.

  • Aug 5 — Launcher rewritten and made idempotent. This is where the discovery landed that the existing "is it already running?" guards had never worked on the PowerShell version the desktop shortcut actually uses — the source of every duplicated service.
  • Aug 5 — All console services moved into a single supervisor window with per-service logs and restart. Found in the process that the config had been using a form that silently launches nothing on Windows, meaning grouped mode had never once worked.
  • Aug 5 — Control panel for a second monitor: service status, stream info, chat presence, a speech composer.
  • Aug 7 — Watchdog: restarts anything down, every five minutes, armed by a flag file so it never resurrects things shut down on purpose.
  • Aug 7 — Mouse-stutter investigation. Turned out to be driver interrupt pressure from a pile of peripheral software, not the stream stack at all. Startup trimmed; two audio engines had been racing each other at every boot.
  • Aug 8 — Virtual deck: a button grid mirroring the physical stream deck, usable remotely by moderators. Presses carry only an ID, resolved server-side against the live list — the client never sends a command.
  • Aug 8 — Board curation, so moderators can reorganise and add sounds without touching the underlying software, which has no editing API and would need a restart mid-stream anyway.
  • Aug 8The watchdog's audio check found to have been "repairing" healthy audio 422 times over two days. Four layers of individually reasonable decisions composing into confident nonsense. Written up in full on the stream stack page.
  • Aug 8 — Integrity checks added: assert invariants every five minutes, not just liveness. Each one verified to actually fire by deliberately breaking what it watches.

Phase 3 — Site and viewer interaction

Aug 4 – Aug 8, 2026

  • Aug 4 — Domain bought, tunnel configured, site publicly reachable.
  • Aug 5The drawing overlay rewritten from scratch. The original drove an existing plugin over a websocket API; it reported success and rendered nothing, for hours, for a reason that turned out to be in the plugin's source. Replaced with a browser source pointed at my own transparent page, which made stream and viewers share identical rendering code.
  • Aug 5 — Windows 98 theme, with the bitmap font bundled rather than assumed.
  • Aug 7 — Shared live canvas: the server owns the authoritative stroke list and broadcasts to every connected viewer, so drawers see each other in real time instead of waiting on the video delay.
  • Aug 7 — Undo/redo, moderation controls, and a fix for stroke widths having been in the wrong coordinate space the whole time.
  • Aug 8 — State persistence. Sessions, canvas and settings now survive a restart; previously every restart signed everyone out and deleted chat's artwork mid-stream.
  • Aug 8 — Broadcaster authorisation flow, reusing the existing redirect so it needed no external configuration change.

Phase 4 — Local AI agents

Aug 4 – Aug 9, 2026

  • Aug 4 — First local coding agent in use, running against a local model.
  • Aug 7 — Model hosting overhauled. Context length discovered to be controllable only through derived model definitions on Windows, because the application manages its own environment and overrides the obvious setting. A second inference server benchmarked at near-parity with better quality.
  • Aug 7MoeCode v1.0, my own coding agent in Go, complete: terminal UI, sessions, automatic conversation compaction, slash commands, a sub-agent, and tool-server integration.
  • Aug 7 – Aug 9 — v1.0 → v2.8. The arc here is mostly about reliability measurement rather than features: a repeatable benchmark, live tests against a real model, and the finding that a cooperative fake tests the plumbing and never the instruction. Two planned features were cancelled by measurement showing they would not help.
  • Aug 9 — Host switching between two machines' GPUs, with the model-tag mismatch between them made explicit after it produced a confusing per-model 404.

Phase 5 — The mesh

Aug 9 – Aug 10, 2026

  • Aug 9 — Second machine brought up as a dedicated inference and services box, moving speech synthesis off the workstation GPU and freeing several gigabytes of video memory during streams.
  • Aug 10hell.mesh: one Go binary with zero third-party dependencies, deployed to every machine. Power control, live telemetry, file browsing, agent launching. Written up at a deliberately high level — the addressing stays private.
  • Aug 10 — Game server panel, built as the first test of the project's own documented extension recipe. The recipe held.

Phase 6 — Documentation and disclosure

Aug 2026 →

  • Aug 12 — This projects section rebuilt as a full public record, including the AI usage disclosure and this timeline.

Still open

Unattended wake-from-sleep is unproven. Push-from-local in the file browser is keyed but unimplemented. Tool-server coverage in the Go agent is the weakest part of an otherwise well-tested codebase. Vertical video would need a genuinely different drawing overlay, not a tweak. A Rust rewrite of the agent core is listed as a learning exercise under consideration — explicitly not a plan.

Phases stay open. This document gets updated rather than replaced.

CS student · developer · streamer

localhost:8000