How
No MCP server or protocol. An agent either generates a steps config (common: Claude Code skills and JSON tour builders exist) or, via browser automation (Playwright/CDP), calls the live driverObj methods in the page.
Tiny dependency-free product tours, highlights and hints for web pages.
driverjs.com ↗repo ↗docs ↗Changelog ↗Shepherd (AGPL-3.0 / commercial) ↗Intro.js (AGPL-3.0 / commercial) ↗Inline Manual driver.js JSON tour builder ↗
Its step model and UX rules are the right reference for caretline-tour; the library itself can't run in a terminal.
Borrow from it: take a specific idea, API or format.
driver.js is the default answer to 'walk a user through this screen' for a reason: 5 KB, no dependencies, MIT, and an API small enough to learn in ten minutes. A tour is just an array of step objects, which makes it trivially generated by an LLM or a visual builder and stored as JSON. It handles the hard UX details (cut-out overlays, scrolling, popover placement, waiting for late elements, click-to-advance, keyboard and ARIA) and now ships hints for ambient guidance. With 2.3M weekly downloads it dwarfs Shepherd and Intro.js, and unlike both it carries no AGPL obligation or licence fee, so it is the one you can embed anywhere. Any agent that already drives a browser can run, steer and read back a driver.js tour today.
| UI as data | 4 scene 5 | Tour = array of step objects; serializable except hook callbacks. |
|---|---|---|
| Agent can drive it | 2 scene 5 | Callable JS API but no protocol; agents need their own browser harness. |
| Agent can see it | 3 scene 5 | Structured getState, but only from inside the page. |
| Small, targeted edits | 3 scene 5 | |
| Time travel | 2 scene 0 | |
| Live data rate | 0 scene 5 | |
| Terminal native | 0 scene 5 | |
| Pixel graphics | 4 scene 4 | |
| Teaching | 4 scene 3 | Tours, highlights, hints, interactive steps; no narration/recording. |
| Maturity | 4 scene 1 | |
| Openness | 4 scene 4 | MIT, single-maintainer control. Shepherd and Intro.js would score 2 (AGPL plus paid commercial licence). |
driver.js scene now scene planned
No MCP server or protocol. An agent either generates a steps config (common: Claude Code skills and JSON tour builders exist) or, via browser automation (Playwright/CDP), calls the live driverObj methods in the page.
Low for code generation; medium for live control (needs a browser harness that evaluates JS in the page).
getState/getActiveStep give structured tour state; page state requires DOM or screenshots.
setSteps/setConfig replace config; moveTo(i) and highlight(step) target one step; no per-step id patching.
movePrevious/moveTo only; no recording.
Simple, scriptable, JSON-friendly tours that an agent can generate easily and steer if it already controls the browser.
A driver instance takes a config of steps (element selector plus popover title/description/side/align) and hooks. It draws an SVG overlay with a cut-out around the target element, scrolls it into view and positions a popover. The instance exposes an imperative API (drive, moveNext/Previous/To, highlight, setSteps, setConfig, getState, getActiveIndex, refresh, destroy). Since 1.8 a separate `driver.js/hints` entry adds pulsing beacons (~5 KB gzip).
Only bundle-size claims; no runtime benchmarks (none needed at this scale).
The most-downloaded open tour library by a wide margin (~7x Shepherd, ~13x Intro.js on npm); site claims '4M+ monthly downloads, used by tens of thousands of projects'. Stars: driver.js 26.9k, Intro.js 23.5k, Shepherd 13.8k.
Actively maintained again after a quieter period, with a careful changelog, but a one-person project.
Releases: Revived in 2026: 1.5.0 2026-06-23, 1.6.0 2026-06-25, 1.7.0 2026-07-13, 1.8.0 2026-07-17, 1.9.0 2026-10-03. · Contributors: ~56 (GitHub, incl. anonymous) · Recent: 50 commits since 2026-07-11, mostly direct pushes (2 merged PRs). · Bus factor: low: one maintainer authors nearly all commits.
Spotlight/callout layers anchored to UI elements, step sequencing, popovers with next/previous, click-to-advance.
The tour UX vocabulary: cut-out spotlight, popover side/align, advanceOnClick, waitForElement, skipMissingElement, hints/beacons. driver.js has years of edge cases settled.
Terminal-native tours anchored to node ids that an agent creates and narrates live over a socket, with take-over and rewind; driver.js is a web page script with no agent protocol or history.
| 1–7 | home · features · use cases · docs · changelog · under the hood · blog |
| t | light or dark |
| j k | scroll |
| g G | top · bottom |
| ? Esc | this · close |