All work

Alpha · Desktop

VOID Mind

A standalone desktop environment I built for conversation, writing and study, with persistent history, workspace instructions, selected knowledge sources and a choice of ChatGPT or local intelligence.

My roleIndependent product development
Built withTauri, React, TypeScript, Rust, Base UI, Zustand, Vite, Python
The problem
Keep conversations, instructions and selected sources connected across focused work.
My contribution
I designed the desktop experience, conversation core, provider boundaries and workspace context flows.
The result
Windows and Linux alpha with persistent conversations, Workspaces, Knowledge and direct ChatGPT sign-in.
VOID Mind interface
Open full-size image

I built VOID Mind as a standalone desktop environment for conversation, writing and study. It grew out of VOID's local intelligence experiments, but has its own application, repository and conversation model.

Continuity beyond a chat window

Conversations have persistent history, search, pins and editable titles. Responses stream into the reading surface, with Stop, edit, regenerate and copy actions. A new conversation remains a draft until its first message, so opening it repeatedly does not fill the history with empty entries.

I designed Workspaces to hold related conversations, instructions and a preferred provider or model. Knowledge adds explicitly imported Markdown and text sources. A conversation's Context panel lets me choose which sources to include, while the originals remain unchanged.

Choosing intelligence and context

The primary connection uses official Sign in with ChatGPT. There are also separate options for an OpenAI API key and a local llama.cpp server, each behind its own provider contract.

The provider choice follows a defined order: conversation, workspace, then global preference. An unavailable selection produces an error instead of silently switching providers. History stays local; when using a remote provider, the selected context is sent with the conversation.

Authentication, requests and cancellation live in the Rust boundary. Direct connection credentials use the operating system's credential store rather than the frontend or conversation JSON. Local inference uses a loopback server and a model selected by the user.

Separating the interface from the conversation core

The Tauri and React application depends on three TypeScript packages: a framework-independent conversation core, provider contracts and versioned persistence. Editing or regenerating a message preserves the displaced path in the data model while the interface presents one active conversation.

The Python laboratory stays separate from the desktop runtime. It supports datasets, evaluation and model manifests without making training a requirement for using the app.

A focused reading environment

I used black surfaces, glacial-white emphasis, Urbanist headings and Barlow text. Shared Base UI compositions handle controls, dialogs, drawers and scroll areas. The integrated titlebar and restrained navigation leave more space for conversation and source material.

Windows and Linux alpha packages are available, with a signed update feed and installation initiated by confirmation. This stage brings conversations, workspace context and provider selection together; automatic memory, retrieval indexing and autonomous agents remain outside the current scope.

Explore more work Get in touch