Native GPT
What it is
Native GPT (working title; formerly AgentGPT Desktop) is a chat app that runs entirely on your hardware. A Tauri shell hosts an embedded web server, and the same React codebase serves both the desktop webview and an installable mobile PWA — so I can talk to local models from my phone on the same network via Tailscale. It’s model-agnostic: it works with my DGX Spark cluster or any provider.
Why I built it
Most “local AI” apps either live entirely in Electron or pin you to one provider. I wanted a native-feeling desktop client that could also be a mobile PWA, with a real agent loop that can call tools and take actions — not just a prompt box. Amazon’s Strands Agents SDK gives me a clean agent runtime, so the app is more of a thin, polished shell around a proper agent.
Repository layout
apps/ui— React 19 + Vite web app (desktop webview + mobile PWA, one codebase)apps/host— Rust/Tauri host: axum HTTP+WS server, SQLite, keychain, sidecar supervisorapps/agent-runtime— Python Strands sidecar (NDJSON over stdio, uv-managed)packages/protocol-types— NDJSON/WS message schemas (source of truth)packages/design-system— design tokens and Tailwind themedocs/architecture— architectural decision records
How it fits together
┌──────────────┐ WebSocket / NDJSON ┌─────────────────────┐
│ React 19 │◄──────────────────────►│ Rust / Tauri host │
│ UI + PWA │ │ axum · SQLite │
└──────────────┘ │ keychain · supervisor│
└──────────┬───────────┘
│ NDJSON over stdio
┌──────────▼───────────┐
│ Python Strands │
│ agent sidecar (uv) │
└──────────┬───────────┘
│ REST/completions
┌──────────▼───────────┐
│ Local model endpoint │
│ (DGX Spark cluster) │
└──────────────────────┘
Tech stack
- Tauri · Rust — axum HTTP+WS host, SQLite, OS keychain, sidecar supervision
- React 19 · Vite · TypeScript — one UI for desktop and PWA
- Python · Amazon Strands Agents SDK — agent runtime sidecar
- Tailscale — private remote access for the mobile PWA
Status
Private — not yet public. Iterating on the agent loop and shell polish.