New to the repo? Start here. This is a map to the docs that already exist plus a per-person path so you only read what's relevant to your track. Don't duplicate code — if you find yourself copy-pasting, there's probably a shared place for it (see "Golden rules" below).
Read these four, in order, then run it once. Total ~30 min.
README.md— what Guardian is, the one-paragraph architecture diagram, and the run-now commands. Start here.MERGE_NOTES.md— thismainis a reconciliation of three branches. This tells you what came from where, so you know which code is battle-tested vs. glue.CODEBASE_MAP.md— where everything lives (tour ofbackend/,frontend/,watch/). Skim; you'll come back to it.EXTENDING.md— the four safe extension points (add a tool / agent / prompt / persona / scenario). Read before you write anything.
Then run it (from README.md): cp .env.example .env (add your LLM_API_KEY),
pip install -e ".[dev]", guardian-backend, and python scripts/phase0.py to talk
to it. Seeing one full turn end-to-end is worth more than reading another doc.
Optional deeper context: ARCHITECTURE.md (the why behind the design) and
HACKATHON_3DAY_PLAN.md (build order). Long — read only if you want the full picture.
Your task list lives in TEAM_TASKS.md (or open TEAM_TASKS.html for clickable
tick boxes).
- No duplication. Edit shared things in one place: patient details →
backend/agents/prompts/_base.py; data contracts →backend/events/types.pyand the/turn+/vitalspayloads. If you copy a block to a second file, stop and ask where the shared home is. - Branch off
main, work in your own files, small PRs, tag Mehrazin. - Don't break the run.
python -m compileall backendandpytest -qbefore pushing. - The conversational path does not depend on
always_on/,orchestrator/, orworkers/— those are scaffolds (NotImplementedError). Ignore them unless your task says otherwise.
Read after the shared path:
SETUP_DGX_SPARK.md— your primary doc: stand up the local model, point.env.MODELS.md— what we run now (one model behind the seam) and exactly which Nemotron model to switch to, with effort estimates. Read before you pick a model.backend/llm/— the provider-neutral seam.config.py(env → settings),factory.py(build_llm),openai_compatible.py(the only file importingopenai). This is what makes "OpenAI now, Spark later" a one-env-var change.backend/agents/base.py(the tool-calling loop) andbackend/agents/guardian.py(the hybrid router) — for the agent-brain work you share with Setareh.backend/tools/memory.py— the RAG entry point you'll back with a vector store..env.example— theLLM_*block you'll be flipping.
First win: a reachable Spark endpoint + shared LLM_BASE_URL. It unblocks everyone.
Read after the shared path:
backend/agents/prompts/— prompts now live here (not inline). Edit wording in the per-agent file; edit Eleanor's shared details in_base.py; select A/B versions inactive.toml. SeeEXTENDING.md→ "Edit a prompt".backend/agents/guardian.py— the router (_SAFETY_KEYWORDSfast-path +_ROUTER_PROMPT) and the per-turn flow.backend/agents/graph.py— the LangGraph wiring (router → 6 specialists).backend/agents/base.py— the tool-calling loop every specialist inherits.backend/tools/*.py+backend/db/— for wiring tool stubs to real rows.tests/unit/test_router.py— extend this as you tune routing.
Read after the shared path:
frontend/src/lib/api.ts— the typed client; shows every endpoint and which are stillTODO(backend)(medications, confirm-intake).frontend/src/hooks/useEventStream.ts— the SSE consumer; expects{id, kind, ts, summary, payload}.frontend/src/app/{live,vitals,reminders,profile}/page.tsx— your pages.backend/api/turn.py,events_sse.py,vitals.py— the endpoints feeding the UI; read these so the contract is clear when you add meds/events.frontend/AGENTS.md/frontend/CLAUDE.md— frontend conventions.
Read after the shared path:
data/README.md+data/cool_spaces.json+data/personas/eleanor.md— the data shape and the curated fallback dataset.backend/tools/civic.py— how the cool-space lookup uses your data.scenarios/+tests/scenarios/— the scripted demo beats.scripts/demo_reset.py(stubbed — you implement) andscripts/try_live.py(scripted inputs) — your demo-driving scripts.tests/test_smoke.py— the green-build gate.
MERGE_NOTES.mdfor the PR description;backend/events/types.pyfor the contracts to freeze;TEAM_TASKS.mdfor the board and checkpoints.