JoinGrove

Offline Model Routing

Source: docs/models/routing.md
Generated: 01/09/2026

JoinGrove replaces cloud-only model routers with offline-first routing — Ollama BYOK, adaptive RAM tiers, and egress policy.


Key Concepts

  • What: Model routing decides which endpoint serves chat/agent requests: local Ollama, Copilot cloud, or platform server — governed by zero egress and security mode.
  • Why: Unreliable networks and privacy-conscious campuses need deterministic local routing, not opaque cloud model pickers.
  • Related: Egress policy (egress.md), adaptive performance (../global-south/performance.md), comparisons (comparisons.md).

API / Reference

Mode Routes to Blocked when zero egress
Offline (default) localhost:11434 (Ollama) Copilot cloud, marketplace, telemetry
Studio cloud (opt-in) joingrovePlatform.serverUrl Until allowPlatformRequests
Billing checkout (opt-in) joingroveBilling.serverUrl Until allowBillingRequests
Copilot cloud GitHub Copilot endpoints Until zero egress off

Adaptive tiers (joingroveGlobalSouth / startup)

Profile RAM hint Default model tier
Lite ≤ 8 GB qwen2.5-coder:1.5b
Standard 16 GB+ qwen2.5-coder:7b
Full High-spec User choice

Commands

Command ID
Toggle zero egress joingrove.toggleZeroEgressMode
Security mode wizard joingrove.securityModeWizard
Telemetry dashboard joingrove.openTelemetryDashboard
Set up Ollama joingrove.setupOfflineAi

Setup & Installation

  1. Default: zero egress ON — all traffic stays local except loopback + configured allowlist.
  2. Command Palette → Open Transparent Telemetry Dashboard to inspect blocked/allowed hosts.
  3. For Studio cloud → security wizard or joingrove.offline.allowPlatformRequests.
  4. For billing → joingrove.offline.allowBillingRequests when checking out Team tier.

Code Examples

Toggle egress (shows current state in notification):

Command Palette → joingrove.toggleZeroEgressMode

Verify egress policy in CI:

npm run verify-offline-first

Next: Read generated egress.md for host allow/block tables.


How It Connects