Activate your sex toys while Claude Code is working, block distracting websites when it isn't.
Integrates with Intiface Central (buttplug.io) to provide ambient vibration feedback while Claude is actively working, creating a physical presence indicator.
┌─────────────────┐ hooks ┌─────────────────┐ websocket ┌─────────────────┐
│ Claude Code │ ─────────────► │ Blocker Server │ ◄─────────────► │ Chrome Extension│
│ (terminal) │ │ (localhost) │ │ (browser) │
└─────────────────┘ └────────┬────────┘ └─────────────────┘
│ │ │
│ UserPromptSubmit │ tracks sessions │ blocks sites
│ PreToolUse │ broadcasts state │ shows modal
│ Stop │ │ bypass button
└─────────────────────────────────────┴───────────────────────────────────┘
│
websocket (optional)
│
▼
┌─────────────────┐
│ Intiface Central│
│ (buttplug.io) │
└────────┬────────┘
│
vibration
│
▼
[Your Device]
- Claude Code hooks notify the server when you submit a prompt or when Claude finishes
- Blocker server tracks all Claude Code sessions and their working/idle states
- Chrome extension blocks configured sites when no session is actively working
- Intiface integration (optional) provides ambient vibration while Claude is actively working
npx claude-blocker --setupThis installs the Claude Code hooks and starts the server. The hooks are configured in ~/.claude/settings.json.
- Download from Chrome Web Store (coming soon)
- Or load unpacked from
packages/extension/dist
Click the extension icon → Settings to add sites you want blocked when Claude is idle.
Default blocked sites: x.com, youtube.com
To get ambient vibration feedback while Claude is working:
- Download and install Intiface Central
- Connect your compatible device (see supported devices)
- Start Intiface Central and ensure the websocket server is running (default:
ws://127.0.0.1:12345) - Restart claude-blocker with the
--intiface-urlflag:npx claude-blocker --intiface-url ws://127.0.0.1:12345
Your device will vibrate with a low ambient presence (15% intensity by default) while Claude Code is actively working.
# Start with auto-setup (recommended for first run)
npx claude-blocker --setup
# Start on custom port
npx claude-blocker --port 9000
# Start with Intiface haptic feedback
npx claude-blocker --intiface-url ws://127.0.0.1:12345
# Combine options
npx claude-blocker --port 9000 --intiface-url ws://127.0.0.1:12345
# Remove hooks from Claude Code settings
npx claude-blocker --remove
# Show help
npx claude-blocker --help- Soft blocking — Sites show a modal overlay, not a hard block
- Real-time updates — No page refresh needed when state changes
- Multi-session support — Tracks multiple Claude Code instances
- Emergency bypass — 5-minute bypass, once per day
- Configurable sites — Add/remove sites from extension settings
- Works offline — Blocks everything when server isn't running (safety default)
- Haptic feedback (new!) — Optional Intiface integration provides ambient vibration while Claude is actively working
- Node.js 18+
- Chrome (or Chromium-based browser)
- Claude Code
- Intiface Central (optional, for haptic feedback)
# Clone and install
git clone https://github.com/t3-content/claude-blocker.git
cd claude-blocker
pnpm install
# Build everything
pnpm build
# Development mode
pnpm devpackages/
├── server/ # Node.js server + CLI (published to npm)
├── extension/ # Chrome extension (Manifest V3)
└── shared/ # Shared TypeScript types
- No data collection — All data stays on your machine
- Local only — Server runs on localhost, no external connections
- Chrome sync — Blocked sites list syncs via your Chrome account (if enabled)
See PRIVACY.md for full privacy policy.
MIT © Theo Browne