Skip to content

Camera·

grab a frame, look at a pixel, ask the vision model a question about what TINY seestools/reachy_camera.py, 3 tools.

From the module docstring

TINY camera tool — grab a frame from the head camera via the daemon.

tool does
reachy_camera Capture a frame from TINY's head camera and save it to disk.
reachy_look_at Make TINY look at pixel (u,v) in its camera frame (visual servoing).
capture_camera Grab a frame from TINY's head camera and return it as an IMAGE block (text personas only).

reachy_camera·

reachy_camera(save_path: str = '', timeout: float = 10.0) -> dict

Capture a frame from TINY's head camera and save it to disk.

Requires the client to hold a media backend (REACHY_MEDIA_BACKEND=local or webrtc). If the daemon owns media in no_media mode, this reconnects a media-capable client for the grab.

argument meaning
save_path where to write the JPEG (default: $TINY_CAMERA_SNAPSHOT). timeout: seconds to wait for a valid frame.
Returns status + path to the saved image.

source: tools/reachy_camera.py:20

reachy_look_at·

reachy_look_at(u: int, v: int, duration: float = 1.0) -> dict

Make TINY look at pixel (u,v) in its camera frame (visual servoing).

Great for "look at me" / hand-tracking style behaviours. Requires a media-capable backend so the camera intrinsics are known.

source: tools/reachy_camera.py:76

capture_camera·

capture_camera(question: str = '', save_path: str = '') -> dict

Grab a frame from TINY's head camera and return it as an IMAGE block (text personas only).

For the telegram / thinker / shell personas (Bedrock Claude): the JPEG lands in the conversation so the model can SEE it. NOT for the realtime VOICE persona — OpenAI Realtime rejects image tool results and drops the session; voice must use take_photo() instead. Optional question is echoed for context; save_path defaults to $TINY_CAMERA_SNAPSHOT and is reported so a follow-up telegram send_photo can reuse the same file (no second capture, no image_reader).

source: tools/reachy_camera.py:91