Architecture
System diagram
Loading diagram…
Frontend
Three separate apps, each deployed to its own Vercel project.Core Warden (the game) is a Phaser 3 + TypeScript single-page app oncorewarden.app — a top-down action RPG playable in the browser, targeting Android tablets and desktop keyboards.Matlu Codex is a static Astro 6 site for players and contributors: lore pages fetched from Notion at build time, a creature gallery, and a community submission form with Supabase Storage for art uploads.Agentic Experiments (this site) is an Astro 6 dev log tracking agent performance, weekly metrics, and architecture decisions; audience is the development team (primary) and curious external developers (secondary).
Data
Supabase hosts all persistent data. The matlu_runs table stores leaderboard entries — each run's score, timestamp, and player identifier — written by the game client and read back for the leaderboard screen.stats_weekly and cognitive_load store aggregated delivery metrics written by the weekly collect-stats.js script and surfaced on this site's metrics dashboard. Supabase Storage holds creature-art uploads submitted through the Codex contribution form (binary blobs; Postgres stores only the URL).
Agents
All agent workflows run as GitHub Actions cron jobs. The Triage Agent (22:00 UTC nightly) sweeps unlabelled Linear backlog issues, assesses each against the codebase, and applies readiness labels (ready, needs-refinement, blocked,too-large) so the implementation agent always has triaged work to pick up. The Nightly Agent (02:00 UTC) selects ready issues, spawns an isolated Claude Code session per issue (max 3 in parallel), and opens a pull request for each completed one. The Error Monitor checks Better Stack daily for unresolved errors and files Linear bugs automatically. Other weekly agents handle lore auto-fill, sprite generation, release notes, architecture review, and the PR grooming / backlog hygiene passes.
Tooling
Two MCP servers are active in the project.PixelLab MCP generates pixel-art sprites on demand — characters, isometric tiles, tilesets — assembled into spritesheets and committed topublic/assets/sprites/ via the Sprite Credit Burn workflow.Linear MCP lets agents read and update issue metadata without leaving the Claude Code session. Key scripts: collect-stats.js (weekly metrics aggregation),fetch-agent-issues.js (selects issues for the nightly run),create-labels.js (idempotent label bootstrap), andnpm run sprites:assemble (assembles raw frames into spritesheets). CI runs on every push to main and claude/** branches:tsc --noEmit + vite build for the game, andastro check + astro build for both Astro sites.