Summary videos
You shouldn't have to read every step to know what a Change did. Turn summary videos on, and each Change that finishes, or stops and needs a person, gets a short narrated video at the top of its page: what shipped and where it runs, what each agent and person did, and why it will be nice for the people who use it. A video takes a minute or two to make and a minute or so to watch, and it can be posted to Slack for everyone who wasn't watching.
For the bigger features, anyone in the org can add an announcement beside the summary, with the org's presenter opening it on stage. Every Monday, the org also gets a weekly video of the week across every Product.
What a summary video shows
Each summary is narrated over branded cards and the Change's own screenshots, with light music underneath. No generated characters appear in it.
- A title card on a backdrop of infrared light, with the greeting for the day and time the Change finished ("Happy Sunday afternoon"), the Product and issue, what shipped in a few words, and where it runs now (its version and environments). The narrator reads the opening line.
- What shipped: the feature in a sentence or two, and the environments it reached with their names and versions on screen.
- A scene for each step that ran, with that step's verdict card: one sentence on what the agent or person did, the exact facts on screen.
- Why it's neat: at most two sentences on why the change will be nice for the people who use it, grounded in the issue and what changed, over a screenshot of the live site when there is one. A Change that stopped gets what to do about it instead.
- A sign-off card with a closing line written for that Change.
One voice reads the whole video. A typical one runs a minute to a minute and a half and costs about 5¢.
A real summary video from one of darkshift's own Products, with sound. The two scenes about the people who approved it are left out here, so the step numbers skip.
Watch it
The video sits at the top of the Change's page, above Where this change is: a small player titled Summary video or Announcement, with its length, what it cost and what each part cost, and Watch fullscreen. When the Change has both, Summary and Announcement switch between them; the page opens on the announcement, and your browser remembers which one you chose.
Collapse shrinks the player to a slim bar in the same place. Your browser remembers that too, so every Change opens collapsed until you open the bar again.
On Changes, a request whose Change has videos shows them as posters in its Videos column; choose one to watch it on the Change's page.
When a video is ready, Infrared comments on the Change's GitHub issue with a link to the Change's page (once per Change; the video itself stays private to the org). If your org has connected Slack, Infrared also posts it, playing inline, to every destination that takes that kind of video, and the panel links each post. Share to Slack posts the video you're watching again, to the destinations you tick.
While a video is being made, the page says so. If one couldn't be made, the page says why, with Try again. A Change that finished before videos were on can still get one: Make a summary video on its page (about 5¢).
Announcements
An announcement is a second video beside the summary, never in its place. It opens with the org's presenter on Infrared's keynote stage saying the opening line, with their name and title on a lower third, the line captioned, and an AI-generated label. The narrator then tells the rest, as in the summary.
On a finished Change, choose Make an announcement. Infrared says who presents it and what it costs, and asks you to confirm with Make the announcement. It takes a few minutes, and the summary stays as it is meanwhile. Make the announcement again makes a new one.
Each announcement is made fresh: Google's image model places the presenter on the stage (with the camera, the light and the stage's wall varying each time), and Google's video model makes an 8-second opening clip from that picture, in the presenter's voice. It costs about 85¢ and uses one of Google's video requests for the day.
When an announcement can't be made, nothing is spent and the summary is untouched:
- Before it starts, Make an announcement says why it isn't offered: the org has no presenter image yet, or Google's daily video limit is used up (it says when that resets, at midnight Pacific). Asking through the API is refused for the same reasons, and when this month's cap can't fit an announcement.
- Partway through, if Google refuses the stage picture or the clip, the video stops before the narration is bought, and the panel says Couldn't make the announcement: with Google's reason. A per-minute limit is waited out and retried; only a refusal for the day counts as the day's limit being used up.
The presenter
The presenter is a character your org sets up once, under Settings → Summary videos, in Announcement presenter (org admins):
- Name and Title, shown on the lower third;
- Voice, the Gemini voice the presenter speaks with;
- a presenter image: a clear PNG or JPEG of 5 MB or less, sent only after you confirm that you have the rights to it, or the permission of anyone it shows, for Infrared to animate it.
Infrared records who confirmed and when. The image is kept by Infrared and served only through its API to people in the org. Replace the presenter image and Remove image change it; without an image, announcements aren't made. Every Product's announcements use the org's presenter unless the Product's settings choose another.
The weekly video
Every Monday at 08:00, in the org's time zone, Infrared makes a video of the last seven days across every Product and shows it at the top of Products, beside the week's story. It tells the whole team what reached production and why it matters, thanks the people who made it happen by name, says how delivery flowed, and points at what needs a look. Its scenes are cards made from the week's figures: the week at a glance, activity across Products, each busy Product, the people, and the week's health.
Part of a real weekly video from darkshift's own org, with sound: the opening, the week at a glance, the busiest day and how delivery flowed. The scenes for each Product and the people who did the work are left out here.
The presenter opens it on stage, as in an announcement. When the org has no presenter image, Google's daily video limit is used up, or the cap can't fit the clip, it opens on a narrated title card instead. Make it (or Make again) beside the video makes one now. A video that couldn't be made says why, and the last one stays. A weekly video costs about $1.05, counted in the monthly cap, and its script is written on the org's most capable model.
curl -X POST "https://<host>/api/v1/orgs/<org>/week-in-review/video" -H "Authorization: Bearer $INFRARED_TOKEN"
Turn it on
Summary videos are switched on for the whole install first, then org by org.
- The install. A platform admin opens Settings → Install features and turns on Let orgs make summary videos. The panel says whether the install is ready: its Media volume (the chart value
summaryvideo.enabled), its Gemini key (the platform's key, in the Secret it names, which voices every video and makes the announcements, so every video spends the platform's Gemini credit), and the Orgs with videos on. While something is missing, the switch stays off and the panel says what to set. With the API,GET /v1/featuresandPUT /v1/features/summary-videoswith{"enabled": true}. - The org. An org admin opens Settings → Summary videos and turns on Make summary videos. The panel shows this month's videos and what they cost, the Monthly cap (USD) ($5 unless you change it) and the Time zone for the greeting (America/New_York unless you change it). When the rest of a calendar month's cap can't fit a video, Infrared skips it and says so on the Change.
From then on, each Change that finishes or stops gets its summary within a couple of minutes. Asking for one by hand works even with the org's automatic videos off; the cap still applies.
With the API:
# Turn the org's videos on, with a cap and a time zone.
curl -X PUT https://<host>/api/v1/orgs/<org>/summary-videos \
-H "Authorization: Bearer $INFRARED_TOKEN" -H 'Content-Type: application/json' \
-d '{"enabled": true, "monthlyCapUSD": "5", "timeZone": "America/New_York"}'
# Make a Change's summary, or its announcement.
curl -X POST "https://<host>/api/v1/orgs/<org>/agentworkflowruns/<run>/summary-video" -H "Authorization: Bearer $INFRARED_TOKEN"
curl -X POST "https://<host>/api/v1/orgs/<org>/agentworkflowruns/<run>/summary-video?kind=announcement" -H "Authorization: Bearer $INFRARED_TOKEN"
A run's summaryVideo says where its summary is, and announcementVideo where its announcement is: requested, making, ready (with videoURL, posterURL, seconds, costUSD and breakdown), failed or skipped (with message). Asking for an announcement that can't be made now answers 409 with the reason, for example Google's video limit is used up until midnight Pacific (in 7h 38m). Try again after that. The presenter is GET and PUT /v1/orgs/{org}/summary-videos/presenter, and its image /v1/orgs/{org}/summary-videos/presenter-image.
What it costs
| Part | Model | Paid by | Summary | Announcement |
|---|---|---|---|---|
| The script | the org's Balanced tier (see Models and costs) | the org's Anthropic key | about 3–4¢ | about 3–4¢ |
| The narration | Gemini 3.8 Flash text-to-speech | the install's Gemini key | about 2¢ | about 2¢ |
| The stage picture | Gemini 3.1 Flash-Lite Image | the install's Gemini key | — | about 3¢ |
| The presenter's opening | Gemini Omni Flash, 720p, about 8 seconds | the install's Gemini key | — | about 80¢ |
| Cards and music | rendered, or made once and reused | — | 0¢ | 0¢ |
A weekly video costs about $1.05: a longer script on the org's most capable model, its narration, and the presenter's stage picture and opening clip. An org can also have a fresh studio backdrop made for each video's title and sign-off cards, for about 7¢ more.
Accuracy and privacy
The script comes from the run's own record and follows fixed rules. Agents are credited with what they did and people with what they decided (a human step is a person deciding). Nothing "happened by itself". Cost and agent time are Infrared's own figures, never time spent waiting.
The videos, their posters and the presenter image are kept by Infrared and served only through its API to people with a role in the org. They never live at a public address. A generated character appears only in an announcement or a weekly video's opening, made from an image uploaded with consent, and is labelled AI-generated whenever it is on screen.
How it is made
The operator runs one Kubernetes Job per video in Infrared's namespace. Its containers take screenshots of the Change with a headless browser, write the script and voice it, render the cards (and for an announcement, make the stage picture and the opening clip), join everything with ffmpeg, and upload the result to the API. The Job holds no API token: it signs in with a ticket the operator signs, good for an hour, that lets it read its org as a viewer and upload that one video.
An install turns the feature on with the chart's summaryvideo.enabled (which adds the API's media volume and the operator's Job) and a Secret holding a Gemini API key (summaryvideo.geminiSecret, key api-key).