惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
Malwarebytes
Malwarebytes
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cybersecurity and Infrastructure Security Agency CISA
F
Future of Privacy Forum
C
Cisco Blogs
T
The Exploit Database - CXSecurity.com
A
Arctic Wolf
S
Securelist
K
Kaspersky official blog
S
Schneier on Security
T
ThreatConnect
T
Tenable Blog
Spread Privacy
Spread Privacy
T
True Tiger Recordings
AWS News Blog
AWS News Blog
F
Fox-IT International blog
量子位
T
Threatpost
V
Vulnerabilities – Threatpost
C
CERT Recently Published Vulnerability Notes
Cisco Talos Blog
Cisco Talos Blog
GbyAI
GbyAI
宝玉的分享
宝玉的分享
腾讯CDC
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
Cyberwarzone
Cyberwarzone
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
U
Unit 42
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
The Register - Security
The Register - Security
MyScale Blog
MyScale Blog
小众软件
小众软件
A
About on SuperTechFans
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
博客园 - 三生石上(FineUI控件)
美团技术团队
Google Online Security Blog
Google Online Security Blog
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog

DEV Community

SSH in 2026: Why Every Developer Should Know It Cold Audit AI-Generated PRs Before You Merge Them (Swarm Orchestrator 10.3.0) AI Can Generate Interfaces on the Fly. But Users Still Need Orientation. How We Learned That Most Resume Rejections Happen Before Humans See Your CV How I Prepared for CKA: Resources, Labs, and Strategy That Worked for Me Stop Flying Blind: We Built an LLM Evaluation Framework That Works Across 17+ Agent Frameworks The Misleading "User is not authorized to access connection" Error in AWS CodeBuild — and Why Your IAM Policy Looks Fine I Resurrected a Dead F1 Project and Accidentally Built a Race Intelligence OS Remix Mini PC: After a Year of Dead Ends, the eMMC Finally Talks Not All Games Are Equal: The Real Difference Between a Trap and a Tool How to add Peppol e-invoicing to your SaaS without making it your team's problem I Built a Hermes Agent to Tell Me Which Hackathons to Enter. It Told Me to Enter This One. The Five Hooks That Change How You Ship With Claude Code Powering Your Progress: Building Robust Solutions with Laravel I built a self-hosted CI/CD platform with persistent queue, encrypted secrets, and rollback UI — here's what I learned Antigravity 2.0 and the $1,000 OS: Why "Agent-First" Feels Like the Direction I've Been Building Toward Anyway I built an AI PR-triage agent in 30 lines of Markdown Core Web Vitals from 74 to 91: A Real Tax Practitioner Site Rebuild I Gave Gemma 4 150 Tools on Windows. Here's What Actually Happened. Beyond the Loop: Why Monolithic AI Agents Fail and How to Build a Microkernel Architecture The Hidden Tax of AI-Assisted Development (And How I Fixed It) I Ditched Cloud LLMs for Gemma 4 4B: A DevOps Engineer's 48-Hour Reality Check Building a Schema.org @graph That Validates on the First Try The "Lift and Shift" Trap: Why Your Integration Layer Needs More Than Just a Cloud Address All 7 OSI Layers Explained with Real-World Analogies Antigravity 2.0 in one day: the four shells and what each is good for Self-Hosting Google Fonts with size-adjust: Zero CLS Web Font Swap The Multi-Provider LLM Problem: Why “One API” Is Not Enough How I indexed 69,000 Claude Code skills (and what I learned doing it) RememberMe CareGrid: Local Gemma 4 for dementia memory and safety Google Is Killing Gemini CLI on June 18. Here Is What to Do Before Then Do Domínio ao Deploy: Hospedando Arquivos de Deep Links no Cloudflare Pages (Parte 7.1) Running Gemma 4 26B on an Old GTX 1080 with llama.cpp Devlog 1: I tried building an SNES game with the super FX chip Why Gemma 4 Feels Like an Important Moment for AI Developers✨ From Zero and Confused, This Is How I Started Learning to Code I Built a Local AI Gateway That Talks to Claude, ChatGPT, DeepSeek and Gemini — Without a Single API Key Bootstrapping with AI: Why Gemma 4 is the Micro-SaaS Founder’s Best Friend MyErp Architecture Series - #02 Cellular Architecture: Mapping Biology to Software Systems NodeJS vs Bun vs Go 🌍 RTL Arabic Style UI How Does an AI Agent Actually Buy Something? Google Just Published the Spec. Google I/O 2026 Is One Uncanny F.R.I.E.N.D.S Group Upgrade I Replaced 70MB Node.js Log Viewer with a 172KB Zig Binary The "MTTR Is All You Need" Trap The Quiet Revolution: How Firebase Became the First Agent-Native Backend at Google I/O 2026 I Built ResuMate! A 100% Private, Local AI Resume Optimizer with Google Gemma 4 Learning DirectX 12 - Part 2 Initialization Theory NeuralHats: I Put Edward de Bono’s Six Thinking Hats on Local LLMs Using Gemma 4 📝 Instant Auto Save Notes Engineering the "App-Like" Experience: A Deep Dive into PWA Architecture I built a local first AI CCTV assistant using Gemma 4 + Frigate CrowdShield AI — Smart Stadium Operating System & Crowd Intelligence Platform I built a free AI observability tool, prove your AI is useful, not just running Beyond Autocomplete: Why Google Antigravity 2.0 Changes the Rules for Indie Builders 터미널 AI 에이전트 구축 (v12) Building Instagram-Powered Apps with HikerAPI (Without Fighting Scrapers) Checkpoints, Not Transcripts: Rethinking AI Coding Agent Memory From Side Project to Student Savior: My AI PPT & Resume Tool Crossed 1.5K+ Users Why Story Points Don’t Work in the AI Era, And What Should Take Their Place Instead. Self-Hosted Document AI: How to Run Document Intelligence On Your Own Infrastructure (2026) How to Extract Tables from PDFs with AI: 4 Methods That Actually Work (2026) IDP vs OCR: What's the Difference — and Which Does Your Business Actually Need? Automated PII Detection and Redaction in Business Documents: A Practical Guide Human-in-the-Loop Document Review: When to Use It and How to Set It Up (2026) Document Processing Without RPA: A Modern Approach for Small Teams Reducto Alternative: When You Need More Than a Document Parser (2026) Hermes Agent vs LangChain vs CrewAI: When to Reach for Each SparshAI: I Built an Offline AI Tutor for Students Using Gemma 4 — Here's What Happened Building NeuroSense AI: A Human-Centered Stress Insight Assistant Powered by Gemma Why I Built a Privacy-First Dev Toolkit GAS Input Tags: Ability Activation Without Hardcoded Bindings AI Legal Document Advisor Supported By Gemm 4 Model Building Convertify in Public Week 10: PDF Cluster + Blog Launch CureNet AI: Decentralized Health Intelligence for India, Powered by Gemma 4 and ABHA Standardization When Open-Weights AI Meets a Broken Healthcare System: Deploying Gemma 4 in Rural India V.A.L.I.D. Google I/O 2026: The Year Google Stopped Building AI Assistants and Started Shipping AI Engineers Bondmap: AI-Powered Relationship Network That Maps How You're Connected to Everyone Using Gemma 4 Gemma 4 challenge inspired me to build my first app! 96. LoRA: Fine-Tune a Billion-Parameter Model on a Laptop From a Student Who Used CircuitVerse to a GSoC Contributor — My Community Bonding Story How Bf-Tree Keeps Mini-Pages Small, Hot, and Cheap to Evict I asked Claude to explain the chip war and ended up understanding modern geopolitics differently Stop Manually Checking for Server Updates: Automate With Email Notifications Nostalgia Meets Cybersecurity: Spotting Modern Scams in a Retro OS Simulator - Forward or Fraud CRACKING CODING INTERVIEW From Python to Production Pipeline :A Practical guide to Apache Airflow Antigravity 2.0: Google Just Changed What It Means to Be an Engineer I Built a Free Sticker Maker Because Every Other One Hid the Export How I bypassed Blazor WebAssembly's Virtual DOM using raw WASM pointers Distributed Tracing for LLM Agents: When MCP Makes Tool Calls Observable The Zero-Budget Memory Setup Behind My AI Agent Workflow No database. No framework. Just files, startup order, correction logs, and discipline. I Built an AI Second Brain with Gemma 4 The Most Exciting Google I/O 2026 Announcement for Me: HTML-in-Canvas CrisisLens: Compressing Disaster Scenes into 200-Byte Emergency Payloads with Gemma 4 I'm 15 and I built a todo app with Telegram Stars payments — only legal way for me to monetize before turning 18 Crypto Branding After the Token Launch Building an on-chain alerts bot in Python without any blockchain library FinePrint — An AI Pocket Lawyer That Decodes Predatory Contracts Using Gemma 4
Vessel Ops
Nick Switzer · 2026-05-25 · via DEV Community

