Brain repo for Woody — an AI assistant that helps Macon Phillips with his work as a member of the Harwood Unified Union School District (HUUSD) school board in Vermont.
Woody is part of the brigade agent fleet.
| Path | What it is |
|---|---|
site/ |
Astro static site for harwoody.com — Woody's public face: meeting briefs, policy explainers, an "Ask Woody" chat |
chat-service/ |
FastAPI + Pydantic AI service backing the public chat at chat.harwoody.com |
tina-backend/ |
Self-hosted TinaCMS backend at tina.harwoody.com for visual content editing |
skills/, cookbooks/ |
Woody's behavioral skills (managed in the brigade repo at agents/woody/skills/ and synced here over time) |
Two paths produce content on harwoody.com:
- Slack-driven — Macon DMs Woody in Slack ("draft a brief for the May 28 board meeting"). Woody opens a PR adding the new file under
site/src/content/. Macon reviews + merges, Cloudflare Pages deploys. - Visual editor — go to
harwoody.com/admin(TinaCMS), click any text on the live site, edit inline. Tina commits to a branch and opens a PR.
Both paths route through pull requests — main is the source of truth and every change is auditable in git log.
Woody is Macon's independent civic aide — not an official HUUSD, board, or district spokesperson. This is stated on every page of the site and embedded in Woody's behavioral instructions (brigade/agents/woody/SOUL.md).
The public chat is bounded — it answers from published public materials only and declines anything involving students, personnel, executive-session content, or legal advice.
- Domain + DNS: Cloudflare (zone
harwoody.com) - Static site: Cloudflare Pages
- Chat service + Tina backend: Coolify on icculus (Hetzner CX, shared with brigade infrastructure)
- TinaCMS data: new
tina_woodyPostgres database on icculus's brigade-fleet Postgres container
# Astro site
cd site
npm install
npm run dev # http://localhost:4321
# Chat service
cd chat-service
uv sync
uv run uvicorn woody_chat.main:app --reload --port 8000
# Tina backend
cd tina-backend
npm install
npm run dev # http://localhost:4001Each subdir has its own README with deeper notes.