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. Anoktherefore 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_feedbackistruein the configuration), Overlay marks are invisible to any screen capture, includingvue_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.
| Tool | Role | Level |
|---|---|---|
overlay_highlight | Rounded frame around a region, with a label | none |
overlay_spotlight | Darkens the screen except for a region | none |
overlay_cursor | Synthetic cursor halo | none |
overlay_banner | Banner colored according to a level | none |
overlay_clear | Clears all marks | none |
overlay_highlight
Draws a styled rounded rectangle, with an optional label, around a region.
| Parameter | Type | Default | Required | Role |
|---|---|---|---|---|
x | integer | none | yes | Left edge |
y | integer | none | yes | Top edge |
width | integer | none | yes | Width |
height | integer | none | yes | Height |
label | string | "" | no | Label displayed with the frame |
Example call
{ "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.
| Parameter | Type | Default | Required | Role |
|---|---|---|---|---|
x, y | integer | none | yes | Top-left corner of the region |
width, height | integer | none | yes | Dimensions 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.
| Parameter | Type | Default | Required | Role |
|---|---|---|---|---|
x, y | integer | none | yes | Point |
Example call: { "x": 510, "y": 330 }
Returns: {"ok": true}.
overlay_banner
Displays a banner colored according to a level, with some text.
| Parameter | Type | Default | Required | Role |
|---|---|---|---|---|
text | string | none | yes | Banner text |
level | string | "L1" | no | Color: default, L1, L2, L3, L4 or gate |
Example call
{ "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}.