EasyClaw is a desktop application designed to simplify the use of OpenClaw for non-engineers. It provides an intuitive interface and local web panel, enabling users to manage AI agents without technical expertise.
Key Features:
Natural Language Rules: Users can define rules in plain language, which are compiled into policies or skills without requiring a restart.
Multi-Provider LLM Support: Compatibility with over 20 providers, including OpenAI and Anthropic, along with subscription plans for easy access.
OAuth & Subscription Plans: Streamlined sign-in via Google or connection to Claude/Anthropic subscriptions, eliminating the need for API keys.
Visual Permissions: Control file access through a user-friendly interface, ensuring security without technical setup.
Audience & Benefit:
Ideal for non-programmers such as designers and small business owners, EasyClaw empowers users to leverage AI agents effectively without dealing with complex configurations or terminal commands.
OpenClaw is a powerful agent runtime — but it's built for engineers. Setting it up means editing config files, managing processes, and juggling API keys from the terminal. For non-programmers (designers, operators, small business owners), that barrier is too high.
RivonClaw wraps OpenClaw into a desktop app that anyone can use: install, launch from the system tray, and manage everything through a local web panel. Write rules in plain language instead of code, configure LLM providers and messaging channels with a few clicks, and let the agent learn your preferences over time. No terminal required.
In short: OpenClaw is the engine; RivonClaw is the cockpit.
Features
Natural Language Rules: Write rules in plain language—they compile to policy, guards, or skills and take effect immediately (no restart)
Multi-Provider LLM Support: 20+ providers (OpenAI, Anthropic, Google Gemini, DeepSeek, Zhipu/Z.ai, Moonshot/Kimi, Qwen, Groq, Mistral, xAI, OpenRouter, MiniMax, Venice AI, Xiaomi/MiMo, Volcengine/Doubao, Amazon Bedrock, NVIDIA NIM, etc.) plus subscription/coding plans (Claude, Gemini, Zhipu Coding, Qwen Coding, Kimi Code, MiniMax Coding, Volcengine Coding) and Ollama for local models
OAuth & Subscription Plans: Sign in with Google for free-tier Gemini access or connect Claude/Anthropic subscription—no API key needed. Auto-detects or installs CLI credentials
Per-Provider Proxy Support: Configure HTTP/SOCKS5 proxies per LLM provider or API key, with automatic routing and hot reload—essential for restricted regions
Multi-Account Channels: Configure Telegram, WhatsApp, Discord, Slack, Google Chat, Signal, iMessage, Feishu/Lark, LINE, Matrix, Mattermost, Microsoft Teams, and more through UI with secure secret storage (Keychain/DPAPI)
Token Usage Tracking: Real-time statistics by model and provider, auto-refreshed from OpenClaw session files
Speech-to-Text: Region-aware STT integration for voice messages (Groq, Volcengine)
Visual Permissions: Control file read/write access through UI
Zero-Restart Updates: API key, proxy, and channel changes apply instantly via hot reload—no gateway restart needed
: All data stays on your machine; secrets never stored in plaintext
Chat with Agent: Real-time WebSocket chat with markdown rendering, emoji picker, image attachments, model switching, and persistent conversation history
Skills Marketplace: Browse, search, and install community skills from a built-in marketplace; manage installed skills with one click
Auto-Update: Client update checker with static manifest hosting
The monorepo uses pnpm workspaces (apps/*, packages/*, extensions/*) with Turbo for build orchestration. All packages produce ESM output via tsdown.
Apps
Package
Description
@rivonclaw/desktop
Electron 40 tray app. Manages gateway lifecycle, hosts the panel server on a dynamic port, stores data in SQLite.
@rivonclaw/panel
React 19 + Vite 6 SPA. Pages for chat, rules, providers, channels, permissions, STT, usage, skills marketplace, and a first-launch onboarding wizard.
Extensions
Package
Description
@rivonclaw/rivonclaw-policy
Thin OpenClaw plugin shell that wires policy injection into the gateway's before_agent_start hook.
@rivonclaw/rivonclaw-tools
Owner-only custom tools plugin (e.g. system control, desktop integration).
@rivonclaw/rivonclaw-file-permissions
Enforces file access permissions by intercepting and validating tool calls before execution.
@rivonclaw/rivonclaw-mobile-chat-channel
Mobile PWA messaging relay — bridges mobile chat clients to the gateway via WebSocket.
@rivonclaw/rivonclaw-browser-profiles-tools
CDP-based browser profile tool integration for the agent.
@rivonclaw/rivonclaw-capability-manager
Tool capability and surface availability resolver.
@rivonclaw/rivonclaw-event-bridge
Mirrors selected gateway agent events onto the Chat UI stream.
@rivonclaw/rivonclaw-search-browser-fallback
Web-search fallback that uses a headless browser when direct search API fails.
Packages
Package
Description
@rivonclaw/core
Zod-validated types: Rule, ChannelConfig, PermissionConfig, ModelConfig, LLM provider definitions (20+ providers including subscription/coding plans and Ollama), region-aware defaults.
@rivonclaw/gateway
GatewayLauncher (spawn/stop/restart with exponential backoff), config writer, secret injection from system keychain, Gemini CLI OAuth flow, auth profile sync, skills directory watcher for hot reload.
@rivonclaw/logger
tslog-based logger. Writes to ~/.rivonclaw/logs/. Supports DEBUG_* env flags via createQuietLogger for noisy modules (see Debug Flags).
@rivonclaw/plugin-sdk
Thin runtime helpers and shared types for RivonClaw-authored OpenClaw plugins under extensions/.
@rivonclaw/storage
SQLite via better-sqlite3. Repositories for rules, artifacts, channels, permissions, settings. Migration system included. DB at ~/.rivonclaw/rivonclaw.db.
@rivonclaw/rules
Rule compilation, skill lifecycle (activate/deactivate), skill file writer that materializes rules as SKILL.md files for OpenClaw.
@rivonclaw/secrets
Platform-aware secret storage. macOS Keychain, file-based fallback, in-memory for tests.
@rivonclaw/updater
Checks update-manifest.json on the website, notifies user of new versions.
@rivonclaw/device-id
Machine fingerprinting (SHA-256 of hardware UUID) for device identity and quota enforcement.
@rivonclaw/stt
Speech-to-text provider abstraction (Groq for international, Volcengine for China).
@rivonclaw/proxy-router
HTTP CONNECT proxy that routes requests to different upstream proxies based on per-provider domain configuration.
@rivonclaw/telemetry
Privacy-first telemetry client with batch uploads and retry logic; no PII collected.
@rivonclaw/policy
Policy injector & guard evaluator — compiles policies into prompt fragments and guards into enforcement checks.
Scripts
Most root scripts run through Turbo:
pnpm build # Build all packages (respects dependency graph)
pnpm dev # Run desktop + panel in dev mode
pnpm test # Run all tests (vitest)
pnpm lint # Lint all packages (oxlint)
pnpm format # Check formatting (oxfmt, runs directly)
pnpm format:fix # Auto-fix formatting (oxfmt, runs directly)
Per-package
# Desktop
pnpm --filter @rivonclaw/desktop dev # Launch Electron in dev mode
pnpm --filter @rivonclaw/desktop build # Bundle main process
pnpm --filter @rivonclaw/desktop test # Run desktop tests
pnpm --filter @rivonclaw/desktop dist:mac:arm64 # Build macOS DMG (arm64)
pnpm --filter @rivonclaw/desktop dist:mac:x64 # Build macOS DMG (x64)
pnpm --filter @rivonclaw/desktop dist:win # Build Windows NSIS installer
# Panel
pnpm --filter @rivonclaw/panel dev # Vite dev server
pnpm --filter @rivonclaw/panel build # Production build
# Any package
pnpm --filter @rivonclaw/core test
pnpm --filter @rivonclaw/gateway test
The desktop app runs as a tray-only application (hidden from the dock on macOS). It:
Spawns the OpenClaw gateway from vendor/openclaw/
Serves the panel UI and REST API on a dynamically assigned localhost port
Writes gateway config and auth profiles to ~/.openclaw/
Injects secrets (API keys + OAuth tokens) from the system keychain at runtime
Watches ~/.openclaw/skills/ for hot-reload of rule-generated skill files
Syncs refreshed OAuth tokens back to keychain on shutdown
REST API
All Desktop ↔ Panel REST endpoints, SSE streams, and path parameters are declared as a single typed contract in packages/core/src/api/api-contract.ts — both Desktop (route registry) and Panel (fetchJson / EventSource) import from it, so it stays the source of truth.
Gateway configuration (written by @rivonclaw/gateway)
~/.rivonclaw/openclaw/agents//sessions/
Agent session transcripts (JSONL)
~/.rivonclaw/openclaw/skills/
Auto-generated skill files materialized from rules
~/.rivonclaw/openclaw/credentials/
OAuth credential cache (Gemini CLI, Codex)
Building Installers
The dist:mac and dist:win scripts automatically prune and bundle vendor/openclaw before packaging. This reduces the vendor file count and size via esbuild bundling and node_modules pruning. Vendor is copied into the installer via extraResources — the source vendor/openclaw/ is never modified.
better-sqlite3 runs under two runtimes with incompatible ABIs (Node.js for tests, Electron for the app). scripts/rebuild-native.sh compiles it for both and places the binaries in lib/binding/. This runs automatically via the root postinstall hook.
If tests fail with NODE_MODULE_VERSION mismatch after an Electron upgrade:
bash scripts/rebuild-native.sh # rebuild for both ABIs
pnpm --filter @rivonclaw/storage test
pnpm --filter @rivonclaw/gateway test
Debug Flags
Chatty modules default to INFO+ and emit DEBUG only when the matching DEBUG_* env var is set to 1. Flags are registered centrally in packages/logger/src/debug-flags.ts and consumed via createQuietLogger(name, DEBUG_FLAGS.X).