Portfolio/Blog

Native GPT

A local-first, model-agnostic AI chat application — Tauri desktop shell with an embedded web server, reachable from mobile browsers as an installable PWA over Tailscale. Agent loop powered by Amazon's Strands Agents SDK.
Private repo

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

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

Status

Private — not yet public. Iterating on the agent loop and shell polish.