Gallery
Outputs B3OS made in production: styled screenshots, a narrated video, a scrape, an action call, a routine run, MCP calls and recipes, each dated.
Everything on this page was made by B3OS in production (https://beta-api.b3os.org) by the gallery runner, which
sends each case's request and keeps what came back. Each block says when it ran, from which commit, and its label;
live-recorded means production. Nothing here is a mockup or a hand-edited response. The requests are the cases in
examples/gallery/cases/, so you can send the same ones.
Screenshots: backgrounds
The demo app rendered once per background preset, in a browser frame. The same request with another background
gives the next image.













Each image is the demo app rendered in production by
POST /v1/render/screenshots
with that preset: cases
render/bg-<id>
, label
live-recorded
, captured 2026-11-01 from commit
617e5c05
.
Screenshots: frames
The same page in each window frame preset.











Each image is the demo app rendered in production by
POST /v1/render/screenshots
with that preset: cases
render/frame-<id>
, label
live-recorded
, captured 2026-11-01 from commit
617e5c05
.
Laptop, Laptop (dark), Desktop monitor: the preview image GET /v1/render/presets links (preview_url); no production capture yet.
Screenshots: element, full page, pixel ratio and transparency
One element at device pixel ratio 2, a full-page capture, a viewport at pixel ratio 2, and a PNG with a transparent background.




Captured 2026-11-01 from commit
617e5c05
, label
live-recorded
(recorded from production). Case
render/element
.
Captured 2026-11-01 from commit
617e5c05
, label
live-recorded
(recorded from production). Case
render/full-page
.
Captured 2026-11-01 from commit
617e5c05
, label
live-recorded
(recorded from production). Case
render/dpr-2
.
Captured 2026-11-01 from commit
617e5c05
, label
live-recorded
(recorded from production). Case
render/png-alpha
.
A narrated video
A scripted walk through the demo app: three beats, a voice reading each line, karaoke captions burned in and a WebVTT sidecar, styled with the midnight background and the dark browser frame.
One recording, restyled
POST /v1/render/videos/{video_id}/restyle composes the recording above again with another style: the page is not
captured again and the voice is not spoken again. Each video below is that call on the same recording, with one
part of the style changed.
Caption presets
Cursors and click effects
Another background and frame, a vertical cut, a GIF
formats: ["gif"] for places that cannot play video:


Captured 2026-11-01 from commit
e7d425e6
, label
live-recorded
(recorded from production). Case
render/gif
.
A scrape: the page as the browser rendered it, and the Markdown
bashcurl -s -X POST 'https://beta-api.b3os.org/v1/vision/scrape' \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H 'Content-Type: application/json' \ -d '{"url":"https://beta.b3os.org/demo/","formats":["markdown","screenshot"]}'
json{ "object": "scrape", "url": "https://beta.b3os.org/demo/", "final_url": "https://beta.b3os.org/demo/", "status_code": 200, "content_type": "text/html", "tier": "browser", "cache": { "state": "miss", "age_s": 0 }, "markdown": "# Launch plan\n\nWebsite relaunch, shared with the whole team.\n\nSigned in Sign outShareNew task\n\nAdd task\n\nBoardListTimelineFiles\n\n## To do\n\n**Write the pricing page copy**\n\nPlain language, one plan per column, answers before questions.\n\nCopy*MR*\n\n**Pick hero illustrations**\n\nDesign*AL**JK*\n\n**Draft the launch email**\n\nShort, with one link to the new home page.\n\nCopy*SO*\n\n**Check color contrast**\n\nE…", "screenshot": { "format": "jpeg", "width": 1280, "height": 800, "data_base64": "https://beta.b3os.org/gallery/vision/scrape-before-after/57b6ffdc7278315e.jpg" }, "metadata": { "title": "Launch plan", "language": "en", "robots": "noindex" }, "page_state": { "state": "ok" }, "warnings": [], "timing": { "acquire_ms": 0.019, "admit_ms": 0.141, "claim_ms": 0.007, "extract_ms": 2.666, "nav_dcl_ms": 80.626, "nav_load_ms": 136.123, "nav_response_ms": 40.095, "navigate_ms": 237.887, "queue_ms": 0.001, "read_ms": 2.37, "screenshot_ms": 24.53, "setup_ms": 1.838, "total_ms": 269.674 }}
httpserver-timing: edge_auth;dur=24.000, edge_upstream;dur=282.000, admit;dur=0.141, queue;dur=0.001, claim;dur=0.007, acquire;dur=0.019, setup;dur=1.838, navigate;dur=237.887, nav_response;dur=40.095, nav_dcl;dur=80.626, nav_load;dur=136.123, read;dur=2.370, screenshot;dur=24.530, extract;dur=2.666, total;dur=269.951x-request-id: req_01m6am1anh3ep4d6n6yn6tz4sw
Captured 2026-11-01 from commit
1f273e0a
, label
live-recorded
(recorded from production); long values abridged. Case
vision/scrape-before-after
.
A keyless action call
The Open-Meteo action from the catalog, called with no connection.
bashcurl -s -X POST 'https://beta-api.b3os.org/v1/actions/call' \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H 'content-type: application/json' \ -d '{"ref":"io.b3os/open-meteo/get-current-weather@1","input":{"latitude":52.52,"longitude":13.405}}'
json{ "object": "action_result", "output": { "apparent_temperature": 5.2, "cloud_cover_percent": 65, "conditions": "Partly cloudy", "is_day": false, "precipitation": 0, "relative_humidity_percent": 93, "temperature": 7.1, "time": "2026-11-01T04:45", "timezone": "Europe/Berlin", "units": { "precipitation": "mm", "temperature": "°C", "wind_speed": "km/h" }, "weather_code": 2, "wind_direction_degrees": 38, "wind_speed": 5.9 }, "ref": "io.b3os/open-meteo/get-current-weather@1.0.0", "timing": { "inject_ms": 0.001, "map_ms": 0.155, "render_ms": 0.02, "total_ms": 596.753, "upstream_ms": 596.376, "validate_ms": 0.014 }, "upstream_status": 200}
httpserver-timing: edge_auth;dur=23.000, edge_upstream;dur=609.000, validate;dur=0.014, inject;dur=0.001, render;dur=0.020, upstream;dur=596.376, map;dur=0.155, total;dur=596.828x-request-id: req_01m6am1b6yx94tta4e0aj3nt33
Captured 2026-11-01 from commit
1f273e0a
, label
live-recorded
(recorded from production). Case
actions/call-current-weather
.
A routine run, step by step
A three-step routine run through the API with ?wait=30: two core/http@1 steps fetch demo pages in parallel, then a
transform joins them. Each step carries its start, finish and duration on the node.
bashcurl -s -X POST 'https://beta-api.b3os.org/v1/routines/gallery-steps/runs?wait=30' \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H 'content-type: application/json' \ -d '{}'
json{ "created_at": "2026-11-01T04:37:48.380Z", "durability": "standard", "expires_at": "2026-12-01T04:37:48.456Z", "finished_at": "2026-11-01T04:37:48.456Z", "id": "run_01m6apcfpwwt27wre1tbx1d3aj", "input": {}, "metadata": {}, "object": "routine_run", "progress": { "completed": 3, "total": 3, "unit": "steps" }, "result": { "pages": { "billing": 200, "pricing": 200 } }, "routine_id": "rtn_01m6apc9k0b5xt3efyvafkrabz", "started_at": "2026-11-01T04:37:48.381Z", "status": "succeeded", "steps": [ { "attempt": 1, "duration_ms": 36.325, "finished_at": "2026-11-01T04:37:48.417Z", "id": "pricing", "started_at": "2026-11-01T04:37:48.381Z", "status": "succeeded", "uses": "core/http@1" }, { "attempt": 1, "duration_ms": 38.612, "finished_at": "2026-11-01T04:37:48.456Z", "id": "billing", "started_at": "2026-11-01T04:37:48.417Z", "status": "succeeded", "uses": "core/http@1" }, { "attempt": 1, "duration_ms": 0.009, "finished_at": "2026-11-01T04:37:48.456Z", "id": "summary", "started_at": "2026-11-01T04:37:48.456Z", "status": "succeeded", "uses": "core/transform@1" } ], "timing": { "dispatch_ms": 0.348, "steps_ms": 74.979, "total_ms": 75.327 }, "trigger": { "type": "api" }, "updated_at": "2026-11-01T04:37:48.456Z", "version_id": "ver_01m6apc9k06y6cx7bzbn68hffg", "version_number": 1}
httpserver-timing: edge_auth;dur=0.000, edge_upstream;dur=88.000, total;dur=75.840x-request-id: req_01m6apcfpm2ptr47rmyek507yj
Captured 2026-11-01 from commit
b495ed3b
, label
live-recorded
(recorded from production). Case
routines/run-gantt
.
Through MCP
The remote MCP server (https://beta-api.b3os.org/mcp) with the same key: each block is the tools/call an agent
sends and the result it gets back.
json{ "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "sandbox_exec", "arguments": { "sandbox_id": "sbx_01m6apce03dqyayz2ysd63wmjj", "cmd": "uname -sr && python3 --version" } }}
textexit 0stdout:Linux 6.1.188Python 3.12.3
json{ "content": [ { "type": "text", "text": "exit 0\nstdout:\nLinux 6.1.188\nPython 3.12.3\n" } ], "structuredContent": { "duration_ms": 4.416, "exit_code": 0, "object": "exec_result", "signal": null, "stderr": "", "stderr_truncated": false, "stdout": "Linux 6.1.188\nPython 3.12.3\n", "stdout_truncated": false, "timed_out": false, "timing": { "dispatch_ms": 0.419, "run_ms": 4.416, "spawn_ms": 1.55, "total_ms": 6.53 } }}
httpserver-timing: total;dur=22.000, edge_colo;desc="PDX ray=a53834c6887a6c24"x-request-id: req_01m6apce0n1vzf0v2cmp05edfm
Captured 2026-11-01 from commit
b495ed3b
, label
live-recorded
(recorded from production). Case
docs-site/mcp-sandbox_exec
.
json{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "vision_act", "arguments": { "url": "https://example.com", "actions": [ { "kind": "markdown" }, { "kind": "screenshot" } ] } }}
textsession brs_01m6apcecpd0agdtqhfgcmk4bf: ok0. navigate ok https://example.com/1. markdown okThis domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.هذا النطاق مُخصص للاستخدام في أمثلة التوثيق دون الحاجة إلى إذن. هذه ليست خدمة، يُرجى تجنب الاعتماد عليها لأغراض الاختبار والمراقبة.该域名仅用于文档示例,无需获得许可。这并非一项服务,请勿将其用于测试和监控目的。L’usage de ce domaine est réservé à des exemples de documentation, sans autorisation préalable. Il ne s’agit pas d’un service ; son utilisation à des fins de test ou de surveillance est à éviter.Данный домен предназначен для использования в примерах документации без необходимости получения предварительного разрешения. Это не сервис; не рекомендуется его использование для тестирования и мониторинга.Este dominio está destinado al uso en ejemplos de documentación sin necesidad de permiso. Esto no es un servicio; evitar utilizarlo para realizar pruebas o monitoreos.[Learn more](https://iana.org/help/example-domains)2. screenshot ok (the screenshot follows as image 1)
json{ "content": [ { "type": "text", "text": "session brs_01m6apcecpd0agdtqhfgcmk4bf: ok\n0. navigate ok https://example.com/\n1. markdown ok\nThis domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.\n\nهذا النطاق مُخصص للاستخدام في أمثلة التوثيق دون الحاجة إلى إذن. هذه ليست خدمة، يُرجى تجنب الاعتماد عليها لأغراض الاختبار والمراقبة.\n\n该域名仅用于文档示例,无需获得…" }, { "type": "image", "mimeType": "image/jpeg", "media": "https://beta.b3os.org/gallery/docs-site/mcp-vision_act/a6b88bd4fdce7cc9.jpg", "bytes": 60653 } ], "structuredContent": { "session_id": "brs_01m6apcecpd0agdtqhfgcmk4bf", "ok": true, "results": [ { "duration_ms": 59.3, "kind": "navigate", "status": "ok", "status_code": 200, "url": "https://example.com/" }, { "duration_ms": 1.62, "kind": "markdown", "markdown": "This domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.\n\nهذا النطاق مُخصص للاستخدام في أمثلة التوثيق دون الحاجة إلى إذن. هذه ليست خدمة، يُرجى تجنب الاعتماد عليها لأغراض الاختبار والمراقبة.\n\n该域名仅用于文档示例,无需获得许可。这并非一项服务,请勿将其用于测试和监控目的。\n\nL’usage de ce domaine est réservé à des exemples de documentation, …", "status": "ok" }, { "duration_ms": 99.445, "kind": "screenshot", "status": "ok", "screenshot": { "format": "jpeg", "width": 1280, "height": 800 } } ] }}
httpserver-timing: total;dur=211.000, edge_colo;desc="PDX ray=a53834c8eb72d74d"x-request-id: req_01m6apcecg9nq57nrjfqx9j6gg
Captured 2026-11-01 from commit
b495ed3b
, label
live-recorded
(recorded from production); long values abridged. Case
docs-site/mcp-vision_act
.
Recipes
Recipes chain products in one flow and run against production the same way; each page shows its last green run: scrape a page, then screenshot its links (vision and render), a routine that scrapes, briefs and screenshots (routines, vision, infer and render) and a sandboxed agent that calls the model and a tool (sandboxes, infer and actions).