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.
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.
-
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 -
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 -
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-grafanaserver. - 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.
The three-minute demonstration
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
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
Every title. One immovable date.
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.
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.
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.
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.
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.
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.
projected_completion > contractual_datei
AND positive_burn sustained over 2 windowsi
AND work_remaining > 0i
AUTO_ACTION = NEVERi