Skip to content
Conduit

mcp server

gaze

Give your agents eyes. Native PTZ. No vendor app.

Obedience-Corp/gazecommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 26, 2026

Cameras

Gaze talks USB Video Class 1.1. The picture and the gimbal are the same USB device (UVC Camera VendorID_… ProductID_… on AVFoundation, not the localized name). gaze list is the source of truth. Zoom / pan / tilt only if that Camera Terminal has the control. Vendor AI tracking is a separate XU.

BrandModelsStatus
Insta360Link 2Proven see + zoom + pan/tilt (2e1a:4c04)
AppleStudio DisplayProven see + zoom + pan/tilt (05ac:1114)
Insta360Link, Link 2 Pro, Link 2CUVC, untested here
OBSBOTTiny, Tiny SE, Tiny 2, Tiny 3UVC PTZ, untested here
LogitechRally, Rally Bar, Meetup, PTZ Pro 2UVC PTZ if the Camera Terminal has pan/tilt
LogitechBrio, MX Brio, C920, StreamCamUVC zoom if present. No gimbal.
ElgatoFacecam, Facecam Pro, Facecam 4KUVC. No gimbal.
YealinkUVC30, UVC84, UVC86UVC PTZ, untested here
AVerCAM520, CAM550, CAM570UVC PTZ, untested here
PTZOptics, HuddleCamHD, Tenveo, NexiGoUSB UVC SKUsif the terminal has the control

Quit the vendor controller first. Insta360 Webcam, OBSBOT Center, Logitech Tune, Elgato Camera Hub, Yealink USB Connect, AVer PTZApp.

Install

macOS (Homebrew):

brew tap Obedience-Corp/tap
brew install gaze
gaze list

Linux (Homebrew on Linux):

brew tap Obedience-Corp/tap
brew install gaze
gaze list

Linux (from source, no Homebrew). Compiler, just, and libjpeg:

just build
just install          # ~/.local/bin/gaze  (PREFIX=/usr/local just install)
gaze list

The operator must be in the video group (/dev/video*). Same CLI as macOS: gaze see, gaze mcp, optional PTZ when the UVC Camera Terminal exposes it (V4L2 ZOOM/PAN/TILT absolute).

From source on either OS: just build. Protocol tests (no camera): just test-protocol. Hardware matrix: just test-hw.

Release binaries: v0.3.0 — gaze-linux-x86_64 on Linux; Apple Silicon still just build / brew install gaze from source.

Plugins

The binary is the MCP server (gaze mcp). Plugins do not wrap it in npm.

/plugin marketplace add Obedience-Corp/gaze
/plugin install gaze@gaze
grok plugin marketplace add Obedience-Corp/gaze
grok plugin install gaze --trust
codex plugin marketplace add Obedience-Corp/gaze
gemini extensions install https://github.com/Obedience-Corp/gaze

Optional pin: gemini extensions config gaze GAZE_DEV

Agent Plugin (plugin.json + mcp.json). Local:

ln -s "$(pwd)" ~/.cursor/plugins/local/gaze

Or paste clients/cursor.json into ~/.cursor/mcp.json.

Add to Cursor

Pin a camera with GAZE_DEV=vid:pid or gaze -d vid:pid mcp. Two cameras on the bus: do not use the default.

MCP

The camera is the tool. q=v is the frame (JPEG). Moves stay one line so they do not burn tokens. After a move you already have state — do not call s again. Call v when you need to look.

{
  "mcpServers": {
    "gaze": {
      "command": "gaze",
      "args": ["-d", "2e1a:4c04", "mcp"]
    }
  }
}
q
vJPEG from the sensor (turns the camera on)
sstatus (text only)
ccenter
z 200 / z +20zoom
p N / t Npan / tilt

Reply: 2e1a:4c04 z=200 p=0 t=0

Commands

gaze statusname, zoom, pan, tilt, mode
gaze see [file]JPEG from the sensor (default see.jpg)
gaze centerpan 0, tilt 0, default zoom
gaze zoom 200absolute, or +20 / -20
gaze pan / gaze tiltsame, native UVC units
gaze track on|offwrites Insta360 mode XU (Link 2 GET_CUR is stale)
gaze deskview / overhead / whiteboardsame
gaze normalmode XU off

FaceTime can keep the stream. Gaze uses IOKit DeviceRequest on the device node, no exclusive interface grab.

License

Apache 2.0.

PTZ uses USB Video Class 1.1 Camera Terminal controls. Insta360 mode bytes on XU unit 9 selector 2 are the community-documented map (normal / track / whiteboard / overhead / deskview), confirmed on a Link 2.

Product photos: Insta360 Link 2 / Link 2C, OBSBOT Tiny 3, Logitech Rally and Brio, Elgato Facecam Pro, Yealink UVC86.


Built with Festival

↑↓ navigate openesc close