Post-production delivery intelligence

A deadline you cannot move deserves an SLO.

SLATE watches every version of a title as it is made and warns the delivery supervisor when the remaining work will cross the contractual date, not merely when a machine fails.

SLATE traces ingest → rendition fan-out → QC → packaging, derives schedule budget from measured p95 work, and opens jeopardy only after the deterministic three-part gate passes. Failure classes come from FFmpeg's own stderr, never from the scenario that was injected.

0contractual deliveriesi
0currently at riski
n/atightest schedule budgeti
Neverautomatic remediationi
New here

Three things, about two minutes.

SLATE is an early warning system for a delivery date. A film or episode is finished as a set of encoded versions, and a distributor sets a date in a contract for when they must arrive. SLATE watches the work as it happens and says, before the date, whether the remaining work still fits. If you only do three things, do these.

Each step below runs real FFmpeg on this deployment and reads its telemetry back through the official Grafana MCP server. Nothing is pre-recorded and no figure on this page is written by hand.

  1. See what a failure alert misses

    Sixteen renditions, no fault injected, every encode passes, and the delivery still cannot make its date. About thirty seconds.

    Why the product exists
  2. Watch the agents investigate

    Press Run 20s judge proof. Three Google agents diagnose a real encoder failure using only evidence read through Grafana MCP.

    How it works
  3. Drive it with something that is not ours

    Load a preset, rewrite the encode ladder so your own settings run, or send your own PromQL through the same MCP server.

    Proof it is not a canned demo
Every term on this page, in one line each. Open this if any of it is unfamiliar.
Rendition
One encoded version of a title, at a particular resolution, codec and bitrate. A single delivery is usually several of them.
Delivery
The finished set of renditions handed to a distributor or broadcaster.
Contractual date
The date in the contract by which the delivery has to arrive. Unlike almost everything else in software, it does not move.
QC
Quality control. Automated conformance checks on what the encoder actually produced, rather than on what was asked for.
FFmpeg
The open-source tool that does the encoding. Every duration on this page is a real FFmpeg process that really ran.
Schedule budget
Time left before the date, minus time the remaining work still needs. Below zero, the delivery is projected to miss.
p95
The duration 95 out of 100 renditions finish within. Used instead of an average so one slow encode is not hidden by fast ones.
The gate
The plain function that decides whether a delivery is in trouble. Three conditions, all of which must be true. No model can change its answer.
Jeopardy
SLATE's word for a delivery now projected to miss its date. It is a verdict, not a failure.
Failure class
What actually went wrong, recovered from what FFmpeg printed rather than from the scenario that was set up.
SLO
Service level objective. An engineering idea: state the target explicitly, then track how much room is left against it. SLATE applies it to a delivery date.
Grafana
The open-source platform this project's partner track is built on. It holds the metrics, logs, traces, dashboards and alerts.
MCP
Model Context Protocol. The standard way an agent calls a tool. Every Grafana read and write here goes through the official grafana/mcp-grafana server.
ADK
Google's Agent Development Kit. It builds the three agents here: Watch, Diagnose and Remediate, run in that order.
Annotation
A marker written onto a Grafana timeline. SLATE writes one only after a human approves an action, so the timeline records the decision.
Simulated receiver
The one thing here that is not real. Everything up to the handoff runs; the distributor at the far end is stubbed, and the page says so wherever it matters.

Run it yourselfi

No signup, and you do not need a key. Every read is uncapped, and the two endpoints that spend Gemini tokens allow far more calls than anyone can make by clicking. A key raises that ceiling further and gives you a bucket of your own rather than one shared with everybody on your network.

curl -s https://slate-delivery-slo-109051079423.us-central1.run.app/health

Why this is not just monitoring

What a failure alert cannot see.

A delivery can be going to miss its contractual date while nothing has failed at all. An alert that watches for failures is silent for that, right up to the deadline. Every delivery on the board is put through three detectors below, on the same measured data.

Each verdict is computed from that delivery's measured p95, its real job results and its real burn observations. Nothing is projected. /v1/evaluation/detectors

Live control board

Every title. One immovable date.

Waiting for API

The three contracted titles below are board fixtures: when one comes within a couple of hours of its date, the deployment rolls that date forward so this board is never found expired. Only the date moves. The durations, QC results and p95 are whatever the real FFmpeg runs measured. Anything you create here is yours, is never rewritten, and is allowed to run out of time, because for a real delivery that is the truth.

Reading the board triggers the check, throttled to once a minute, in slate_app/fixtures.py. A visitor's delivery is removed after a day so this does not become a scrollback of every run anyone pressed. /v1/board/fixtures reports exactly what was rewritten and what was refused.

Bring your own

None of this is our fixture.

Three ways to drive SLATE with something we did not choose. Load a preset below, open the builder and change the encode ladder, or send your own PromQL through the same MCP server the agents use.

A preset is exactly the body POST /v1/deliveries accepts: download the JSON, post it back unchanged, and you get the same record. The builder rows are the FFmpeg arguments themselves, so asking for libx265 at 3840x2160 encodes that; asking for something out of range returns a 422 rather than a silent clamp.

Build your own delivery: these specs drive the real FFmpeg commands

Every row below becomes an actual encode. Resolution, codec and bitrate are passed to FFmpeg unchanged, and the QC stage decodes what comes back rather than trusting what was requested.

RenditioniWidthiHeightiCodecikb/si
No delivery records yet. Add one above; nothing is pre-seeded as live telemetry.
Bring your own query

The MCP path is general, not three canned calls.i

The agents run three fixed queries on purpose, because an agent free to compose any query can also compose a misleading one. That is a limit we put on the agent, not on the integration. Type your own PromQL and it goes through the same official Grafana MCP server.

Posts to /v1/analyze/promql, which calls query_prometheus over the official mcp-grafana stdio transport and returns the server's raw response. Read only.

Closing the loop

The agent reads the supervisor's chart.

Grafana draws the schedule-budget panel, the official MCP server carries the PNG back, and Gemini reads the picture. The reading is commentary on a chart, never a verdict.

Tool get_panel_image renders dashboard slate-delivery-slo panel 2; the PNG is passed to Gemini on Vertex as an inline image part. decision_source stays deterministic_gate.

Partner integration

Seven tools. Three of them unusual.

Everything SLATE knows about the pipeline, and every change it records, travels through the official Grafana MCP server. The counts below are read live from that server, not written here.

Official grafana/mcp-grafana v1.1.0 over stdio against a self-hosted Grafana OSS stack, which the rules permit for unattended deployments. Each row is confirmed advertised by the running server at load time.

Decision boundary

The model cannot move the line.

All three facts must be true before SLATE declares jeopardy. Gemini corroborates the evidence and proposes options; a human owns every action.

The API returns gate.passed and gate.failed. The ADK agents cannot override the pure-function verdict, and the failure class is assigned by a classifier that cannot read the injected scenario.

AT_RISK requires
projected_completion > contractual_datei
AND positive_burn sustained over 2 windowsi
AND work_remaining > 0i

AUTO_ACTION = NEVERi