Skip to content

Chat Interface

The chat interface is Skippy's primary interaction method - a floating, always-on-top window for instant AI access.


Window Design

Layout

┌─────────────────────────────────────────┐
│  🍺 Skippy         ⚡ ● ━ ✕            │  ← Header
│     the Magnificent                     │
├─────────────────────────────────────────┤
│                                         │
│  You: What's the weather?               │  ← Chat Display
│                                         │
│  🍺 Skippy: Let me check the weather    │
│  for you...                             │
│                                         │
├─────────────────────────────────────────┤
│  Session: main | Model: claude-4 | 2.5k │  ← Status Bar
├─────────────────────────────────────────┤
│  Ask Skippy anything...      🎤    ➤    │  ← Input Area
└─────────────────────────────────────────┘

Header Elements

Element Description
🍺 Avatar Skippy's beer emoji (customizable)
Title "Skippy the Magnificent"
🔊/🔇 TTS toggle button
Streaming indicator (green=active)
Connection status dot
Minimize to tray
Quit application

Chat Display

Message Types

Your Messages

You: Your message appears in light blue

Skippy's Responses

🍺 Skippy: Responses appear in gold with streaming animation

System Messages

WhatsApp sync: ON 📱

WhatsApp Messages

📱 WhatsApp: Messages from phone appear in green

Thinking Display

When enabled, Skippy shows its reasoning process:

Thinking Block

🧠 Thinking

The user is asking about weather. I should use the web_search tool to get current conditions for their location...

Toggle via:

  • Tray menu → 🧠 Show Thinking
  • Or modify show_thinking in config.json

Input Methods

Text Input

  1. Click the input field
  2. Type your message
  3. Press Enter or click

Auto-Focus

When you activate the window (click it or use tray), the input field automatically focuses.

Image Input

  1. Copy an image:
    • Screenshot (Win+Shift+S)
    • Right-click image → Copy
    • Any image in clipboard
  2. Focus Skippy's input field
  3. Press Ctrl+V
  4. Image preview appears
  5. Type optional question
  6. Press Enter

Preview Display:

📷 Image (1920x1080) - Enter to send

Images are automatically:

  • Saved to temp/latest_image.png
  • Scaled down if >4MB (for vision model limits)
  • Referenced in the message for AI analysis

Voice Input

See Voice Input for detailed voice instructions.


Streaming Responses

How It Works

When using WebSocket streaming:

  1. You send a message
  2. Connection to OpenClaw gateway
  3. Response streams in real-time (word by word)
  4. Cursor (▌) shows active streaming
  5. Final response displayed when complete

Status Updates During Response

Status Meaning
🧠 Thinking... Processing your request
🔧 web_search... Using a tool
🔧 exec... Running a command
Ready Response complete

Conversation History

Session Persistence

Skippy maintains conversation history via OpenClaw sessions:

  • Session ID: Configured in config.json (default: "skippy-desktop")
  • History Location: ~/.openclaw/agents/main/sessions/<session_id>.jsonl

Loading History

Access via tray menu → 📜 Load Recent History

This displays:

  • Current session information
  • Model being used
  • Token count
  • Last activity channel

Metadata Display

After each response, the status bar shows:

1.2s • Claude 4 Sonnet • 2.5k • $0.0034
Metric Description
Time Response duration
Model AI model used
Tokens Total tokens (k = thousands)
Cost Estimated cost

Keyboard Shortcuts

Shortcut Action
Enter Send message
Ctrl+V Paste image
Escape Minimize to tray

Window Behavior

Always On Top

Skippy stays above other windows for quick access. To temporarily hide:

  • Click to minimize to tray
  • Double-click tray icon to restore

Dragging

Click and drag anywhere on the window (except input field) to reposition.

Default Position

On startup, Skippy positions itself in the bottom-right corner of your primary monitor, 20 pixels from the edge.


Connection Modes

WebSocket Streaming (Preferred)

  • Green dot and ⚡ indicator
  • Real-time streaming responses
  • Lower latency

CLI Fallback

  • Orange dot
  • Uses openclaw agent command
  • Full response appears at once
  • Automatic fallback if WebSocket fails

Check connection status:

openclaw gateway status

Customization

Window Size

Fixed at 450x450 pixels for consistent display.

Colors

Current theme (dark mode):

  • Background: #1a1a2e#16213e gradient
  • Text: #e0e0e0
  • Accent: #FFD700 (gold)
  • Your messages: #4FC3F7 (light blue)
  • Skippy: #FFD700 (gold)
  • WhatsApp: #25D366 (green)

Modify in apply_styles() method in skippy.py.