Skip to content

fraction12/ClawK

Repository files navigation

🦞 ClawK

A native macOS companion app for OpenClaw β€” your AI agent's mission control.

macOS Swift License

What is ClawK?

Mission Control

ClawK (sounds like "clock" πŸ•πŸ¦ž) is a menu bar app that gives you real-time visibility into your OpenClaw agent β€” sessions, heartbeats, memory, cron jobs, and more.

Features

🎯 Mission Control

Mission Control

  • Active Sessions β€” all running conversations with token counts, models, and last activity
  • Active Subagents β€” monitor background agent tasks in real-time
  • Heartbeat Monitor β€” timeline graph of agent health checks with status history
  • Model Usage β€” universal token tracking for any AI provider (Claude, GPT, Gemini, etc.), with Claude-specific quota tracking for Claude users
  • Upcoming Crons β€” scheduled jobs and when they fire next
  • Recent Activity β€” latest cron run results with durations and status
  • System Status β€” gateway connection, uptime, version info

🧠 Memory Browser

Memory Browser 3D Visualization

  • File Browser β€” navigate your agent's full memory tree with tiered storage (hot/warm/cold/archive)
  • File Preview β€” syntax-highlighted markdown preview with rendered output
  • 3D Visualization β€” interactive 3D map of your memory embedding space (Three.js)
  • Search β€” search across memory files with results highlighting
  • Memory Not Configured β€” guided onboarding page if no memory system is detected, explaining setup steps and benefits

πŸ“Š Memory Vitals

Memory Vitals

  • Context Pressure β€” monitor how full your agent's context window is with visual progress bars
  • Memory Files Status β€” file health, size, token counts, and staleness indicators
  • Archive Health β€” tier distribution and storage stats across hot/warm/cold/archive
  • Curation Schedule β€” tracks automated memory maintenance crons (or shows setup guidance if none configured)
  • Memory Activity β€” recent memory searches, writes, and most active files

πŸ–ΌοΈ Canvas

Canvas

  • Canvas Status β€” see if a canvas is currently presented, its URL, and dimensions
  • Canvas Controls β€” present URLs, hide canvas, take snapshots
  • JavaScript Execution β€” run JS code directly on the canvas with result display

βš™οΈ Settings

Settings

  • Gateway Configuration β€” URL, token, connection status with live testing
  • Auto-discovery β€” finds your OpenClaw installation automatically
  • Setup Wizard β€” guided first-run experience with gateway token input and validation
  • About β€” version info, app details

πŸ’¬ Send to ClawK

  • ⌘J Message Composer β€” send messages directly to your agent session from the menu bar

πŸ”— Connection

  • Connection Status Banner β€” persistent banner showing gateway connection state across all views
  • Auto-reconnect β€” polls gateway and recovers automatically when connection is restored

Requirements

  • macOS 14.0 (Sonoma) or later
  • OpenClaw installed and running

Installation

Homebrew (recommended)

brew install --cask fraction12/tap/clawk

From Source

git clone https://github.com/fraction12/ClawK.git
cd ClawK
xcodebuild -project ClawK.xcodeproj -scheme ClawK -configuration Release build

The built app will be in build/Build/Products/Release/ClawK.app. Copy it to /Applications/.

Setup

  1. Launch ClawK β€” it lives in your menu bar (🦞)
  2. The setup wizard will auto-detect your OpenClaw installation
  3. Paste your gateway token (find it at ~/.openclaw/gateway.token)
  4. You're connected!

Architecture

