πββ¬πͺΆ A lightweight, extensible personal AI agent with a modern desktop interface
MiQi Desktop is an Electron-based desktop application that provides a modern graphical interface for the MiQi AI agent. It combines powerful AI agent capabilities with an intuitive user interface, supporting chat interaction, memory management, task scheduling, and more.
| Feature | Description |
|---|---|
| Smart Chat | Natural language conversation with AI agent |
| Multi-provider Support | Supports OpenAI, Anthropic, Gemini, OpenRouter, and more LLM providers |
| Memory System | Manage long-term memory snapshots and self-improvement lessons |
| Session Management | Browse, search, and compact conversation history |
| Task Scheduler | Create and manage scheduled tasks (Cron support) |
| Skill System | Configure and enable various agent skills |
| File Management | Workspace file system operations |
| Real-time Logs | Monitor agent activity and debug information |
- Python 3.11+ - Required to run MiQi backend
- Node.js 20+ - Required to run Electron frontend
- uv - Python package manager (recommended)
# 1. Clone the repository
git clone http://git.miqroera.com/intership/miqi-desktop.git
cd miqi-desktop
# 2. Install Python dependencies
uv sync
# 3. Install frontend dependencies
cd apps/desktop
npm install# Start Electron dev server with hot-reload
cd apps/desktop
npm run dev# Build frontend code
cd apps/desktop
npm run build
# Package as desktop application
npx electron-builder- Launch the application
- Go through the setup wizard
- Configure LLM providers (e.g., OpenAI, OpenRouter)
- Enter your API keys
- Start chatting with the AI agent
Chat Interface
- Markdown format support
- Real-time tool call progress
- Code syntax highlighting
Provider Management
- Add/edit LLM provider configurations
- Test connection status
- Switch default models
Memory Management
- View long-term memory snapshots
- Manage self-improvement lessons
- Import/export memory data
Task Scheduler
- Create scheduled tasks (Cron expressions supported)
- Enable/disable tasks
- Manually trigger task execution
The application configuration file is located at ~/.miqi/config.json and contains the following main configuration options:
{
"providers": {
"openai": { "apiKey": "sk-..." },
"anthropic": { "apiKey": "sk-ant-..." }
},
"agents": {
"defaults": {
"model": "gpt-4o",
"temperature": 0.1,
"maxToolIterations": 50
}
},
"tools": {
"restrictToWorkspace": true
}
}| Variable | Description |
|---|---|
MIQI_PYTHON_PATH |
Custom Python interpreter path |
MIQI_AGENTS__DEFAULTS__MODEL |
Override default model |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MiQi Desktop App β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Electron Frontend β
β βββ React + TypeScript β
β βββ Tailwind CSS β
β βββ shadcn/ui Components β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Bridge (IPC Communication) β
β βββ stdout/stderr JSON protocol β
β βββ State synchronization β
β βββ Log forwarding β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β MiQi Python Runtime β
β βββ AgentLoop (Core agent engine) β
β βββ Memory System β
β βββ Tool Registry β
β βββ Provider Interface β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
miqi-desktop/
βββ miqi/ # Python backend code
β βββ agent/ # Core agent logic
β βββ bridge/ # Bridge service for Electron communication
β βββ providers/ # LLM provider implementations
β βββ ...
βββ apps/
β βββ desktop/ # Electron frontend application
β βββ src/
β β βββ main/ # Main process code
β β βββ renderer/ # Renderer process code
β β βββ preload/ # Preload scripts
β βββ electron-builder.yml
βββ ...
- Python: Ruff for linting
- TypeScript: ESLint for linting
- Commit Messages: Conventional Commits format
# Python backend tests
uv run pytest
# Frontend tests
cd apps/desktop
npm run testContributions are welcome! Please see CONTRIBUTING.md for details.