This is a submission for the Gemma 4 Challenge: Build with Gemma 4

What We Built

"When a crew member is injured 200 miles offshore, there is no internet, no doctor, and no second opinion. This application is the second opinion."

We built Vessel Ops AI, an offline-first desktop application that serves as a lifeline for the Medical Person in Charge (MPIC) and Chief Engineer on vessels operating hundreds of miles from shore.

When a crew member is injured mid-ocean, the MPIC usually has to flip through a 400-page medical manual under immense pressure. When a critical component fails, the Chief Engineer troubleshoots alone without an OEM support hotline or even a simple Google search.

Vessel Ops AI puts Gemma 4 on the laptop in the wheelhouse. It's grounded in the WHO International Medical Guide for Ships, cites specific pages for every piece of advice, and requires zero connectivity at sea.

Key Features

  • 🏥 RAG-grounded medical triage — every response cites [WHO IMGS, p. XX] from an embedded 938-chunk knowledge base
  • ⚙️ Engineering fault diagnosis — component tracking, maintenance logs, and AI-assisted troubleshooting
  • 📸 Multimodal analysis — upload a photo of an injury or a failing part and Gemma classifies it on-device
  • 🎓 MPIC Study Mode — an interactive medical examiner that scores crew responses 1–10 against established protocols
  • 🧠 Captain Sparky Trivia — morale-boosting maritime trivia to keep crew engaged during long watches
  • 🔄 Offline sync queue — every write accumulates locally and pushes to Firebase Firestore when the vessel reaches port

