No description
- TypeScript 70.4%
- CSS 28.4%
- JavaScript 0.7%
- HTML 0.5%
Introduces end-to-end remote model management in the desktop app: shared contract types, secure model/key persistence in the main process, provider model discovery and connection testing, and preload IPC methods exposed to the renderer. Adds a new Models settings page in the UI (with add/list/test/remove flows) and updates Electron config/main window setup to load preload as CJS and tighten navigation/trusted IPC handling. |
||
|---|---|---|
| apps | ||
| packages | ||
| .editorconfig | ||
| .gitignore | ||
| .prettierrc.json | ||
| eslint.config.js | ||
| package-lock.json | ||
| package.json | ||
| PROJECT_CONTEXT.md | ||
| README.md | ||
| tsconfig.base.json | ||
MioChat
MioChat is a desktop AI workspace scaffold built with Electron, React, Vite, and Radix UI. The backend is split into an HTTP API and a background-task process, with shared TypeScript contracts.
Workspace
apps/desktop— Electron main/preload processes and React rendererapps/api— Fastify HTTP APIapps/tasks— background task worker processpackages/contracts— shared API and domain contractspackages/task-core— task lifecycle primitives and initial in-memory storePROJECT_CONTEXT.md— long-term product and architecture direction
Requirements
- Node.js 22+
- npm 10+
Start development
npm install
npm run dev
The root postinstall downloads Electron's platform runtime. If an interrupted install leaves the Electron package without its executable, rerun npm run postinstall.
The API listens on http://127.0.0.1:4310; the task process exposes a health listener on http://127.0.0.1:4311; Electron launches the Vite renderer.
Validation
npm run typecheck
npm run build
npm run lint
npm run format:check
The initial task store is intentionally in-memory. The contracts and service boundary are prepared for a persistent database and durable queue in a later vertical slice.