Skip to content

itsnex1s/MacClaw

Repository files navigation

MacClaw

Spotlight / Raycast-style macOS client for OpenClaw
Talk to your OpenClaw gateway from a global hotkey — without leaving your current app.

License: MIT Version 0.1.0 macOS 11+ Tauri v2 Rust 1.77+ React 19 TypeScript 5.8


MacClaw is a native macOS desktop client for OpenClaw. Press a global hotkey, type a prompt, and get a streaming AI answer — powered by your OpenClaw gateway.

MacClaw demo

Features

Feature Description
⌨️ Global hotkeys Summon the panel from anywhere with Cmd+Shift+Space, Cmd+Shift+K, or Alt+Space
Compact idle strip Minimal floating bar that stays out of the way
💬 Streaming responses Auto-resizing panel with live markdown rendering via OpenClaw chat protocol
🔌 Slash commands /connect, /status for quick OpenClaw gateway management
🎨 macOS vibrancy Native blur-through glass effect (HUD window material)
🔒 Secure credentials Tokens saved via Tauri filesystem; localStorage fallback never stores secrets
🔄 Auto-reconnect Re-establishes OpenClaw connection each time the panel is shown
📋 Copy to clipboard One-click copy of any response

Quick Start

Prerequisites

Dependency Version
Node.js >= 18
Rust >= 1.77.2
macOS >= 11.0 (Big Sur)
Running OpenClaw gateway any

Install & Run

# 1. Install dependencies
npm install

# 2. Launch in dev mode
npm run tauri dev

The panel starts hidden. Press Cmd+Shift+Space to toggle it.

Build for Production

npm run tauri build

The .app bundle will be in src-tauri/target/release/bundle/.


Connecting to OpenClaw

  1. Make sure your OpenClaw gateway is running
  2. Press the hotkey to open the panel
  3. Type /connect and press Enter
  4. Enter your OpenClaw gateway URL (e.g. ws://127.0.0.1:19819) and optional token
  5. Click Connect

The status dot in the input bar shows connection state:

Color State
⚪ Gray Disconnected
🟡 Yellow Connecting to OpenClaw
🟢 Green Connected
🔴 Red Error

Keyboard Shortcuts

Shortcut Action
Cmd+Shift+Space Toggle panel
Cmd+Shift+K Toggle panel (alt)
Alt+Space Toggle panel (alt)
Enter Send prompt / submit form
Escape Hide panel
Arrow Up / Down Navigate command hints
Tab Autocomplete slash command

Slash Commands

Command Description
/connect Open OpenClaw gateway connection form
/status Show current gateway URL, connection state, and token status

Architecture

src/                          # React + TypeScript frontend
  App.tsx                     # Orchestration and UX flow
  components/
    CommandInput.tsx           # Input bar with status indicator
    CommandHints.tsx           # Autocomplete dropdown for slash commands
    ConnectForm.tsx            # OpenClaw gateway URL + token form
    ResponsePanel.tsx          # Streaming markdown response display
  lib/
    ws-client.ts               # WebSocket client (OpenClaw JSON-RPC protocol)
    commands.ts                # Slash command parsing and matching
    settings.ts                # Settings persistence (Tauri + localStorage fallback)
    panel-window.ts            # Window resize helpers
    __tests__/                 # Unit tests (Vitest)

src-tauri/                     # Rust backend (Tauri v2)
  src/main.rs                  # Global shortcuts, vibrancy, credentials, window lifecycle
  Cargo.toml
  tauri.conf.json

Development

npm run lint            # ESLint
npm run typecheck       # TypeScript type check
npm run test            # Vitest unit tests
npm run format:check    # Prettier check
npm run check           # lint + test + build (all-in-one)

Rust checks:

npm run rust:fmt:check  # cargo fmt
npm run rust:clippy     # cargo clippy
npm run check:all       # frontend + Rust (full CI)

Contributing

Contributions are welcome! Please read CONTRIBUTING.md before submitting a PR.

Security

Found a vulnerability? See SECURITY.md for responsible disclosure guidelines.

License

This project is licensed under the MIT License.

About

Raycast-style macOS client for OpenClaw

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors