🐈⬛🪶 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.