Demo

🌐 Live hosted demo (no install required):
https://vessel-ops.web.app
(Cloud preview mode — Gemma 4 26B MoE via Google AI Studio. A yellow banner indicates cloud mode.)

(The 3-minute pitch is embedded at the top of this post! Looking for a deeper dive? Check out the Extended Technical Demo)

💻 Download the desktop app:
GitHub Releases — Windows installer (75 MB, no admin required) or portable .zip

Code

GitHub logo switzloco / sail_pal

A Gemma small language model tool to help sailors with medical, maintenance and other needs when they don't have reliable internet access in the middle of the ocean

Vessel Ops AI

"When a crew member is injured 200 miles offshore, there is no internet, no doctor and no second opinion. This application is the second opinion."

An offline-first AI assistant for the Medical Person in Charge (MPIC) and Chief Engineer on vessels operating in deep-water environments. Runs entirely on a laptop — no cloud, no connectivity required at sea. Powered by Gemma 4 via Ollama.


Hackathon Context

Built for the Gemma 4 Good Hackathon (Kaggle × Google DeepMind, due May 18, 2026).

Prize targets:

  • Ollama Prize ($10k) — best project using Gemma 4 via Ollama
  • Global Resilience Prize ($10k) — offline disaster/emergency response
  • Health & Sciences Prize ($10k) — medical decision support
  • Cactus Prize ($10k) — local-first app with intelligent model routing

Deployment

Laptop (MacBook, Windows, Linux)
  └── Ollama  →  gemma4:e2b (general / engine / maintenance / trivia)
              +  nswitzer/gemma4-maritime-medical-GGUF (Unsloth fine-tune
                 used automatically for medical routes)

How We Used Gemma 4

Which Model — and Why

Vessel Ops AI doesn't just "use Gemma" — Gemma is the core intelligence, and the model selection is driven entirely by the deployment constraint: a sailor's laptop with no internet.

The Gemma 4 family gave us three options:

Model Architecture Total Params Active Params Our Verdict
E2B Dense ~2B 2B Default edge model — fits 8–16 GB RAM laptops
E4B Dense ~4B 4B Scale-up model — stronger reasoning on 32 GB+ hardware
26B MoE Mixture-of-Experts ~26B ~4B Cloud preview — used for the hosted demo via AI Studio
31B Dense ~31B 31B ❌ Too heavy for shipboard hardware

Why we chose the E2B/E4B small models for edge deployment:

Maritime laptops are typically mid-range machines such as a 2–3 year old ThinkPad with 8–16 GB RAM and no discrete GPU. The 26B MoE requires ~16–24 GB VRAM even at Q4 quantization; the 31B dense needs 24 GB+. Neither fits the hardware reality at sea. The E2B and E4B models were purpose-built for exactly this constraint — ultra-mobile, edge deployment on devices like mid-range laptops.

Our system implements intelligent model routing based on clinical severity:

# backend/ai/ollama_client.py
def _pick_model(self, severity: str) -> str:
    if severity in ("critical", "serious"):
        return self.model_scale    # gemma4:e4b — deeper reasoning
    return self.model_primary      # gemma4:e2b — fast, fits any laptop

Enter fullscreen mode Exit fullscreen mode

Minor queries (crew vitals logging, routine maintenance) hit the fast E2B model. Critical medical events and serious engineering faults escalate to E4B for deeper reasoning — if the hardware supports it. This intelligent routing perfectly fits a local-first architecture pattern where the routing decision is quite literally life-or-death.

Why the 26B MoE for the cloud demo:

The hosted preview at vessel-ops.web.app uses gemma-4-26b-a4b-it via Google AI Studio. The MoE architecture is ideal here — it delivers the intelligence of a much larger model while only computing ~4B parameters per token, keeping latency low for the demo. Crucially, we disabled Google Search grounding so the cloud preview doesn't look artificially smarter than what a crew member would experience offline with the E2B/E4B models.

