Uthere banner
odfalik odfalik

Uthere

Development community

Description

Camera-based user presence detection. MCP server & Claude Code hook

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

u there?

Camera-based presence detection for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Uses your webcam to check if you're sitting at your computer.

Two components:

  1. MCP server exposes an is_user_present tool that Claude can call anytime to check if you're there
  2. Stop hook automatically keeps Claude working when you step away, so it doesn't stop and wait for input from an empty chair

Uses [MediaPipe BlazeFace](https://ai.google.dev/edge/mediapipe/solutions/vision/face_detector) for fast, lightweight face detection. Works well with glasses, varied lighting, and different angles. The model (~200KB) is downloaded automatically on first run.

Install

Requires Python 3.11+ and [uv](https://docs.astral.sh/uv/).

git clone https://github.com/odfalik/uthere.git
cd uthere
uv sync

Camera permissions

On macOS, your terminal app needs camera access. Go to **System Settings > Privacy & Security > Camera** and enable it for your terminal (Terminal, iTerm2, etc).

Setup

Add either or both of the following to your Claude Code settings file (`~/.claude/settings.json`).

MCP server

Gives Claude a tool it can call to check if you're at your desk.

{
  "mcpServers": {
    "uthere": {
      "command": "uv",
      "args": ["--directory", "/path/to/uthere", "run", "python", "-m", "uthere.server"]
    }
  }
}

Stop hook

Prevents Claude from stopping when you're away. If Claude finishes a response and no face is detected, it gets a message telling it to keep going. A 60-second cooldown prevents infinite loops.

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "uv --directory /path/to/uthere run python -m uthere.hook",
            "timeout": 15
          }
        ]
      }
    ]
  }
}

Configuration

All configuration is through environment variables. Set them in your shell profile or in Claude Code's `env` settings.