/
All topics

Make Your Own

The yab API

What a plugin’s page script and its own page may ask Yab for, and what you are asked first.

A plugin that names permissions under yab gets chrome.yab in its page script and on its own page, once you have kept it, and only on its sites. Each call needs its permission.

"yab": {"permissions": ["yab:ask", "yab:notify"]}
  • ask(prompt, {model, schema, page}) (yab:ask): an answer from the model on this Mac ("device", the default, macOS 26) or from your AI plan ("plan", asked once per version). schema returns checked JSON; page: true adds the page’s text.
  • memory.get(["home address"]) (yab:memory): lines from what Yab knows about you. You are asked for each key.
  • route(from, to, "walking" | "driving") (yab:route): seconds and meters between two places.
  • notify(text) (yab:notify): a short line in Yab, from the tab in front, at most every ten seconds.
  • summarize(url) (yab:summarize): a page on the plugin’s sites, in a few lines.
  • translate(text, "fr") (yab:translate): with the languages installed in macOS.
  • calendar.next() (yab:calendar): your next meeting’s title and times. You are asked every time.
  • rows.suggest({title, url, detail}) (yab:rows): a row under the field of a new tab, among what needs you, for a page on its sites.
  • live.source({name, items}) (yab:live): a live folder in the sidebar that keeps up with the list. You are asked the first time.
  • task(prompt) (yab:task): starts a task with your agent. You are asked every time.

A plugin gets two calls at once. Any permission besides yab:ask makes it an App, and its card lists what it uses before you keep it: “Uses ask, notify.”