Initial sync: memory, agents, commands, and gitignore

Syncs project memory, custom agents, and commands across machines.
Excludes secrets (settings.json), session state, and runtime files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Chris
2026-06-11 09:19:24 -05:00
commit 33cab10cef
47 changed files with 1229 additions and 0 deletions
@@ -0,0 +1,3 @@
- [User Profile](user_profile.md) — Chris, homelab enthusiast, Lululemon Mirror mod, delegates all code to Claude
- [Project Architecture](project_architecture.md) — Flutter app for mirror display + phone remote on Pi 4, voice/motion
- [Workout API](reference_workout_api.md) — workout-player endpoints at 192.168.86.172:8091, video/progress/stream contracts
@@ -0,0 +1,29 @@
---
name: project-architecture
description: "Mirror OS - Flutter app for hacked Lululemon Mirror on Pi 4 with phone remote, voice, and motion"
metadata:
node_type: memory
type: project
originSessionId: 826ce615-b163-439f-aaa9-7b3be198b03a
---
Mirror OS is a custom app platform for a hacked Lululemon Mirror running on Raspberry Pi 4.
**Key decisions:**
- Flutter (not web kiosk, not Qt) — single codebase for mirror display + phone remote
- Pi 4 (4GB) as compute
- Vizio board used as HDMI passthrough only (no rotation capability)
- Pi handles rotation via wlr-randr or DRM/KMS config
- Display is portrait 1080x1920, not touch-enabled
**Why:** Flutter gives one codebase for both the mirror display and the phone companion app. Phone remote is half the project — keeping it unified avoids drift. Performance is adequate for dashboard/media on Pi 4.
**Features planned:**
- Dashboard (clock, weather, calendar, widgets)
- Workout player (integrates with existing workout-player homelab service)
- Media player (YouTube, Plex, local video/music via mpv/media_kit)
- Voice control (OpenWakeWord + Whisper, local processing)
- Motion-activated wake (PIR or mmWave on GPIO)
- Phone companion app as primary control interface
**How to apply:** All code goes in /Users/csader/mirror-os. Flutter project with shared packages for logic, separate entry points for mirror display vs phone remote.
@@ -0,0 +1,23 @@
---
name: reference-workout-api
description: "Workout-player API contract at 192.168.86.172:8091 — endpoints for videos, stats, routines, streaming"
metadata:
node_type: memory
type: reference
originSessionId: 826ce615-b163-439f-aaa9-7b3be198b03a
---
Workout-player service runs at http://192.168.86.172:8091 on the homelab.
**Endpoints (derived from prior mirror-os JS codebase):**
- `GET /api/videos?folder=<path>` — list videos, optional folder filter. Returns `{videos: [...], folders: [...]}`
- `GET /api/stats` — aggregate stats (total, completed, inProgress counts)
- `GET /api/routines` — list routines. Returns `{routines: [...]}`
- `PATCH /api/videos` — save progress. Body: `{videoId, position, percent}`
- `GET /api/stream?path=<encoded_path>` — stream video file directly
**Video object fields:** id, title, path, folder, duration, trimStart, trimEnd, lastPosition, percentCompleted, restSeconds
**State machine for workout sessions:** browse → playing → rest (between queue items) → complete
**How to apply:** When building the workout integration in Flutter, use these endpoints. The stream URL can be passed directly to media_kit/mpv for playback.
@@ -0,0 +1,18 @@
---
name: user-profile
description: "Chris - homelab enthusiast with Lululemon Mirror mod project, prefers Claude writes all code"
metadata:
node_type: memory
type: user
originSessionId: 826ce615-b163-439f-aaa9-7b3be198b03a
---
Chris runs a homelab (192.168.86.x network). Has a self-hosted workout-player app at 192.168.86.172:8091 with video library, routines, and progress tracking.
Hardware: Lululemon Mirror with BOE DV430FHM-NN5 panel (43" 1080p IPS, portrait 1080x1920), Vizio replacement mainboard (HDMI passthrough to LVDS), Raspberry Pi 4.
Prefers Claude writes all the code. Comfortable reviewing and making architectural decisions but delegates implementation entirely.
Phone: Android (primary target for remote app testing/deployment).
Gitea instance at git.chrissader.com (org: hermes).