--- title: Plane Mode Scholar emoji: ✈️ colorFrom: blue colorTo: indigo sdk: gradio app_file: app.py pinned: false license: mit short_description: Fine-tuned Nemotron 4B study coach + MemoryAgent suggested_hardware: l4x1 startup_duration_timeout: 1h models: - GuusBouwensNL/plane-mode-nemotron-4b-study-coach - nvidia/NVIDIA-Nemotron-3-Nano-4B-GGUF preload_from_hub: - nvidia/NVIDIA-Nemotron-3-Nano-4B-GGUF NVIDIA-Nemotron3-Nano-4B-Q4_K_M.gguf - GuusBouwensNL/plane-mode-study-coach-lora-gguf plane-mode-study-coach-lora.gguf tags: - Backyard AI - Off-Brand - Sharing is Caring - Field Notes - Best Agent - Off the Grid - Well-Tuned - track:backyard - sponsor:nvidia - achievement:offgrid - achievement:welltuned - achievement:offbrand - achievement:llama - achievement:sharing - achievement:fieldnotes --- # Plane Mode Scholar Build Small Hackathon entry — Backyard AI track, Nemotron Quest. I built this for a grad student who studies on planes and in libraries where Wi-Fi drops constantly. Most study apps forget everything between sessions. This one remembers what you got wrong, what exam is coming up, and how you like things explained. Hit **FLY** once. The agent packs your materials, pulls up due reviews, explains a topic with citations from your notes, and runs a quiz. No tab-hopping. The coach is a fine-tuned [Nemotron 3 Nano 4B](https://huggingface.co/GuusBouwensNL/plane-mode-nemotron-4b-study-coach) — SFT on real study conversations. UI is custom HTML on `gr.Server`, loosely based on my [SwarmGrid](https://github.com/GJB99/SwarmGrid) project. ## Demo ![Plane Mode Scholar autopilot demo](https://github.com/GJB99/plane-mode-scholar/raw/demo-v1/docs/demo/plane-mode-scholar-demo.gif) One tap FLY, then watch it plan → retrieve → explain → quiz. Runs offline with llama.cpp if you need that. | | | |---|---| | Space | https://huggingface.co/spaces/build-small-hackathon/plane-mode-scholar | | Demo MP4 | https://github.com/GJB99/plane-mode-scholar/raw/demo-v1/docs/demo/plane-mode-scholar-demo.mp4 | | Social post | https://x.com/GuusBouwens/status/2066670913467400284 | | Field notes | [docs/field-notes.md](docs/field-notes.md) | | Badge writeup | [docs/badges.md](docs/badges.md) | | Trace dataset | [docs/agent-traces-dataset.jsonl](docs/agent-traces-dataset.jsonl) | ## Badges | Badge | What we did | |-------|-------------| | Well-Tuned | LoRA SFT on Nemotron 4B → [plane-mode-nemotron-4b-study-coach](https://huggingface.co/GuusBouwensNL/plane-mode-nemotron-4b-study-coach) | | Off the Grid | Local inference via llama.cpp GGUF — no cloud LLM calls | | Off-Brand | Custom dashboard, not default Gradio tabs | | Llama Champion | `./scripts/start_llamacpp.sh` runs the fine-tune through llama-server | | Sharing is Caring | Open agent traces + `/export_trace` endpoint | | Field Notes | [docs/field-notes.md](docs/field-notes.md) — what broke, what surprised me | | Best Agent | `StudyAgent` does monitor → plan → act without user clicking through steps | | Nemotron Quest | Nemotron 3 Nano family throughout (4B coach, 30B MoE fallback) | Fine-tune details: [docs/finetune.md](docs/finetune.md). Colab notebook in `notebooks/`. ## Try it locally ```bash pip install -r requirements.txt export HF_TOKEN=your_token python app.py ``` Open `http://localhost:7860`. Fully offline path — download the GGUF, start llama-server with the LoRA, point the app at it: ```bash ./scripts/setup_llamacpp_stack.sh # first time only ./scripts/start_llamacpp.sh # terminal 1 PMS_INFERENCE_BACKEND=llamacpp python app.py # terminal 2 ``` ## Models | Role | Model | |------|-------| | Coach (default) | `GuusBouwensNL/plane-mode-nemotron-4b-study-coach` | | Base | `nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16` | | Heavy fallback | `nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8` | | Offline GGUF | `nvidia/NVIDIA-Nemotron-3-Nano-4B-GGUF` | | Embeddings | `sentence-transformers/all-MiniLM-L6-v2` | Repo: [github.com/GJB99/plane-mode-scholar](https://github.com/GJB99/plane-mode-scholar) MIT