PuPu is a lightweight, cross-platform desktop AI client that works with both local and cloud-hosted models. Whether you prefer running models on your own machine or connecting to providers like OpenAI and Anthropic, PuPu gives you a unified, elegant interface — your AI, your rules.
please star the repo if you find it interesting! ⭐
Runs natively on macOS, Windows, and Linux. Connect to local models via Ollama or use cloud providers like OpenAI and Anthropic — all from the same beautiful interface.
Attach a workspace and let AI read, edit, and manage your local files directly. PuPu bridges the gap between your AI conversations and your actual project files.
Organize conversations with ease — pin, search, and manage multiple chat sessions. A refined chat experience designed for productivity, not clutter.
- Agent Builder — Create custom AI agents tailored to your workflows
- Agent Teams & Skills — Orchestrate multiple agents working together with specialized capabilities
- MCP Integration — Connect to the Model Context Protocol ecosystem for extended tool use and context sharing
- Download the
.exeWindows installer here. - Run the installer and follow the instructions.
- Once the installation is complete, you can find the app in the start menu.
- Download the
.dmgMac installer here. - Open the downloaded file and drag the app to the Applications folder.
- Once the installation is complete, you can find the app in the Applications folder.
- Download the
.debor.AppImagefile here. - If you downloaded the
.debfile, run the following command in the terminal:
sudo dpkg -i PuPu-0.1.0.debOR
sudo apt install ./PuPu-0.1.0.deb- Ensuring Proper Sandbox Permissions: If you encounter an error message about sandbox permissions, you can run the following command:
sudo chown root:root /opt/PuPu/chrome-sandbox
sudo chmod 4755 /opt/PuPu/chrome-sandboxPuPu starts a local Miso sidecar process when running the Electron app.
In development, PuPu looks for a valid Miso source in this order:
MISO_SOURCE_PATH(if set)- sibling folder
../miso
A valid Miso source must contain:
miso/__init__.pymiso/broth.py
Recommended setup:
- Put the Miso repo next to PuPu:
# parent folder of PuPu
cd ..
git clone <your-miso-repo-url> miso
cd PuPu- Create a Python environment for the PuPu sidecar runtime:
python3 -m venv ./.venv
# Mac/Linux:
source ./.venv/bin/activate
# Windows: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
.\.venv\Scripts\activate
pip install -r ./miso_runtime/server/requirements.txt-
Install dependencies for your Miso repo (inside
../miso) based on that repo's instructions. -
Configure Miso runtime environment variables (examples):
# optional if your miso repo is already at ../miso
export MISO_SOURCE_PATH=/absolute/path/to/miso
# optional override for Python executable used to launch miso sidecar
export MISO_PYTHON_BIN=/absolute/path/to/python
# optional (default: ollama)
export MISO_PROVIDER=ollama
# optional (provider-specific default will be used if omitted)
export MISO_MODEL=deepseek-r1:14b
# required when MISO_PROVIDER is openai or anthropic
export MISO_API_KEY=<your_api_key>
# or use provider-specific keys:
# export OPENAI_API_KEY=<your_api_key>
# export ANTHROPIC_API_KEY=<your_api_key>Quick checks:
- If
MISO_PROVIDER=ollama, ensure Ollama is running and the selected model is installed. - Start PuPu with
npm startand confirm Miso status in the app isready.
For packaged apps, build a standalone miso-server binary first:
# macOS arm64
npm run build:miso:macOutput path:
miso_runtime/dist/macos/miso-serverNotes:
- The script is
miso_runtime/scripts/build_miso_server.sh. - Default Miso source is
../miso. Override withMISO_SOURCE_PATHwhen needed. - First run creates
./.venv-miso-buildand installs build dependencies. - First run needs network access to install
pyinstallerand Python deps. - If deps are already prepared, run with
MISO_BUILD_SKIP_INSTALL=1.
- Install dependencies: To run the electron app locally, you need to install the dependencies by running the following command:
npm install
- Rebuild the Electron App: After installing the dependencies, you need to rebuild the electron app by running the following command:
npx electron-rebuild
- Run the Electron App: Once the dependencies are installed, you can run the app by running the following command:
npm start
- Browse built-in Mini UI components: After local startup, open the following page to preview available Mini UI native components:
http://localhost:2907/mini
Build on the target OS host.
- Make sure Miso source exists at
../miso, or set custom path:
export MISO_SOURCE_PATH=/absolute/path/to/miso- Install dependencies:
npm install- Optional cleanup before rebuilding:
# macOS / Linux
rm -rf dist# Windows
Remove-Item -Recurse -Force dist -ErrorAction SilentlyContinuenpm run build:electron:macOutput files:
dist/PuPu-<version>-arm64.dmgdist/mac-arm64/PuPu.app
Use Command Prompt or PowerShell as Administrator for Windows packaging.
Unsigned local build (recommended for development):
npm run pack:win:unsignedSigned release build:
$env:WIN_CSC_LINK="C:\path\to\codesign.pfx"
$env:WIN_CSC_KEY_PASSWORD="your_password"
npm run pack:winOutput files:
dist/PuPu Setup <version>.exedist/win-unpacked/PuPu.exe
If you see Cannot create symbolic link : A required privilege is not held by the client, clear cache and rebuild in an Administrator shell:
Remove-Item -Recurse -Force "$env:LOCALAPPDATA\electron-builder\Cache\winCodeSign"
npm run pack:winnpm run build:electron:linux

