Don't want to build from source? Download ContextUI for macOS, Windows, and Linux — free, no account required.
- Node.js 18+ (recommended: 20 LTS)
- npm 9+ (comes with Node)
- Git
Python is not required upfront — ContextUI can download and install Python automatically when a workflow needs it.
git clone https://github.com/contextui-desktop/contextui.git
cd contextui
npm install
npm run electron:devThe app will open in development mode with hot-reload enabled.
Install Xcode Command Line Tools (required for native module compilation):
xcode-select --installIf you encounter gyp errors during npm install, ensure the tools are properly installed.
Install Visual Studio Build Tools with the "Desktop development with C++" workload. This provides the MSVC compiler and Windows SDK needed for native modules.
sudo apt-get install build-essential libx11-dev libxkbfile-dev libsecret-1-devFor RPM-based distros, install the equivalent -devel packages.
npm run electron:buildThis uses electron-builder to produce platform-specific installers in the release/ directory:
- macOS:
.dmg - Windows:
.exe(NSIS installer) - Linux:
.deb
ContextUI manages Python automatically. When you open a workflow that needs a Python backend, the app will:
- Detect any existing Python installation on your system
- Download and install Python if needed (3.11, 3.12, or 3.13)
- Create and manage virtual environments per workflow
- Install required pip packages automatically
No manual Python setup is required. Virtual environments are stored in ~/ContextUI/<profile>/python_venvs/.
If you prefer to use your own Python installation, just ensure python3 (macOS/Linux) or python (Windows) is on your PATH and the app will detect it.
- macOS: Run
xcode-select --install - Windows: Install Visual Studio Build Tools with C++ workload
- Linux: Install
build-essential
- Delete
node_modulesandpackage-lock.json, then runnpm installagain - Ensure Node 18+ is active:
node --version
- Check
~/ContextUI/<profile>/python_venvs/for venv data — deleting stale venvs there can fix corruption - Look at the DevTools console (View > Toggle Developer Tools) for Python-related errors
The tool registry server runs on port 8800. If another process is using it:
lsof -i :8800 # macOS/Linux
netstat -ano | findstr :8800 # WindowsKill the conflicting process or change the port in electron/tool-registry-server.cjs.
Ensure you're using the arm64 version of Node.js, not the x64 version running under Rosetta.