Demo guide
A 10-minute scripted demo: opening hook, live walkthrough, close. Audience: technical decision-makers, data engineers, Snowflake practitioners.
Technical requirements checklist (before the demo)#
- Snowflake account with Cortex Code access, connection configured
cortex --versionsucceedsmake installrun,make checkpasses- A Snowflake database with sample tables available (e.g.
SNOWFLAKE_SAMPLE_DATA.TPCH_SF1) - Terminal and browser windows arranged side by side
- Dry-run once, timed, within the last 24 hours
Opening hook (30 sec — the problem)#
"Wiring a CoCo agent into a Streamlit app yourself means building session management across reruns, streaming render, tool-card display, and safety gates from scratch. streamlit-coco gives you that in a few lines of Python. Let me show you."
Live walkthrough (7 min — step-by-step with talking points)#
Step 1 — First impression (2 min)#
- Show
examples/chat_app.py— point out it is a short, readable filebuilt from four calls:
check_environment(),render_start_gate(),get_or_create_session(),panel()+chat_input_bar(). - Run
make chat. - Browser opens → show the panel UI (start gate, then the empty transcript
and status line once started).
- Type: "What tables are available in SNOWFLAKE_SAMPLE_DATA.TPCH_SF1?"
- Watch the streaming transcript render in real time; point out the tool
card that appears (Glob/SQL).
Talking point: "A short Python file. Full agent UI with streaming, tool visibility, and session management handled for you."
Step 2 — Approval gates (3 min)#
- Type: *"Show me the top 5 customers by total order amount. Write the SQL
and run it."*
- Agent proposes SQL → approval banner fires. Walk through the full SQL
shown, click Approve once → results appear.
- Type: "Now create a summary table called TOP_CUSTOMERS in my schema."
- Approval gate fires again — this time click Deny with a reason
("let's not create tables in the demo"). Agent acknowledges and suggests an alternative.
Talking point: "Every destructive action — SQL, file writes, bash commands — requires explicit human approval, configured per tool in CocoOptions.require_approval_for."
Step 3 — Structured output (1.5 min)#
- Switch to
make structured(examples/structured_output.py). - Show the
output_schemain the code. - Type: "Give me a breakdown of orders by status."
- Agent returns structured JSON → app renders it as a chart, not raw text.
Talking point: "Agent output can flow directly into your own widgets via an on_structured_output callback — no manual JSON parsing."
Buffer (0.5 min)#
Land on the close from wherever you are in Step 3. If there is time left in the room after the scripted close, two things are worth showing but are not part of the timed 10-minute script:
make headless(examples/headless_pipeline.py) — the samequery()APIwith no Streamlit import, for CI and batch jobs.
make bi-semanticormake backlog—copilot_rail(), showing CoCo as aright column in a product app rather than a full-page chat.
Closing (2.5 min — value recap + CTA)#
Summary points to land on screen or verbally:
pip install "streamlit-coco[sdk]"— a working app in a handful of lines- Approval gates on by default for destructive tools
- One library covers interactive panel, structured output, and headless use
- Open source (Apache-2.0), built for Snowflake
Call to action: "Try it against your own Snowflake account this week — the quickstart in the README gets you to a working app quickly. Reach out to the asset owner if you hit setup issues."
If they ask… (FAQ)#
| Question | Answer |
|---|---|
| Does it work with Streamlit in Snowflake (SiS)? | Not shipped today. Local deployment (CLI + Streamlit + Snowflake config on the same host) is the only shipped topology; SiS/SPCS are threat-model scope only. |
| What LLM does it use? | Whatever Cortex Code uses under the hood — no model configuration in this library beyond CocoOptions.model. |
| Can I customize which tools need approval? | Yes — allowed_tools / require_approval_for in CocoOptions, per tool. |
| Is it production-ready? | Alpha (0.1.9) — the API may still move. |
| How is this different from using the CoCo CLI directly? | This library handles the Streamlit-specific plumbing: rerun-safe session state, streaming render, tool cards, and approval UI — the CLI alone has none of that. |
| What about file uploads? | upload_to_cwd() / cwd_uploader() / chat_input_bar(accept_file=...) upload into the agent's working directory; see make cwd-upload. |
What's copilot_rail()? | A right-rail Copilot around panel() — connection, queued jobs, and a Display config popover (message/character limits) for a compact transcript. See make bi-semantic / make backlog. |
| Is there an audit log of approvals? | Not persisted today — "Always allow" is session-scoped only and clears on reset. |
Cleanup#