Inspiration

Film sets bleed money the moment something goes wrong. A lead actor calls in sick, a camera fails, a location falls through — and a line producer has to spend hours manually tracing the ripple effects across call sheets, union overtime rules, equipment bookings, and location permits just to figure out what it will cost to recover. Every hour of that manual triage is crew standby money burning in real time, on productions where a single lost day can run $50k-$250k.

We kept coming back to one idea: this is fundamentally the same problem as automated incident response in software engineering — detect, diagnose, propose a fix, get human sign-off — just applied to a dependency graph of people, equipment, and locations instead of servers. Once we saw it that way, building an autonomous agent for it felt inevitable.

What it does

StudioOS is an AI command center that watches a film production's health in real time and recovers from disruptions autonomously, with a human always making the final call.

Monitors live schedule, budget, resource, and risk metrics, exposed in Prometheus format and scraped into Grafana Cloud dashboards. Detects disruptions the moment they happen via Grafana alert rules, using the official mcp-grafana MCP server to query alerts and metrics at runtime — not just at build time. Plans recovery by traversing the actual production dependency graph (scenes → cast → crew → equipment → budget) and generating costed options with Gemini, each one respecting real constraints like location permit windows and cast availability. Prices every option in dollars: what it costs to do nothing versus what each recovery plan costs, so the savings are never abstract. Escalates instead of guessing — if the agent's confidence drops below 75% (e.g. an ambiguous weather-and-permit conflict), it hands off to a human producer rather than acting on a low-quality plan. Answers questions about the live production state through a Gemini-powered assistant, with a deterministic fallback so the demo experience never breaks. Predicts problems 5 days ahead — overtime risk, wind-sensitive stunt days, permit gaps — before they become active incidents.

The demo film is "The Last Signal," but the whole system runs on data you own: a built-in editor lets you enter your own locations, cast, crew, equipment, and scenes, and the metrics, predictive warnings, timeline, and agent all rebuild from that data.

How we built it Frontend: Next.js dashboard — health gauges, a live SSE-streamed agent reasoning trace, a recovery plan comparison view, a predictive warnings panel, a 7-day shooting timeline, and a guided judge-tour modal. Agent orchestration: a 6-tool agent loop (query alerts, query metrics, analyze impact, generate plans, apply plan, escalate) built around Gemini 2.5 Flash for structured plan generation and live Q&A. Monitoring layer: production metrics exposed via a Prometheus-compatible /api/metrics endpoint, visualized in Grafana Cloud, with alert rules on risk score and active-incident conditions. Grafana integration: the official @modelcontextprotocol/sdk-based mcp-grafana client, connecting live to Grafana Cloud when credentials are present, and falling back to a built-in telemetry simulator otherwise — the header always shows which mode is actually live, so nothing is faked silently. Simulator: a production-state engine modeling scenes, cast, crew, equipment, and locations with real dependency relationships, so a single disruption cascades correctly through everyone and everything it actually affects. Challenges we ran into Making "agentic" mean something real, not just a chat wrapper. It was easy to build a UI that looked like an agent was reasoning. It was much harder to make every line in that trace correspond to an actual function call — actual Grafana queries, actual Gemini calls — so the code backs up the video. Constraint-aware planning, not just plausible-sounding planning. Early recovery plans from the model would casually reschedule a scene to a day the location's permit didn't cover. We had to encode real constraints (permit windows, availability, bookings) into the planning step so the agent's suggestions were actually executable, not just fluent. Designing for graceful degradation. Grafana credentials, Gemini keys — any of these could be missing in a judge's environment. We built explicit fallback paths for both so the app never breaks, and made the current mode visible instead of hiding it. Knowing when to say "I don't know." Getting the escalation threshold right — confident enough to act autonomously on clear-cut disruptions, honest enough to hand off on ambiguous ones — took more iteration than the happy path did. Accomplishments that we're proud of A genuinely closed agentic loop: detect → analyze → plan → price → approve → execute → metrics recover — with every step backed by real tool calls and visible in a live trace. An honest integration story: the app tells you plainly whether it's talking to real Grafana Cloud or running on the local simulator, instead of pretending everything is always live. Recovery plans that respect real-world constraints (permits, availability, bookings) instead of just sounding smart. A responsible-AI moment built into the core loop, not bolted on: the agent refusing to act past its confidence threshold and escalating to a human. A system that isn't hardcoded to one demo film — anyone can load their own production data and get the same live monitoring and recovery planning. What we learned The gap between "an AI feature" and "an agent" is entirely in whether the reasoning trace maps to real execution — that distinction shaped almost every design decision after we noticed it. Domain constraints (permits, union rules, availability windows) matter more to a planning agent's credibility than model quality does. A smarter model with no constraints just produces more confident wrong answers, faster. Building the "do nothing" cost baseline alongside every plan turned out to be one of the highest-leverage things we did — it's what makes the agent's value legible in seconds instead of requiring someone to trust a black box. What's next for StudioOS Write back to Grafana, not just read from it. Push annotations to the live dashboard the moment an incident is detected and a plan is approved, so the production's history is visible directly in Grafana itself. Handle concurrent, competing disruptions. Right now StudioOS resolves one incident at a time; the natural next step is reasoning about two overlapping disruptions that compete for the same crew or equipment, and prioritizing between them. Make confidence explainable. Surface why the agent's confidence dropped on an escalated incident — conflicting data, no historical precedent, ambiguous contract terms — not just the number. Persist state across sessions so savings history and past incidents build into a real operating record instead of resetting per demo. Support a portfolio view — one producer overseeing several productions at once, each with its own StudioOS agent, surfaced in a single command center

Built With

Share this project:

Updates

Submission history