Skip to content

🫨 Haptic feedback from your coding agents – Get notified physically.

Notifications You must be signed in to change notification settings

devxoul/vibe-haptic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Vibe Haptic 🫨

Haptic feedback from your coding agents.

Vibe Haptic

Get tactile feedback when your AI agent completes tasks, encounters errors, or requests input β€” feel the rhythm of your coding session through your MacBook's trackpad.

Why?

"Why not just use system notifications?"

I tried that. Banners popping up, sounds dinging β€” it felt noisy and annoying. Every notification pulled my eyes away from what I was doing, broke my flow, and honestly just became another thing to dismiss.

I wanted something quieter. A subtle nudge that says "hey, I'm done" without screaming for attention. Something I could feel without having to look. (I'm the kind of person who always has Do Not Disturb on.)

That's what haptic feedback does β€” it's silent, ambient, and stays out of your way until you need it.

How It Works

Modern MacBooks have a Force Touch trackpad that doesn't physically click. Instead, it uses a linear actuator (Taptic Engine) to simulate the sensation of a click through precise vibrations.

Vibe Haptic taps into macOS's private MultitouchSupport.framework to trigger these haptic actuations programmatically. When your AI agent finishes a task or needs attention, the trackpad vibrates with distinct patterns you can feel under your fingers.

Installation

Claude Code

claude plugin marketplace add devxoul/vibe-haptic
claude plugin install vibe-haptic

Or within Claude Code:

/plugin marketplace add devxoul/vibe-haptic
/plugin install vibe-haptic

OpenCode

Add to your opencode.jsonc:

{
  "plugins": [
    "vibe-haptic@1.1.0"
  ]
}

Configuration

Everything works out of the box β€” just install and go. But if you want to tweak the patterns or map different events, here's how.

Configuration File

Create vibe-haptic.json in your config directory:

  • Claude Code: ~/.claude/vibe-haptic.json or .claude/vibe-haptic.json
  • OpenCode: ~/.config/opencode/vibe-haptic.json or .opencode/vibe-haptic.json
{
  "patterns": {
    "success": { "beat": "6/1.5 6/0.8  4/0.5" },
    "error": { "beat": "6/2.0 6/2.0 6/2.0" }
  },
  "events": {
    "stop": "dopamine",
    "prompt": "alert"
  }
}

Events

Events map agent actions to haptic patterns:

Event Trigger Claude Code OpenCode
stop Agent finishes and becomes idle βœ“ βœ“
prompt Agent asks for input (select option, permission, etc.) βœ“ βœ“

Trigger Details

stop event β€” Fires when the agent completes its work:

  • Claude Code: Triggered by the Stop hook event when the agent finishes responding
  • OpenCode: Triggered when session status changes to idle

prompt event β€” Fires when the agent needs your attention:

  • Claude Code: Triggered by Notification hook events (permission requests, tool approvals, etc.)
  • OpenCode: Triggered by permission.updated or question.asked events

Beat Patterns

Haptic feedback is defined using a beat notation:

"6/0.8 4/1.0  6/0.5"
  • Digits (3-6): Actuation strength β€” 3 minimal, 4 medium, 5 weak, 6 strong
  • /intensity: Optional intensity (0.0-2.0) β€” 6/0.5 = strong actuation at half intensity
  • Spaces: Pauses between taps (100ms per space)

Examples:

  • 6 6 6 β€” three strong taps with short pauses
  • 6/2.0 6/0.5 β€” loud tap followed by soft tap
  • 66 β€” rapid double tap (no pause)
  • 6 6 β€” two taps with longer pause

Built-in Patterns

Pattern Beat Description
vibe 6/0.8 3/1.0 6/1.0 Signature rhythm (default for stop event)
alert 6/0.5 6/1.0 6/0.5 Attention pulse (default for prompt event)
dopamine 6666666 5/1.0 4/1.0 3/1.0 Reward cascade
noise 6543654365436543 Rapid texture

License

MIT

About

🫨 Haptic feedback from your coding agents – Get notified physically.

Resources

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •