> ## Documentation Index
> Fetch the complete documentation index at: https://docs.beta.b3os.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Cookbook

Recipes that use more than one B3OS product, grouped by job, product and framework. Each one is listed only while its last run passed.

The recipe harness (examples/recipes/_harness) runs each recipe and checks its output, and each page here shows the output of the last passing run. A recipe whose run fails leaves this list until its owner fixes it.

## Agents with tools

| Recipe | What it does | Products |
|---|---|---|
| [A sandboxed agent calls the model and a tool](/cookbook/sandbox-agent-weather) | Code in a sandbox granted infer:run and actions:run calls the model and the Open-Meteo action with no key, timed from inside the sandbox. | Docs, Sandboxes, Infer, Actions and triggers |
| [Screenshot a page an agent built in a sandbox](/cookbook/sandbox-preview-screenshot) | The model writes an HTML page, a sandbox with no network serves it on a declared port, and render captures the sandbox's preview URL. | Docs, Infer, Sandboxes, Render |

## Videos and images

| Recipe | What it does | Products |
|---|---|---|
| [A prediction market's week as an image](/cookbook/market-brief-card) | Two Polymarket actions read an open bitcoin market and its week of prices, the model writes one sentence, and render draws the card from HTML. | Docs, Actions and triggers, Infer, Render |
| [Scrape a page, then screenshot its links](/cookbook/scrape-to-screenshots) | vision returns the demo board's links; render captures each linked page in a styled browser frame. One key, two products, no glue service. | Docs, Vision, Render |

## Data pipelines

| Recipe | What it does | Products |
|---|---|---|
| [A Hacker News story as audio](/cookbook/news-audio-brief) | An action reads a pinned Hacker News story, vision reads the page it links, the model writes three sentences and the node's speech model reads them out. | Docs, Actions and triggers, Vision, Infer |
| [A routine that scrapes, briefs and screenshots](/cookbook/routine-page-brief) | One routine runs vision/scrape@1, infer/chat@1 and render/screenshot@1 on the node: a one-sentence brief and a styled screenshot, no glue code. | Docs, Routines, Vision, Infer, Render |

## Monitor and alert

| Recipe | What it does | Products |
|---|---|---|
| [Daily page digest to Slack](/cookbook/cron-scrape-slack) | A routine on a daily cron scrapes a page, writes a three-bullet digest with b3os/qwen3.5-9b and posts it to Slack. | Routines, Vision, Infer, Actions and triggers, Vault |
| [A signed webhook starts a scrape and a brief](/cookbook/signed-webhook-brief) | A routine with a b3os webhook trigger scrapes the URL a signed delivery names and briefs it; a repeat starts nothing and a wrong signature gets 401. | Docs, Routines, Vision, Infer |

## CI and dev workflows

| Recipe | What it does | Products |
|---|---|---|
| [Run an outside PR's tests with no network](/cookbook/untrusted-pr-tests) | Fetch an outside PR into a sandbox, install from npm only, run its tests with egress denied, check its dependencies with deps.dev and get a note. | Docs, Sandboxes, Actions and triggers, Infer |

## Approvals

| Recipe | What it does | Products |
|---|---|---|
| [Approve, then screenshot](/cookbook/approve-then-screenshot) | A routine scrapes a page, waits for a person's approval as a signal, and only then takes a screenshot of it. | Routines, Vision, Render |

## By product

- Vision: [Approve, then screenshot](/cookbook/approve-then-screenshot), [Daily page digest to Slack](/cookbook/cron-scrape-slack), [A Hacker News story as audio](/cookbook/news-audio-brief), [A routine that scrapes, briefs and screenshots](/cookbook/routine-page-brief), [Scrape a page, then screenshot its links](/cookbook/scrape-to-screenshots), [A signed webhook starts a scrape and a brief](/cookbook/signed-webhook-brief)
- Render: [Approve, then screenshot](/cookbook/approve-then-screenshot), [A prediction market's week as an image](/cookbook/market-brief-card), [A routine that scrapes, briefs and screenshots](/cookbook/routine-page-brief), [Screenshot a page an agent built in a sandbox](/cookbook/sandbox-preview-screenshot), [Scrape a page, then screenshot its links](/cookbook/scrape-to-screenshots)
- Sandboxes: [A sandboxed agent calls the model and a tool](/cookbook/sandbox-agent-weather), [Screenshot a page an agent built in a sandbox](/cookbook/sandbox-preview-screenshot), [Run an outside PR's tests with no network](/cookbook/untrusted-pr-tests)
- Routines: [Approve, then screenshot](/cookbook/approve-then-screenshot), [Daily page digest to Slack](/cookbook/cron-scrape-slack), [A routine that scrapes, briefs and screenshots](/cookbook/routine-page-brief), [A signed webhook starts a scrape and a brief](/cookbook/signed-webhook-brief)
- Actions and triggers: [Daily page digest to Slack](/cookbook/cron-scrape-slack), [A prediction market's week as an image](/cookbook/market-brief-card), [A Hacker News story as audio](/cookbook/news-audio-brief), [A sandboxed agent calls the model and a tool](/cookbook/sandbox-agent-weather), [Run an outside PR's tests with no network](/cookbook/untrusted-pr-tests)
- Vault: [Daily page digest to Slack](/cookbook/cron-scrape-slack)
- Infer: [Daily page digest to Slack](/cookbook/cron-scrape-slack), [A prediction market's week as an image](/cookbook/market-brief-card), [A Hacker News story as audio](/cookbook/news-audio-brief), [A routine that scrapes, briefs and screenshots](/cookbook/routine-page-brief), [A sandboxed agent calls the model and a tool](/cookbook/sandbox-agent-weather), [Screenshot a page an agent built in a sandbox](/cookbook/sandbox-preview-screenshot), [A signed webhook starts a scrape and a brief](/cookbook/signed-webhook-brief), [Run an outside PR's tests with no network](/cookbook/untrusted-pr-tests)
- Docs: [A prediction market's week as an image](/cookbook/market-brief-card), [A Hacker News story as audio](/cookbook/news-audio-brief), [A routine that scrapes, briefs and screenshots](/cookbook/routine-page-brief), [A sandboxed agent calls the model and a tool](/cookbook/sandbox-agent-weather), [Screenshot a page an agent built in a sandbox](/cookbook/sandbox-preview-screenshot), [Scrape a page, then screenshot its links](/cookbook/scrape-to-screenshots), [A signed webhook starts a scrape and a brief](/cookbook/signed-webhook-brief), [Run an outside PR's tests with no network](/cookbook/untrusted-pr-tests)