Cairn
Team consisting of a Fox Senior SE (ex-PayPal/Riot) and a UCI CS researcher specializing in agentic systems, Python, Go, Kafka, and multimodal ML pipelines.
YouTube Video
Project Description
Cairn — AI that works offline, gets smarter when you find a signal.
Who it’s for:
People without reliable connectivity who still need AI to work. Backpackers, field researchers, travelers with no roaming, farmers, emergency responders. You’re on a trail with no signal and you need a timer set, a weather check, a reminder — now, not when you find Wi-Fi.
What it does:
Runs FunctionGemma (270M) on-device via Cactus Compute. Sub-250ms function calling with zero network dependency. Handles alarms, timers, weather, reminders, messaging, music, contact search. F1 ~0.95+ on easy/medium tasks.
When the local model isn’t confident, and there’s no signal, it tells you: “I think this is right — queued for verification when you’re back online.” When signal returns, it drains the queue through Gemini 2.5 Flash, compares answers, and corrects anything the local model got wrong.
Every time you pass through connectivity, the system verifies its offline answers and caches better knowledge for the next offline stretch.
How it routes:
No signal → local only. Low-confidence results flagged and queued.
Signal detected → cloud fallback for hard queries, queue drain, sync.
High confidence → local answer returned regardless of connectivity.
The fallback trigger is physical (do you have signal?), not abstract. Users get it immediately.
Architecture:
- FunctionGemma 270M on Cactus Compute (C++ FFI) — always-available local inference
- Qwen3 1.7B — on-device query splitter for multi-intent commands
- Gemini 2.5 Flash — opportunistic cloud fallback via google-genai SDK
- Offline request queue — batches uncertain answers, resolves on next connection
- Knowledge packs — pre-cache domain tools (trail, travel, field) before losing signal
- Background connectivity monitor — auto-syncs when signal is restored
The device is the primary compute surface. Cloud is an upgrade, not a dependency.