Skip to content

Overlay: showing what the AI is doing ​

The Overlay is the visual layer that Daimon draws on top of the screen so that the person in front of the machine can see where the AI is looking and acting: frame, spotlight, cursor, banner. It is purely presentational.

All five tools have the same properties:

  • they have no authorization level and are not subject to the ceiling;
  • they never block and never fail;
  • they always return {"ok": true}, even if no overlay window is running: the order is then simply dropped. An ok therefore does not prove that the mark is visible;
  • the "Présence à l'écran" (Presence on screen) setting in the panel enables the overlay.
  • by default (anti_feedback is true in the configuration), Overlay marks are invisible to any screen capture, including vue_snapshot: the AI never sees its own marks. You see them on the screen, but they do not appear in a capture; this is why this documentation shows none. On macOS, the overlay is a non-interactive window covering the main display.

Coordinate unit

Here, coordinates are raw global pixels, already resolved by you. There is no space, no display, no region (unlike Mains, which speaks in points). Do not pass image pixels: convert them first with vue_resolve.

The Overlay helper ​

The marks are drawn by a separate process, the helper (Daimon overlay). It exits on its own: 60 seconds after launch if it has had no client, and 3 seconds after its last client leaves.

The client relaunches the helper when a send fails for lack of a helper, provided that "Présence à l'écran" is enabled, and at most once every 5 seconds. Enabling "Présence à l'écran" in the panel also launches the helper; disabling it neither stops it nor relaunches it.

To know whether the helper is alive, call daimon_doctor and read the overlay key. The overlay.log log, in Daimon's data folder, records overlay: bound, then overlay: start enabled=<true|false> at startup, and overlay: exit reason=<idle|startup> on exit, each line preceded by a UTC timestamp.

ToolRoleLevel
overlay_highlightRounded frame around a region, with a labelnone
overlay_spotlightDarkens the screen except for a regionnone
overlay_cursorSynthetic cursor halonone
overlay_bannerBanner colored according to a levelnone
overlay_clearClears all marksnone

overlay_highlight ​

Draws a styled rounded rectangle, with an optional label, around a region.

ParameterTypeDefaultRequiredRole
xintegernoneyesLeft edge
yintegernoneyesTop edge
widthintegernoneyesWidth
heightintegernoneyesHeight
labelstring""noLabel displayed with the frame

Example call

json
{ "x": 400, "y": 300, "width": 220, "height": 60, "label": "Bouton Envoyer" }

Returns: {"ok": true}.

overlay_spotlight ​

Darkens the screen except for a cleared hole over the region.

ParameterTypeDefaultRequiredRole
x, yintegernoneyesTop-left corner of the region
width, heightintegernoneyesDimensions of the region

Example call: { "x": 400, "y": 300, "width": 220, "height": 60 }

Returns: {"ok": true}.

overlay_cursor ​

Places the synthetic cursor halo on a global point.

ParameterTypeDefaultRequiredRole
x, yintegernoneyesPoint

Example call: { "x": 510, "y": 330 }

Returns: {"ok": true}.

overlay_banner ​

Displays a banner colored according to a level, with some text.

ParameterTypeDefaultRequiredRole
textstringnoneyesBanner text
levelstring"L1"noColor: default, L1, L2, L3, L4 or gate

Example call

json
{ "text": "Daimon remplit le formulaire", "level": "L2" }

Returns: {"ok": true}.

Pitfalls: an unknown level falls back to default, without error.

overlay_clear ​

Clears all overlay marks currently on the screen.

Parameters: none. Returns: {"ok": true}.