A single-user, AI-and-API-first application, developed under the internal name Bryce, that emails a daily digest of the previous day's stats for a personal watch list of baseball players across three levels: MLB, MiLB (all levels), and NCAA. No web UI: the primary interface is an MCP server, so Claude (web, mobile, or CLI) is the front end.
- Getting started (run it locally):
docs/guides/getting-started.md; production ops indocs/guides/running-bryce.md - Interface reference: CLI · REST API · MCP tools — the three canonical, per-audience references for driving Bryce
- Product spec / handoff:
docs/product/daily-baseball-digest-handoff.md(see its 2026-07-19 architecture revision) - Domain glossary & decisions:
CONTEXT.md+docs/adr/(stack/storage/interface/hosting: ADRs 0025–0028)
TypeScript on Node · Hono (REST API) · MCP TypeScript SDK (primary interface) · Zod (boundary contracts) · SQLite in WAL mode + Drizzle (+ Litestream → R2 backup) · Vitest. Hosted on the HC's MacBook behind a Cloudflare Tunnel with Cloudflare Access; email via Postmark (Forward Email SMTP as the swappable alternative).
This repo vendors the ai-config Generic Baseline
(canonical instructions in AGENTS.md, host values in PROJECT.md),
trimmed to the nine dev-lifecycle skills as a host Customization. Notable host policies:
- Human gates: plan approval is
autoin this host (allowedrequired · auto); the merge gate is the one human stop and is never configurable (PROJECT.md→ Human Gates). - Quality gate:
npx tsx scripts/parity-check.tsfrom day one; the npm checks inPROJECT.md→ Quality Checks apply (the app is scaffolded).
After cloning, activate the branch-protection guardrails once:
bin/setup