# Field Notes — Plane Mode Scholar **Build Small Hackathon · Backyard AI · Nemotron Quest · June 2026** ## The real problem A graduate student I know studies on long flights and in libraries with unreliable Wi-Fi. Generic PDF chatbots forget everything between sessions. What they actually need is a study *session* with memory: what they struggled with last time, what exam is coming up, and which explanation style works for them. Plane Mode Scholar is built for that person — and now runs as an **autonomous agent** so they don't have to click through five tabs before learning starts. ## Why Nemotron 3 Nano 30B-A3B We switched from Qwen3.5-9B to **`nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8`** — NVIDIA's latest open model under the 32B hackathon cap (released December 2025). | Property | Why it matters for study coaching | |----------|-----------------------------------| | MoE (~3B active / 30B total) | Fits ZeroGPU while reasoning like a larger model | | Agentic training blend | Native tool-planning fits our monitor→plan→act loop | | Configurable reasoning | `PMS_ENABLE_THINKING=false` for fast explanations; enable for hard proofs | | NVIDIA Nemotron Quest | Explicit hackathon sponsor alignment | Fallback: `nvidia/OpenReasoning-Nemotron-7B` when VRAM is tight. ## SwarmGrid UI + gr.Server Judges asked for custom UI beyond default Gradio. We adopted the **SwarmGrid** dashboard pattern ([GJB99/SwarmGrid](https://github.com/GJB99/SwarmGrid)): - **Left:** flight deck — one **FLY** button, home stats, recall banner - **Center:** streaming coach chat (optional input) - **Right:** live agent reasoning chain (PLAN → RETRIEVE → EXPLAIN → QUIZ) Backend is `gradio.Server` — FastAPI + Gradio queue + ZeroGPU, with our own HTML/JS frontend. This targets **Off-Brand** and the Off-Brand Award. ## Agentic flow (Best Agent) The old UI required: pick pack → set goals → start session → type question → open quiz tab. **Now:** tap **FLY** once. `StudyAgent` executes: 1. `ensure_pack` — demo materials if empty 2. `start_session` — recall due reviews + weak topics 3. `plan_next` — SRS due > weak mastery > quiz 4. `explain_topic` — grounded stream with [1] citations 5. `run_quiz` — auto-generated check 6. `surface_memory` — show what persisted Users can still chat to steer, but they don't have to. ## What surprised me 1. **Memory bloat is the real enemy, not forgetting.** Typed schemas + promotion thresholds + decay beat bigger context windows. 2. **MoE changes the UX calculus.** Nemotron Nano's active params are small enough for interactive streaming, but planning quality jumped vs 9B dense. 3. **Making the agent visible wins demos.** SwarmGrid's reasoning chain translated directly — judges see PLAN and RETRIEVE, not a black box. 4. **llama.cpp completes the story.** Same Nemotron weights via GGUF (`scripts/start_llamacpp.sh`) for true offline flight mode — **Llama Champion** + **Off the Grid**. ## Architecture ``` [FLY button / WebSocket] │ ▼ [ StudyAgent — plan_next → tool dispatch ] │ ├─► MemoryRetriever (6 memories max) ├─► VectorStore chunks (5 max) ├─► Nemotron 3 Nano (transformers | llama.cpp) └─► MemoryWriter (promote misconceptions, SRS) │ ▼ [ gr.Server SSE + /ws/agent_telemetry ] │ ▼ [ SwarmGrid-style dashboard (index.html) ] ``` ## Badges claimed See [badges.md](badges.md) for full evidence table. - Off the Grid, Off-Brand, Llama Champion, Sharing is Caring, Field Notes - Best Agent + NVIDIA Nemotron Quest (awards) - **Not claiming:** Well-Tuned (no fine-tune in scope) ## Models | Role | Model | Params | |------|-------|--------| | Chat / agent | `nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8` | 30B MoE (3B active) | | Offline GGUF | `unsloth/Nemotron-3-Nano-30B-A3B-GGUF` | via llama.cpp | | Fallback | `nvidia/OpenReasoning-Nemotron-7B` | 7B | | Embeddings | `all-MiniLM-L6-v2` | 22M | ## What I'd do next - Publish `plane-mode-scholar-traces` dataset on Hugging Face Hub - Voice input for hands-free plane study - FSRS fine-tune for review intervals (Well-Tuned badge)