Continuity — Production Memory for the Set
Film productions do not fail because someone forgot a line of code. They fail because nobody can remember what the coat looked like in scene 12 when scene 18 is shooting three weeks later.
Continuity is a Gemini agent that treats ClickHouse as long-term production memory. The agent does not guess. It queries live tables for shots, assets, continuity notes, schedule, and cost events, then recommends what the 1st AD or script supervisor should do next.
Inspiration
Script supervisors still carry that memory in binders, Slack threads, and people's heads. One mismatched trench-coat scuff or a hero watch stopped at 10:17 against dialogue that says "just after midnight" is a pickup day and a budget hit. We wanted an agent that could hold the whole production in one analytical store and reason over it.
What we built
A working agent for a fictional feature, Neon Harbor:
- Gemini + Google ADK for multi-step reasoning
- Official ClickHouse MCP server (
mcp-clickhouse) at runtime — not a README mention - ClickHouse Cloud tables:
productions,shots,assets,continuity_notes,schedule_events,cost_events,agent_actions - Streamlit UI so judges can ask questions live
The agent can surface open critical notes, explain scene 12 vs scene 18 wardrobe/timeline breaks, break down VFX spend, and recommend a fix before wrap.
How it works
- Production state lives in ClickHouse Cloud (
production_memory). - The agent starts the official
mcp-clickhouseserver and callslist_databases/list_tables/run_query. - Gemini reads the result set and returns an actionable brief.
- If the agent process cannot start on the host, the UI still queries ClickHouse live so the demo never goes dark.
What we learned
- Streamlit Cloud health checks port 8501. Pinning
8080in.streamlit/config.tomlkills the app before it boots. - Launching MCP with
uvfails on Streamlit Cloud.python -m mcp_clickhouse.mainis the portable path. - Secrets must live in Streamlit Cloud Secrets /
.streamlit/secrets.toml, never in the public repo.
Challenges
Getting ClickHouse Cloud provisioned, seeded, and reachable from a hosted Streamlit process in a few hours. The first Cloud deploy died on healthz because Uvicorn bound 8080. After we removed the port pin and wired secrets in the Cloud UI, the hosted demo came up.
Try it
Ask: "Give me a full status of Neon Harbor. Any open critical issues?"
You should hear about the coat scuff, the 10:17 watch, and VFX spend — those rows are in ClickHouse, not hallucinated.
Log in or sign up for Devpost to join the conversation.