Skip to main content

Physical console for Claude Code - approve/deny permissions from your phone or hardware device

Project description

Claude Board

A permission approval console for Claude Code - approve or deny permission requests from your phone or (future) a physical hardware device.

Requirements

Important: Claude Board requires Claude Code CLI in terminal for full functionality.

Environment Compatibility

Environment Permission Approval TODO Tracking Notes
Terminal (claude command) ✅ Full support ✅ Full support Recommended
VS Code Extension ⚠️ Known bug ✅ Works See below
Claude Desktop (CLI mode) ⚠️ Known bug ✅ Works See below
Claude Desktop (Chat interface) ❌ Not supported ❌ Not supported Different architecture

Known Issue: PermissionRequest Hook Bug

The PermissionRequest hook does not trigger in VS Code Extension and Claude Desktop's built-in CLI. This is a known upstream bug in Claude Code:

  • Issue #13203 - PermissionRequest hook does not trigger in VSCode extension
  • Issue #17036 - VS Code extension does not trigger hooks during permission prompt
  • Issue #13339 - VS Code Extension ignores hook permissionDecision: "ask"

Workaround: Use Claude Code in terminal (claude command) for full permission approval functionality. TODO tracking works in all CLI environments.

Why doesn't Claude Desktop chat work at all?

Claude Desktop's chat interface and Claude Code CLI are completely different products:

  • Claude Code CLI uses ~/.claude/settings.json and supports Hooks
  • Claude Desktop Chat uses claude_desktop_config.json and supports MCP Servers only

The chat interface has no "permission request" concept, so hooks cannot intercept anything.

Features

  • Web UI: Approve/deny requests from any device with a browser (phone, tablet, desktop)
  • Real-time updates: WebSocket-based instant notifications
  • Sound & vibration: Get alerted when permission is needed
  • YOLO mode: Auto-approve all requests with one click
  • TODO tracking: See Claude's task list in real-time
  • Keyboard shortcuts: Y/Enter to approve, N/Escape to deny

Installation

Using pip

pip install claude-board

Using uv

uv tool install claude-board

From source

git clone https://github.com/pescn/claude-board.git
cd claude-board
pip install -e .

Quick Start

1. Install hooks into Claude Code

claude-board install

This adds hooks to ~/.claude/settings.json. Your existing hooks are preserved.

2. Start the server

claude-board serve

3. Open the URL on your phone

The server will display a URL like http://192.168.x.x:8765 - open it on your phone.

4. Restart Claude Code

Claude Code needs to be restarted to load the new hooks.

That's it! Now when Claude Code needs permission to run a command, you'll get a notification on your phone.

Commands

# Start the web server
claude-board serve [--port 8765] [--open]

# Install hooks (preserves existing hooks)
claude-board install [--scope user|local]

# Uninstall hooks
claude-board uninstall [--scope user|local] [--all]

# Check status
claude-board status

# View/modify configuration
claude-board config [--port PORT] [--yolo/--no-yolo]

# Show version
claude-board --version

Configuration

Environment Variables

  • CLAUDE_BOARD_HOST: Server host (default: 127.0.0.1)
  • CLAUDE_BOARD_PORT: Server port (default: 8765)

Safe Tools (Auto-Approved)

These tools are automatically approved without sending to your phone:

  • Glob, Grep - File searching
  • TodoWrite, TodoRead - Task management
  • Task - Subagent tasks
  • WebSearch, WebFetch - Web operations
  • Read (within project directory)

Dangerous Tools (Require Approval)

  • Bash - Shell commands
  • Write - Creating/overwriting files
  • Edit - Modifying files

Roadmap

Phase 0 (Current): Web UI ✅

Pure software solution with web-based approval.

Phase 1: Raspberry Pi (Planned)

Physical console with:

  • Mechanical key switches (Approve, Deny, Retry, YOLO)
  • E-ink display for task status
  • Wired connection

Phase 2: Bluetooth (Planned)

Wireless physical console with BLE connectivity.

Phase 3: ESP32 Standalone (Planned)

Battery-powered portable device.

Development

# Clone and install in development mode
git clone https://github.com/pescn/claude-board.git
cd claude-board
pip install -e ".[dev]"

# Run tests
pytest

# Start server in development
claude-board serve --port 8765

License

MIT

Contributing

Contributions are welcome! Please open an issue or pull request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

claude_board-0.1.7.tar.gz (45.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

claude_board-0.1.7-py3-none-any.whl (51.5 kB view details)

Uploaded Python 3

File details

Details for the file claude_board-0.1.7.tar.gz.

File metadata

  • Download URL: claude_board-0.1.7.tar.gz
  • Upload date:
  • Size: 45.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for claude_board-0.1.7.tar.gz
Algorithm Hash digest
SHA256 05d9edff1b857ea85a552b288b7eb62deab73b8defc8cce37790bb9fa5dab019
MD5 01d9b19f59b5d7003a6c8fe556989cd3
BLAKE2b-256 60b46fe9ffd9e9dcf3cd70defc7da7e5ce39bbe4613fd93a8f4a04c9e4f5e459

See more details on using hashes here.

Provenance

The following attestation bundles were made for claude_board-0.1.7.tar.gz:

Publisher: publish.yml on EM-GeekLab/claude-board

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file claude_board-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: claude_board-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 51.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for claude_board-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 5a28296dfc897bb0bf625d88c97d63db467ab1001f65c99e5c958f9f27e4ea47
MD5 b7bfbce6a510ab72db132c6b19c82c23
BLAKE2b-256 30f685166edb03e99c54ef651714563d0c9ef1f4fcb8349d2dfc9290b1c01af3

See more details on using hashes here.

Provenance

The following attestation bundles were made for claude_board-0.1.7-py3-none-any.whl:

Publisher: publish.yml on EM-GeekLab/claude-board

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page