Signal Tunnel

Full-bleed animated hero background: light streaks travel along fixed radial lanes through a vanishing point (right, centre or left), converging into it by default (signals arriving) or, in "out" mode, radiating away from it (signals broadcasting). Each streak accelerates as it nears the vanishing point and is coloured by its lane angle, so the tunnel reads as many distinct signals rather than one; an additive glow marks the vanishing point itself. Optional eyebrow/title/body copy sits opposite the tunnel behind a readability veil, the same flow_field/try.cloudflare.com hero layout (copy on one side, motion on the other). Honours prefers-reduced-motion (renders one pre-simulated frame, no loop), pauses when scrolled offscreen, and is DPR-aware. Pure canvas + requestAnimationFrame, zero dependencies, on the same shared kit as flow_field/orbit_mark. Every option is an enum or a clamped integer and colours must be #rrggbb: the config is baked into inline script, so nothing free-form ever reaches it. Dark backgrounds only -- streaks are additive and vanish on white.

Surfaces
webgoogle-meet-stagegoogle-apps-script-webmcp-appsandroid
Degraded on
SurfaceNote
pdfRenders as a plain dark panel with the overlaid copy; the canvas is empty without JavaScript
google-chatInline script not supported; renders as a solid dark panel with the copy
Live preview
Fields
FieldTypeRequired
titlestring. Headline overlaid opposite the tunnel.optional
eyebrowstring. Small uppercase label above the title, tinted with the first palette colour.optional
bodystring. Supporting copy under the title (markdown inline supported).optional
align"left" | "center" | "right" (optional, default "left"). Where the overlaid copy sits; the veil that keeps it readable follows it.optional
direction"in" | "out" (optional, default "in"). "in" -- streaks converge on the vanishing point. "out" -- streaks radiate away from it.optional
position"right" | "center" | "left" (optional, default "right"). Where the vanishing point sits; put it opposite the copy.optional
colorsarray of 1-4 "#rrggbb" strings. Default ["#38bdf8","#818cf8","#f472b6"]. Streaks take a colour by lane angle so the tunnel reads as coloured bands; the first colour also tints the vanishing-point glow. Invalid entries are dropped.optional
background"#rrggbb". Default "#070a12". Keep it dark.optional
density"low" | "normal" | "high" (optional, default "normal"). Streak count, scaled to the panel area.optional
speed"slow" | "normal" | "fast" (optional, default "normal")optional
trail"short" | "normal" | "long" (optional, default "normal"). How long each streak's light trail lingers.optional
heightinteger. Panel height in px, clamped 200-900. Default 360.optional
interactivebool. Pointer nudges nearby streaks. Default true.optional
Example payload
{
  "type": "signal_tunnel"
}
ARD catalog entry
{
  "identifier": "urn:air:a2uicatalog.ai:atom:signal_tunnel",
  "displayName": "Signal Tunnel",
  "type": "application/vnd.a2ui.atom+json",
  "url": "https://a2uicatalog.ai/atoms/signal_tunnel",
  "capabilities": [
    "web",
    "google-meet-stage",
    "google-apps-script-web",
    "mcp-apps",
    "android"
  ],
  "description": "Full-bleed animated hero background: light streaks travel along fixed radial lanes through a vanishing point (right, centre or left), converging into it by default (signals arriving) or, in \"out\" mode, radiating away from it (signals broadcasting). Each streak accelerates as it nears the vanishing point and is coloured by its lane angle, so the tunnel reads as many distinct signals rather than one; an additive glow marks the vanishing point itself. Optional eyebrow/title/body copy sits opposite the tunnel behind a readability veil, the same flow_field/try.cloudflare.com hero layout (copy on one side, motion on the other). Honours prefers-reduced-motion (renders one pre-simulated frame, no loop), pauses when scrolled offscreen, and is DPR-aware. Pure canvas + requestAnimationFrame, zero dependencies, on the same shared kit as flow_field/orbit_mark. Every option is an enum or a clamped integer and colours must be #rrggbb: the config is baked into inline script, so nothing free-form ever reaches it. Dark backgrounds only -- streaks are additive and vanish on white.",
  "representativeQueries": [
    "show a radial light streaks converging on (or radiating from) a vanishing point, hero background",
    "full-bleed animated hero background: light streaks travel along fixed radial lanes through a vanishi",
    "render a signal tunnel"
  ]
}
← Full ARD catalog
Deploy your own Google Apps Script renderer

The renderer is an open-source Google Apps Script web app. Deploy your own instance in 4 commands — you own the URL, no dependency on the demo endpoint.

git clone https://github.com/a2uicatalog/a2ui
cd a2ui/apps-script-surface/gas-wired-renderer
clasp push && clasp deploy
Full deploy guide →