Spaces:
Runtime error
Runtime error
| # 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) | |