Apps and client surfaces¶
The primary UI is one adaptive Flutter application backed by shared Dart models, REST/WebSocket clients, repositories, and UI tokens. The full experience is currently developed for Windows desktop first; the same source adapts at a 720 px breakpoint for wide and mobile layouts.
Full Flutter client¶
- Workspaces: create, select, edit, and delete; configure descriptions, default models, absolute roots, per-root retrieval, operation approvals, and tool allowlists.
- Threads and chat: create or continue threads, stream replies, cancel active sends, select models, configure thread tools, approve tool calls, copy messages, and attach active or
#-tagged files. - Attachments: up to 5 files, 2 MiB per file, and 8 MiB total per message.
- Files: browse scoped trees, refresh, create files/folders, move by drag and drop, edit text, and open image, PDF, and DOCX previews.
- Configuration: encrypted model and configured-tool CRUD, light/dark/device themes, accent colors, sidebar side, and six wide-layout panel orders.
- Accounts: email/password sign-in, email-code sign-up, session restoration, connected-provider status, and sign-out through the engine.
Wide layouts can show reorderable/resizable context, chat, and main panels around a left or right sidebar. Narrow layouts use an app bar, navigation drawer, and one primary content area. Web uses the same responsive UI but needs an explicitly reachable engine; it cannot use native runtime-file discovery, window composition, or Windows Firewall integration.
Platform matrix¶
| Surface | Connection | Scope and status |
|---|---|---|
| Windows desktop | Discovers local runtime.json; can expose/copy LAN endpoint details |
Full client and first release target; source-only today |
| Flutter web | Explicit engine URL and token | Full responsive source UI; browser origin must be allowed |
| Android/mobile | Session-only host, port, and token form | Full narrow UI source target; intended for trusted-LAN engine access |
| iOS | Same mobile scaffold | Present in source, not currently release-verified |
| Linux and macOS | Native Flutter scaffolds | Present in source, not currently release-verified |
On Windows, the settings UI can request an administrator-approved, local-subnet firewall rule for the active engine port. The engine must also be started with --lan; removing the rule does not change engine binding.
Dart terminal UI¶
The separate TUI connects using compile-time SUBCONSCIOUS_ENGINE_URL and SUBCONSCIOUS_ENGINE_TOKEN values. It can browse workspaces, threads, and messages; refresh; navigate back; compose one streaming chat turn; and quit with q or Ctrl+C.
It does not create workspaces or threads and does not expose files, attachments, approvals, model/tool configuration, retrieval controls, or settings. Launch it directly with Dart—the subconscious tui Python command is currently a stub.
Chromium extension¶
The Manifest V3 popup asks for per-origin host access only when connecting and stores its endpoint/token in chrome.storage.local. It supports health/connect/disconnect, workspace and thread list/create, transcripts, streaming chat, and listing the top level of configured workspace roots.
It has no content scripts, service worker, or options page, and it deliberately omits directory navigation, editing/previews, attachments, models, tools, and retrieval administration. Load it unpacked from apps/chromium_extension; the subconscious extension Python command is currently a stub.
Joining tokens are credentials
Mobile, web, TUI, and Chromium connections use the engine’s bearer token. Keep it out of URLs, logs, screenshots, and source control. Current LAN transport is plain HTTP/WebSocket, so use only a trusted local network.