A desktop and mobile client for OpenClaw. Built with Electron, React, TypeScript, and Capacitor.
OpenClaw is an open-source AI assistant platform that lets you run, customize, and orchestrate AI agents on your own infrastructure.
PRSM connects to your OpenClaw gateway over WebSocket and gives you a native interface to chat with agents, manage skills and cron jobs, edit workspace files, and record voice notes — on Windows, Linux, and Android.
Chat interface with session sidebar and skills panel
Grab the latest release from GitHub Releases.
| Platform | Artifact | Description |
|---|---|---|
| Windows | PRSM-Setup-{version}.exe |
NSIS installer — installs to Program Files, creates shortcuts |
| Windows | PRSM-Portable-{version}.exe |
Single-file portable — no installation needed |
| Linux | PRSM-{version}-linux-x64.AppImage |
AppImage — chmod +x and run |
| Android | PRSM-{version}-android.apk |
APK — sideload on any Android device |
- Real-time streaming — responses render token-by-token as the agent thinks
- Image attachments — paste from clipboard, drag-and-drop, or pick from file system (auto-compressed to stay under the 25 MB WebSocket limit)
- Voice notes — record audio, transcribe via any Whisper-compatible STT service, insert as text
- Pinned messages — star important messages; pins persist locally across sessions
- Full markdown rendering — fenced code blocks with syntax highlighting, tables, links, lists
- Thinking mode toggle — enable extended thinking; reasoning steps render as compact, collapsible blocks
- Ctrl+Enter to send — on desktop, Enter inserts a newline; Ctrl+Enter sends the message
- Multi-session management — create, switch, rename, and delete chat sessions
- Name sessions on creation — optionally label a new chat when you start it
- Session search/filter — search sessions by name in the sidebar
- Agent profiles — view and edit agent workspace files (SOUL.md, MEMORY.md, ACTIVE-WORK.md, etc.)
- Multi-agent switching — switch between agents from the sidebar
- Skills browser — browse all installed skills with status badges (Ready / Missing / Disabled)
- Skill details — view documentation, required binaries, enable/disable
- Cron job viewer — inspect scheduled tasks, job configuration, and run history
- Dark & light themes — toggle manually or follow system preference
- Desktop notifications — get notified when an agent responds in the background
- Secure token storage — credentials encrypted via Electron's
safeStorageAPI - Heartbeat filtering — background heartbeat messages hidden from the chat feed
- Auto-updater — check for updates from the sidebar; configurable update policy
- Mobile-optimized UI — responsive layout with slide-out panels, mobile keyboard handling, and touch-friendly controls
- Cross-platform — Windows, Linux, and Android from a single codebase
Screenshots
Agent profile and workspace file editor
Skill detail view with status and documentation
Download the artifact for your platform from the Releases page.
- Windows Installer — run the
.exe, follow the wizard. - Windows Portable — just run the
.exefrom any folder. - Linux —
chmod +x PRSM-*.AppImage && ./PRSM-*.AppImage - Android — enable "Install from unknown sources," then open the APK.
- Open PRSM — on first launch it shows the connection dialog.
- Enter your OpenClaw Gateway URL (e.g.,
ws://192.168.1.50:18789orwss://your-server.com). - Enter your Gateway Token or Password (depending on your gateway's
auth.mode). - Click Save & Connect.
Start a new session, pick an agent, and go. Messages stream in real-time. Use the right panel to browse skills, view cron jobs, or manage pinned messages.
Voice notes let you record audio and have it transcribed to text using any Whisper-compatible speech-to-text (STT) service. Click the microphone button in the input area to configure — or click "Ask your assistant for help" and the agent will walk you through it.
Three fields to fill in:
| Field | What it is |
|---|---|
| Endpoint URL | Full URL to the /v1/audio/transcriptions endpoint |
| Model | The transcription model name |
| API Key | Only needed for OpenAI or other protected endpoints |
OpenAI Whisper API — Easiest, paid ($0.006/min)
- Get an API key at platform.openai.com
- Configure:
- URL:
https://api.openai.com/v1/audio/transcriptions - Model:
whisper-1 - API Key: your OpenAI API key
- URL:
No setup, no servers. Just works. Costs roughly $0.006 per minute of audio.
Speaches — Self-hosted, GPU-accelerated, free
Run on any machine with a GPU (even a modest one):
docker run -d --gpus all -p 8000:8000 \
ghcr.io/speaches-ai/speaches:latest-cudaConfigure:
- URL:
http://<your-server-ip>:8000/v1/audio/transcriptions - Model:
Systran/faster-whisper-large-v3(or any supported model) - API Key: leave empty
CPU-only (slower but no GPU needed):
docker run -d -p 8000:8000 \
ghcr.io/speaches-ai/speaches:latestSee Speaches docs for model options.
LocalAI — Self-hosted, CPU or GPU, free
docker run -d -p 8080:8080 localai/localai:latestConfigure:
- URL:
http://<your-server-ip>:8080/v1/audio/transcriptions - Model:
whisper-1 - API Key: leave empty
See LocalAI docs for setup details.
Groq — Cloud, very fast, free tier available
- Get an API key at console.groq.com
- Configure:
- URL:
https://api.groq.com/openai/v1/audio/transcriptions - Model:
whisper-large-v3-turbo - API Key: your Groq API key
- URL:
Free tier includes audio transcription. Very fast inference.
| Action | Behavior |
|---|---|
| Max duration | 2 minutes — auto-stops with a countdown warning |
| Silence detection | 8+ seconds of silence → auto-stop and transcribe |
| Cancel (✕) | Discard recording without transcribing |
| Stop (■) | Stop and transcribe immediately |
# Clone
git clone https://github.com/CRMbyRSM/PRSM.git
cd PRSM
# Install dependencies
npm install
# Development (Vite hot reload + Electron)
npm run devEvery release MUST include ALL four packages. Use build:release — never build or build:linux alone.
# ✅ CORRECT — builds everything: Windows NSIS + Portable, Linux AppImage, Android APK
npm run build:release
# ❌ WRONG — only builds one platform, not a complete release
npm run build
npm run build:linuxThe build:release script:
- Builds Electron app for Windows (NSIS installer + portable) and Linux (AppImage)
- Builds the mobile web bundle
- Syncs to the Capacitor Android project
- Compiles the Android APK via Gradle
- Copies all artifacts to
release/
First-time Android setup (if android/ directory doesn't exist):
export ANDROID_HOME=/home/riktanius/android-sdk
export ANDROID_SDK_ROOT=/home/riktanius/android-sdk
npx cap add android # only needed once — generates the android/ project
npm run build:releaseSee
RELEASE.mdfor the full release checklist.
npm run build:win # Windows (Setup + Portable)
npm run build:linux # Linux (AppImage)
npm run build:mac # macOS (DMG)
npm run mobile:sync # Build web assets + sync to Android
npm run mobile:android # Open in Android Studio| Dependency | Version | Notes |
|---|---|---|
| Node.js | 18+ | |
| npm | 9+ | |
| Java JDK | 17+ | Required for Android builds |
| Android SDK | API 34+ | Set ANDROID_HOME=/home/riktanius/android-sdk |
| Wine | Any | Required for Windows cross-builds on Linux |
| NSIS | 3+ | Required for Windows installer on Linux (apt install nsis) |
PRSM/
├── electron/ # Electron main process
│ ├── main.ts # App lifecycle, auto-updater, safeStorage
│ └── preload.ts # Context bridge (IPC to renderer)
├── src/
│ ├── App.tsx # Root component, routing
│ ├── main.tsx # Entry point
│ ├── components/
│ │ ├── ChatArea.tsx # Message list, markdown rendering, thinking blocks
│ │ ├── InputArea.tsx # Message input, attachments, voice recording
│ │ ├── Sidebar.tsx # Session list, search, agent selector, update button
│ │ ├── TopBar.tsx # Connection status, theme toggle
│ │ ├── RightPanel.tsx # Skills, cron jobs, pinned messages tabs
│ │ ├── SettingsModal.tsx # Connection + STT configuration
│ │ ├── VoiceSettings.tsx # STT provider setup
│ │ ├── AgentDetailView.tsx # Agent profile and workspace file editor
│ │ ├── SkillDetailView.tsx # Skill docs and status
│ │ ├── CronJobDetailView.tsx # Cron job config and run history
│ │ ├── SubagentBlock.tsx # Sub-agent activity display
│ │ ├── UpdateBanner.tsx # Update notification banner
│ │ ├── CertErrorModal.tsx # TLS certificate error handling
│ │ └── ErrorBoundary.tsx # React error boundary
│ ├── store/
│ │ └── index.ts # Zustand state (sessions, settings, pins — persisted to localStorage)
│ ├── lib/
│ │ ├── openclaw-client.ts # WebSocket client for the OpenClaw gateway protocol
│ │ ├── platform.ts # Platform abstraction (Electron / Capacitor / web)
│ │ └── safe-render.ts # XSS sanitization for rendered content
│ ├── styles/
│ │ └── index.css # CSS with custom properties for dark/light theming
│ └── test/
│ └── setup.ts # Vitest test setup
├── android/ # Capacitor Android project
├── scripts/ # Build and test utilities
├── screenshots/ # README screenshots
└── prsm-icons/ # App icons (all platforms)
The app communicates with the OpenClaw gateway over a single persistent WebSocket connection. All messages, sessions, skills, cron data, and agent workspace files flow through this connection using OpenClaw's native protocol.
npm test # Watch mode
npm run test:run # Single run
npm run test:coverage # With coverage report
npm run typecheck # TypeScript type checking
npm run lint # ESLintPRSM is forked from ClawControl by Jacob L. Edwards / Oaken Cloud Technologies, LLC. The original project provided the foundation that PRSM builds on.
Built for the OpenClaw ecosystem. Join the community on Discord.
Developed and maintained by RSM Consulting — crmbyrsm.com.
MIT — see LICENSE for details.