One Codebase.
Painted on Every Piece of Glass.
NvAssistant is a voice-first AI assistant with a single Flutter UI that renders natively on web, iPad, iPhone, and Android — all driven by one powerful Python gateway that owns every model, audio, identity, and storage decision. The app paints the glass; the gateway does the thinking.
Paint once.
Render everywhere.
The heritage runs deep. From the CIO 100–winning “any piece of glass” platform at Trust Company of America to Notovision today, the goal never changed: deliver one exceptional experience across every device — without forking the codebase.
NvAssistant delivers on that promise with Flutter. A single Dart codebase compiles to native iOS, native Android, and a web app — the same chat, the same voice, the same live panels, pixel-for-pixel, on a phone, a tablet, or a browser.
- Native iOS & Android — not a wrapped web view
- Installable web app (WASM / JS) served as a PWA
- Responsive by design — split view on tablets, chat-only on phones
- Runtime branding — swap logo, palette & login art with no rebuild
A Thin Client Backed by a Powerful Gateway
All the intelligence lives server-side. The Flutter app stays small and uniform while a single Python / FastAPI gateway routes models, runs the voice pipeline, guards identity, and persists everything — over one WebSocket.
Web · iOS · Android
renders & captures
FastAPI · one WebSocket
JSON + audio frames
reasoning · tools
sub-agent orchestration
models, skills
& live tools
The Gateway thinks & speaks
Owns the native WebSocket protocol, STT/TTS voice, model routing (NvAgent / Ollama / Langflow), JWT identity, and persistence. One well-tested engine, independent of any UI.
The App renders & captures
Draws the conversation, streams the turn, captures the microphone with on-device neural voice detection, plays audio, and hosts the live DAG panel. Small, uniform, cheap to evolve.
Built for Real Conversations
Streaming chat, hands-free voice, a live look inside the agent's mind, and files in & out — on every device.
Real-Time Streaming Chat
One WebSocket carries the whole turn — your message, the streamed answer, agent progress, files, and spoken audio — as a typed JSON envelope. No polling, no Socket.IO.
Live “Thinking” Channel
Watch reasoning, tool calls, skill activations, and sub-agent milestones stream while you wait. Verbosity is yours to set with /display.
Hands-Free Voice
On-device Silero neural VAD detects speech start/stop, sends just the clip to Whisper, and speaks the reply with Kokoro. Continuous mode keeps a true hands-free conversation.
Native DAG Monitor
A live, in-app graph of the orchestrator's sub-agents — recoloring as they run, fanning MCP tools & skills as pills, with pan / zoom / drag and pop-out.
History & Resume
A searchable drawer of past threads. Open one and the session rehydrates — the next turn continues with full context, across devices.
Attachments & Files
Upload CSV, XLSX, PDF, DOCX, images & text into a turn; agent-produced files stream back as inline previews and download links.
Two Tiers. One Contract.
A Flutter presentation tier and a Python engine tier, joined by a single explicit WebSocket protocol. Connect, don't absorb: NvAgent, Speaches & Keycloak are integrated, never rebuilt.
The Same App, Everywhere
Chat and the live DAG monitor side-by-side on the web and iPad; a focused, chat-only experience on the phone.


Bring NvAssistant to
Your Enterprise
Voice-first AI, one Flutter codebase across every device, and a gateway you fully own. Let's talk about a pilot, a keynote, or a build.