A mobile-first web IDE with AI chat, terminal, git, database tools, and file explorer — all in one browser tab.
| Desktop | Mobile |
|---|---|
Two ways to install:
- Binary — no dependencies, bundles its own runtime. Best for new users.
- Via Bun — requires the Bun runtime installed first (
bunx/bun add -g/ non-interactive setup all need it).
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/hienlh/ppm/main/scripts/install.sh | shWindows (PowerShell):
irm https://raw.githubusercontent.com/hienlh/ppm/main/scripts/install.ps1 | iexDownloads the latest binary, adds to PATH, and shows next steps. To upgrade, run the same command again.
# 1. Install Bun (if you don't have it)
curl -fsSL https://bun.sh/install | bash
# 2. Run directly (no install needed)
bunx @hienlh/ppm start
# Or install globally
bun add -g @hienlh/ppm
ppm startNote: The
bunx/bunmethod requires Bun runtime. The binary install method has no dependencies.
On first run, PPM walks you through interactive setup: port, auth password, project scan directory, and AI settings. Config is stored in ~/.ppm/ppm.db (SQLite).
After setup, open the URL shown in terminal and enter your access password.
- AI Chat — Claude AI with tool execution, file attachments, streaming, session history, slash commands
- Terminal — Full PTY terminal (xterm.js), multiple sessions per project
- File Explorer — Browse, edit, create, delete files with Monaco editor
- Git — Status, diff, commit, push/pull, branching, merge, rebase, commit graph
- Database — SQLite + PostgreSQL viewer with query editor, data grid, cell editing
- Notifications — Web Push + Telegram bot integration
- Remote Access — Cloudflare tunnel for public URL sharing (always enabled)
- Command Palette — Fuzzy search for commands, files, tables (Shift+Shift or F1)
- PWA — Installable as a progressive web app
- Mobile-First — Responsive UI with bottom sheets and touch optimization
# Server
ppm start # Start (background daemon, port 3210, tunnel auto-enabled)
ppm start -f # Foreground mode (for debugging)
ppm start -p 4000 # Custom port
ppm stop # Stop daemon
ppm restart # Restart
ppm status # Show status
ppm open # Open in browser
ppm logs -f # Tail logs
# Projects
ppm projects list
ppm projects add my-app /path/to/my-app
ppm projects remove my-app
# Git
ppm git status
ppm git log
ppm git commit -m "message"
ppm git push
# Database
ppm db connections # List DB connections
ppm db query my-db "SELECT * FROM users LIMIT 10"
# Config
ppm config get port
ppm config set port 4000
# Chat (CLI mode)
ppm chat
# Other
ppm init # Re-run setup wizard
ppm report # File bug report on GitHubFor scripts, CI environments, or AI agents that cannot interact with prompts:
Prerequisite: This method uses
bunx, so Bun must be installed first (curl -fsSL https://bun.sh/install | bash). If you can't install Bun, use the dependency-free Binary install instead.
# Step 1: Init without any prompts (uses defaults, auto-generates password)
bunx @hienlh/ppm init -y
# Step 2: Start with Cloudflare tunnel in foreground
bunx @hienlh/ppm start -fThe -y flag skips all prompts and applies these defaults:
- Port:
3210 - Scan directory:
$HOME - Auth: enabled, password auto-generated (printed at end of
initoutput) - AI model:
claude-opus-4-8
Override any default with flags:
bunx @hienlh/ppm init -y \
--port 3210 \
--password "your-password" \
--scan /path/to/projectsOnce running, the Cloudflare public URL is printed to stdout — parse it to share with users.
Install the PPM skill so Claude Code (and other compatible AI agents) can control PPM via its CLI, HTTP API, and SQLite config DB:
ppm export skill --install
# Installs to ~/.claude/skills/ppm/ (use --scope project for per-project install).Then in Claude Code: /ppm list my projects → Claude invokes ppm projects list automatically. Re-run any time to refresh (existing files are backed up with a .bak-<timestamp> suffix). Requires PPM v0.13.0+.
- Bun v1.3.6+ (install)
- Git v2.0+ (for git features)
- Claude Code authenticated (
claudeCLI logged in) — for AI chat
git clone https://github.com/hienlh/ppm.git
cd ppm && bun install
bun dev:server # Backend (port 8081, uses dev profile)
bun dev:web # Vite frontend (port 5173)
bun test # Run tests
bun run build # Build frontend + CLI binary -> dist/ppmDev uses a separate SQLite database (ppm.dev.db) from production (ppm.db), both in ~/.ppm/.
For architecture details, API reference, and contribution guidelines, see the docs directory.
| Doc | Purpose |
|---|---|
| Project Overview | Goals, features, decisions |
| System Architecture | Layers, protocols, data flows |
| Codebase Summary | Module responsibilities |
| Code Standards | Conventions and patterns |
| Deployment Guide | Installation, config, troubleshooting |
| Design Guidelines | UI framework, colors, components |
| Project Roadmap | Status and plans |
- SDK .env poisoning: Projects with
ANTHROPIC_API_KEYin.envcan break SDK tool execution. PPM neutralizes these vars automatically. - Windows: SDK uses CLI fallback (
claude -p) due to Bun pipe buffering issues. Ensureclaudeis in PATH.
Issues: GitHub