How Gemma Does Real Work

Gemma isn't a chat wrapper in this project. It's doing three distinct kinds of real work:

1. RAG-grounded medical triage
Every query — regardless of which screen the user is on — automatically retrieves the top BM25-ranked passages from a 938-chunk SQLite FTS5 index of the WHO International Medical Guide for Ships (3rd Edition). These passages are injected into the system prompt with explicit citation markers, and Gemma is instructed to cite [Source, p. XX] on every claim. Chris loves this page / source feature so he can dig deeper on his own.

This dramatically reduces hallucination on dosages and protocols — exactly the kind of mistake that could kill/maim someone at sea.

2. Multimodal injury & component analysis
When a crew member uploads a photo of a wound or a failing engine part, Gemma's vision capability classifies the observation. The classification feeds back into the RAG step as additional query context, so the retrieved protocols are relevant to what the camera actually sees.

3. Domain-specific personas
Different code paths apply different system prompts — medical chat, engine chat, MPIC study mode, trivia — all running on the same Gemma model. The MPIC study mode is particularly compelling: it acts as an interactive medical examiner that presents emergency scenarios and scores the crew member's response 1–10 against WHO protocols.


The FTS5 Decision (Killing the Embedding Model)

This deserves its own section because it was the single most impactful engineering decision in the project.

We started with ChromaDB + sentence-transformers for RAG. The embedding model alone added ~1 GB to the installer. For a vessel deployment where every megabyte matters and the installer ships on a USB stick, this was a dealbreaker.

We replaced the entire RAG layer with SQLite FTS5 — which is built into stock Python — using BM25 ranking and a porter stemmer. The 938 WHO IMGS chunks ship as a 1.3 MB JSON that bootstraps into the FTS5 virtual table on first launch. Bundle size dropped ~99% with no measurable loss in retrieval quality on this corpus.

Is BM25 perfect? No. Lexical search struggles with synonyms — if a sailor types "cut," BM25 might miss the WHO manual's section on "lacerations." Dense retrieval (embeddings) normally bridges this semantic gap, but we refused to pay the 1 GB size penalty.

Instead, we implemented LLM-Based Query Expansion. When a sailor submits a medical query, we do a rapid, invisible pass through the fast gemma4:e2b model: "Rewrite this medical symptom into formal clinical terminology for a manual search." Gemma translates "cut" to "laceration, hemorrhage," and we pass the expanded query to the FTS5 index. We get the intelligence of semantic search with the footprint of lexical search.

Architecture

Laptop at Sea (no internet)
  ├── Ollama  →  gemma4:e2b (default) / gemma4:e4b (32GB+ RAM)
  ├── FastAPI backend  →  SQLite WAL + FTS5 RAG index
  ├── Next.js 14 static export  →  Tauri 2 desktop wrapper
  └── Any device on ship LAN  →  http://<laptop-ip>:3000

Cloud Preview (for judges / demos)
  ├── Google AI Studio  →  gemma-4-26b-a4b-it (MoE)
  ├── Cloud Run  →  FastAPI backend (stateless, auto-seeds demo data)
  └── Firebase Hosting  →  https://vessel-ops.web.app

Enter fullscreen mode Exit fullscreen mode

Challenges we Overcame

Running frontier AI on "potato" hardware: Many vessels run 3+ year old laptops. Gemma 4 E2B was chosen specifically for its capability-to-size ratio — responses generate fast enough to be useful in an emergency on hardware that wouldn't fit a 12B+ model in RAM alongside the application.

Deployment for non-technical crews: Installing Python, Node, and Ollama is beyond a typical crew member. We wrap everything — Python interpreter, dependencies, FTS5 index, WHO PDF — into a single NSIS installer that runs without admin rights.

PyInstaller orphan processes: The PyInstaller --onefile bootloader on Windows doesn't propagate termination to its child process. We reap orphan vessel-ops-backend.exe processes on every launch with a 500ms settle — without this, the second launch silently fails because port 8000 is still bound.

Team

This project started with Capt. Chris Oprzadek — eight years as a Navy Nuclear Submarine Officer out of Hawaii and Guam, two Atlantic crossings, and now heading out with Seamester to teach offshore sailing. The brief came directly from him: "we need a second opinion that works when there's no satellite."

Our medical advisor Dr. Michael Switzer — a physician who refits and maintains his own boat out of Port Townsend, WA — documents the practitioner-meets-boat-owner reality in his YouTube channel, where every onboard repair is also a reminder that out here you fix it yourself.

Built by Nick Switzer. Between those three perspectives — deep-water passages, self-reliant boat life, and software — Vessel Ops AI's design brief wrote itself.

Vessel Ops AI is open source under GPL-3.0. The WHO IMGS content is used under fair-use for safety-critical, non-commercial maritime applications.