ClawK/
β”œβ”€β”€ ClawKApp.swift                  # App entry point, lifecycle
β”œβ”€β”€ AppState.swift                  # Global state (sessions, crons, heartbeat, canvas)
β”œβ”€β”€ MenuBar/
β”‚   β”œβ”€β”€ MenuBarManager.swift        # NSStatusItem, hover popover, window management
β”‚   └── MainWindowView.swift        # Navigation split view, tab routing
β”œβ”€β”€ Views/
β”‚   β”œβ”€β”€ MissionControlView.swift    # Main dashboard with all status cards
β”‚   β”œβ”€β”€ CanvasView.swift            # Canvas monitoring and controls
β”‚   β”œβ”€β”€ SettingsView.swift          # Gateway config, about, setup wizard trigger
β”‚   β”œβ”€β”€ WelcomeView.swift           # First-run setup wizard (3-step onboarding)
β”‚   β”œβ”€β”€ ConnectionStatusBanner.swift # Persistent connection state banner
β”‚   β”œβ”€β”€ SendMessageView.swift       # ⌘J message composer
β”‚   β”œβ”€β”€ ClawKStatusCard.swift       # Heartbeat monitor with timeline chart
β”‚   β”œβ”€β”€ ContentView.swift           # Root content view
β”‚   β”œβ”€β”€ QuickActionsView.swift      # Quick action shortcuts
β”‚   β”œβ”€β”€ Memory/
β”‚   β”‚   β”œβ”€β”€ MemoryBrowserView.swift       # File tree browser with tier sections
β”‚   β”‚   β”œβ”€β”€ MemoryVitalsView.swift        # Memory health dashboard
β”‚   β”‚   β”œβ”€β”€ MemoryFilePreviewView.swift   # Markdown preview with syntax highlighting
β”‚   β”‚   β”œβ”€β”€ MemorySearchResultsView.swift # Search results display
β”‚   β”‚   β”œβ”€β”€ MemoryNotConfiguredView.swift # Onboarding for users without memory system
β”‚   β”‚   β”œβ”€β”€ MemoryTierComponents.swift    # Tier section UI components
β”‚   β”‚   └── Memory3DVisualizationView.swift # 3D embedding space visualization
β”‚   └── Components/
β”‚       β”œβ”€β”€ CustomHeartbeatChart.swift    # Timeline chart for heartbeat history
β”‚       β”œβ”€β”€ ChartData.swift              # Chart data models
β”‚       └── EnhancedQuickStatsView.swift # Stats display components
β”œβ”€β”€ ViewModels/
β”‚   └── MemoryViewModel.swift       # Memory browser state and file loading
β”œβ”€β”€ Services/
β”‚   β”œβ”€β”€ AppConfiguration.swift      # Auto-discovery, paths, gateway config
β”‚   β”œβ”€β”€ GatewayClient.swift         # HTTP client for OpenClaw gateway API
β”‚   β”œβ”€β”€ GatewayConfig.swift         # Token management, gateway URL
β”‚   β”œβ”€β”€ HeartbeatService.swift      # Heartbeat polling and status tracking
β”‚   β”œβ”€β”€ HeartbeatHistoryService.swift # Heartbeat timeline history from JSONL
β”‚   β”œβ”€β”€ MemoryService.swift         # Memory file scanning, tier classification
β”‚   └── QuotaService.swift          # Claude usage quota tracking (optional)
β”œβ”€β”€ Models/
β”‚   β”œβ”€β”€ SessionInfo.swift           # Session data model
β”‚   β”œβ”€β”€ CronJob.swift               # Cron job data model
β”‚   β”œβ”€β”€ HeartbeatModels.swift       # Heartbeat, context pressure, curation models
β”‚   β”œβ”€β”€ MemoryModels.swift          # Memory file, tier, activity models
β”‚   β”œβ”€β”€ ModelInfo.swift             # AI model metadata
β”‚   β”œβ”€β”€ QuotaModels.swift           # Claude quota data models
β”‚   └── CostEstimator.swift         # Token cost estimation
└── DesignSystem/
    β”œβ”€β”€ Colors.swift                # Color tokens and semantic colors
    β”œβ”€β”€ Typography.swift            # Font system (.ClawK namespace)
    β”œβ”€β”€ Spacing.swift               # Spacing tokens and layout constants
    β”œβ”€β”€ DesignSystem.swift          # View modifiers and shared styles
    └── Components/
        β”œβ”€β”€ DSCard.swift            # Card container with status variants
        β”œβ”€β”€ DSHeader.swift          # Page headers with timestamps
        β”œβ”€β”€ DSStatusBadge.swift     # Connection and status badges
        β”œβ”€β”€ DSListItem.swift        # Standardized list row components
        β”œβ”€β”€ DSEmptyState.swift      # Empty state placeholders
        β”œβ”€β”€ DSSkeleton.swift        # Loading skeleton animations
        └── DSRefreshButton.swift   # Animated refresh button

How It Works

ClawK connects to your local OpenClaw gateway (default: http://127.0.0.1:18789) via its REST API. It polls for session data, cron jobs, and system status at regular intervals. The app uses auto-discovery to find your OpenClaw installation β€” detecting the config file, workspace path, and gateway URL automatically.

Privacy & Data Access

ClawK is designed to be transparent about what it accesses:

  • Gateway API (localhost only) β€” All core functionality talks to your local OpenClaw gateway. No data leaves your machine.
  • Claude Quota Tracking (opt-in, Claude users only) β€” If you use Claude as your AI provider, the Model Usage card reads Claude Desktop's encrypted cookies from ~/Library/Application Support/Claude/Cookies to fetch your usage quota from claude.ai/api. This data is used solely to display your quota status and is never stored or transmitted elsewhere.
  • CDN Requests (Memory Browser only) β€” The Memory Browser's file preview and 3D visualization features load JavaScript libraries from cdnjs.cloudflare.com and cdn.jsdelivr.net (highlight.js, marked.js, three.js). These are standard open-source CDN-hosted libraries. No user data is sent to these CDNs.

Contributing

Contributions welcome! Please open an issue first to discuss what you'd like to change.

License

MIT

Built by

Dushyant Garg

About

🦞 ClawK β€” native macOS companion app for OpenClaw. Monitor sessions, heartbeats, memory, and cron jobs from your menu bar.

Resources

License

Stars

3 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors