Skip to content

Instantly share code, notes, and snippets.

@EronWright
Last active October 31, 2025 14:41
Show Gist options
  • Select an option

  • Save EronWright/116ca8aa1cd876ffb7534d53b76f3239 to your computer and use it in GitHub Desktop.

Select an option

Save EronWright/116ca8aa1cd876ffb7534d53b76f3239 to your computer and use it in GitHub Desktop.
1-Minute Interactive Stacks Demo Plan - Pulumi Intent MCP Server

1-Minute Interactive Stacks Demo Plan

Setup: Claude Code (VS Code) + Pulumi Cloud Console (side-by-side)

Pre-demo: Have browser at app.pulumi.com/[org] dashboard


Demo Script (70 seconds)

Opening (10 seconds)

You say: "I'm so excited to introduce Pulumi Intent, a next-generation IaC tool. It's a new way to work with Pulumi Cloud that introduces Interactive Stacks, which let you manage infrastructure across the whole spectrum from spontaneous exploration to production-ready code. It uses many of the same IaC building blocks you use today - stacks, providers, policies, ESC - without code. We're excited to have you dogfood this with us - come visit us at #hackathon-fy26q2-pulumi-intent. Let's jump in."


Beat 1: Plan EC2 Instance (12 seconds)

You type in Claude Code chat:

In planning mode: Help me demo pulumi-intent by quickly standing up a tiny EC2 instance we can SSH into. Please use the "pulumi" org and the "intent" project.

Claude responds with a plan (like pulumi preview):

  • Shows the steps it will take
  • Lists resources to be created
  • Mentions policy checks

WHILE SHOWING THE PLAN, you narrate: "Just like pulumi preview, we see the plan first. What you're seeing are the same IaC building blocks:

  • Stacks - creating a real stack in Pulumi Cloud
  • Providers - configuring the AWS provider
  • Policies - will check against org policies
  • Resources - SSH key, security group, EC2 instance

But we're working at the spontaneous end of the spectrum - no code yet, just conversation."


Beat 2: Execute & Watch (15 seconds)

You approve the plan (click approve or type "proceed")

Claude executes in real-time (visible in chat panel):

  • Discovers available instance types wiht a provider function
  • Generates SSH key via Bash tool
  • Creates security group
  • HITS POLICY VIOLATION (SSH from 0.0.0.0/0 blocked!)
  • Auto-detects your IP via curl
  • Creates EC2 instance with restricted access via lifecycle_resource_apply

WHILE CLAUDE IS WORKING, you narrate: "Watch - it's provisioning now. Look, it hit our org policy! That's the same policy pack that governs your coded infrastructure. Claude automatically adapted, detected my IP, and fixed the security group."

"That policy violation was real - not staged. Your policy packs protect all infrastructure - coded and interactive."

Open the browser: "Pulumi Intent is making updates to the stack in real-time."

When complete, you point at browser: "And there it is - Interactive Stack up and running in the Pulumi Dashboard."

You emphasize: "No code, no git. We'll get to that later."


Beat 3: Cloud Integration

You open the EC2 Resource View and then the AWS Console link: "Look at that, a managed resource in Pulumi Cloud!"


Beat 4: Interactive Modification - Tag and Protect the Instance (8 seconds)

You type in Claude Code chat:

In planning mode, tag the EC2 instance with "managed-by: pulumi-intent" and mark the EC2 instance as protected.

Claude updates the resource in state (marks protect=true)

You point at browser (refresh to show protected flag): "This is what makes it interactive - I can modify resources on the fly. This instance is now protected from accidental deletion, and tagged in the console. Let me show you..."


Beat 5: Stack Outputs & References & Secrets (5 seconds)

You point at stack outputs in browser: "Instance IP, SSH command - these outputs become stack references. Your programmatic stacks can consume these via StackReference - interactive and coded infrastructure working together."

"I see there's an output that perhaps should be encrypted by Pulumi Cloud. Let's mark it as a secret."

You type in Claude Code chat:

Mark the publicIp output as a secret.

Beat 6: Work Backwards - Move Toward Code (10 seconds)

You type in Claude Code:

Generate a TypeScript component from this stack

Claude generates component code (shows in chat, may write to file)

You say: "Now we're moving across the spectrum toward code. I can lock this infrastructure into a reusable component..."

You point at generated code in editor: "...and I don't even need to redeploy. This infrastructure is already running. That's the spectrum - start spontaneous, move to coded when ready."


Beat 7: CLI Interoperability - Protection Works (7 seconds)

You type in Claude Code terminal or external terminal:

pulumi destroy --stack pulumi/intent/ec2-demo --yes

Claude CLI attempts deletion, but fails on protected resource

You say: "See - the CLI respects the protection flag we set interactively. Let me remove the protection..."

You type in Claude Code chat:

Unprotect all resources and destroy the stack

Closing (3 seconds)

You say: "We've just scratched the surface here. Intent can read and manipulate virtually any Pulumi Stack, so it's useful for migrating resources across stacks and for advanced repairs. Also: declarative infrastructure using natural language."

You say: "Pulumi Intent - interactive, no-code stacks for Pulumi Cloud. We'd love to have you try it - come join us at #hackathon-fy26q2-pulumi-intent."


Why This Demo Works

Team Credit & Invitation

  • Credits the team: Eron, Claude, Claire, Richard, Devon
  • Invites collaboration: #hackathon-fy26q2-pulumi-intent channel
  • Welcoming tone: "We're excited to have you dogfood this with us"

Interactive Modification Shows the Power

  • Real-time changes: Protect flag set without code changes
  • State manipulation: Direct interaction with stack state
  • CLI respects it: Shows true interoperability (protect flag enforced)
  • Demonstrates "interactive": Not just create-once, but ongoing interaction

Planning Mode = Preview

  • Just like Pulumi CLI: Shows plan before execution (like pulumi preview)
  • Builds confidence: User sees what will happen before it happens
  • Educational: Teaches the workflow while demonstrating

Interactive Stacks Concept

  • Spectrum: Spontaneous (conversation) → Coded (components/programs)
  • Same building blocks: Stacks, providers, policies, state, outputs
  • Mobility: Start interactive, move to code when ready (via component generation)
  • Integration: Interactive stacks work with coded stacks via stack references

Real Policy Violation

  • Authentic: Not staged - the policy genuinely blocks 0.0.0.0/0
  • Shows intelligence: Claude detects your IP and adapts
  • Proves integration: Same policy packs govern coded and interactive infrastructure

Real Stack References

  • Stack outputs (IP, SSH command) visible in console
  • Can be consumed by programmatic stacks via StackReference
  • Interactive and coded infrastructure compose together

Real Interoperability

  • Created via MCP tools in Claude Code (interactive)
  • Protected via conversation (interactive modification)
  • CLI respects protection flag (true interoperability)
  • Destroyed via conversation (full lifecycle)

Exact Commands (Copy-Paste)

Command 1 (in Claude Code chat - triggers planning mode):

In planning mode: Help me demo pulumi-intent by quickly standing up a tiny EC2 instance we can SSH into. Please use the "pulumi" org and the "intent" project.

Command 2 (after reviewing plan - approve execution):

Proceed with the plan

Command 3 (in Claude Code chat - interactive modification):

Mark the EC2 instance as protected

Command 4 (in Claude Code chat):

Generate a TypeScript component from this stack

Command 5 (in terminal - Claude Code integrated terminal or external):

pulumi destroy --stack pulumi/intent/ec2-demo --yes

Command 6 (in Claude Code chat - after seeing protection work):

Unprotect all resources and destroy the stack

Pre-Demo Checklist

  • pulumi whoami → confirm Pulumi Cloud backend
  • ✅ AWS credentials configured
  • ✅ MCP server configured in Claude Code (check settings)
  • ✅ Pulumi Cloud console open at org dashboard in browser
  • Policy pack configured: "prohibited-public-internet" must exist in org
  • ✅ VS Code with Claude Code extension running
  • ✅ Terminal ready (integrated or external) for CLI destroy attempt
  • ✅ Clean slate: delete demo stack if exists (pulumi stack rm pulumi/intent/ec2-demo --yes)

Claude Code Specific Notes

Planning Mode Activation

  • Start message with "In planning mode:" or similar
  • Claude will respond with a plan and wait for approval
  • Click the approval button or type "proceed"

MCP Server Configuration

Ensure pulumi-intent MCP server is configured in Claude Code settings:

  • Check: VS Code Settings → Extensions → Claude Code → MCP Servers
  • Should see: pulumi-intent server configured

Visual Layout

Recommended screen layout:

  • Left: VS Code with Claude Code chat panel open
  • Right: Browser with Pulumi Cloud console

Alternative layout:

  • VS Code full screen with Claude Code chat
  • Alt-tab to browser for Pulumi Cloud views

Tool Call Visibility

  • Claude Code shows tool calls in chat (e.g., mcp__pulumi-intent__lifecycle_resource_apply)
  • This is GOOD for demo - shows the MCP tools being used
  • Emphasize: "See these tool calls? That's Claude using Pulumi Intent MCP server directly"

Key Talking Points (Weave into narration)

Opening

  • "Built by our team: Claude, Claire, Richard, Devon"
  • "Pulumi Intent introduces Interactive Stacks"
  • "Cover more of the spectrum: spontaneous exploration → production code"
  • "Same IaC building blocks: stacks, providers, policies"
  • "Come join us at #hackathon-fy26q2-pulumi-intent to dogfood"

During Planning Phase

While showing the plan:

  • "Just like pulumi preview, we see the plan first"
  • "Same building blocks: stacks, providers, policies, resources"
  • "But we're at the spontaneous end - no code yet, just conversation"
  • "Policy checks will run automatically when we execute"

During Provisioning

While Claude is working:

  • "Same Pulumi building blocks you use today"
  • "Same providers - AWS provider being configured"
  • "Same policies - watch, it's about to hit our org policy..."
  • "Same state - everything persisted in Pulumi Cloud backend"

Interactive Modification

After protecting the resource:

  • "This is what makes it interactive - modify resources on the fly"
  • "No code changes, no redeployment - just conversation"
  • "State updated in Pulumi Cloud in real-time"

Protection Enforcement

When CLI destroy fails:

  • "See - the CLI respects the protection flag we set interactively"
  • "That's true interoperability - same state format, same semantics"

Post-Provisioning

Policy: "That policy pack governs all infrastructure - coded and interactive"

Stack References: "Interactive and coded stacks work together via StackReference - one unified platform"

Component Generation: "Now we're moving across the spectrum toward code - lock it in when ready, no redeployment needed"

Closing

  • "Come try it with us at #hackathon-fy26q2-pulumi-intent"
  • "We're excited to have you dogfood this"

Timing Breakdown

  • 0:00-0:10: Opening + team credit + introduce Pulumi Intent & Interactive Stacks + channel invitation
  • 0:10-0:22: Show plan + narrate building blocks + spectrum
  • 0:22-0:37: Execute + watch provisioning + policy hit
  • 0:37-0:42: Point out policy enforcement
  • 0:42-0:50: Interactive modification (protect instance)
  • 0:50-0:55: Stack outputs/references
  • 0:55-1:05: Generate component (move across spectrum)
  • 1:05-1:12: CLI destroy attempt + protection enforcement + cleanup
  • 1:12-1:15: Closing + channel invitation reminder

Post-Demo Call to Action

Slack Message to Share:

"We just demoed Pulumi Intent - Interactive Stacks for Pulumi Cloud! 🎉

Huge thanks to the team: Claude, Claire, Richard, and Devon for making this happen.

Want to try it? Join us at #hackathon-fy26q2-pulumi-intent to:

  • Get set up with the MCP server
  • Share your feedback
  • Help us dogfood and improve it

Key features:

  • 🗣️ Conversational infrastructure via Claude Code
  • 🔒 Policy enforcement (same packs as coded infra)
  • 🔗 Stack references (interactive + coded together)
  • 📝 Component generation (live infra → code)
  • 🛠️ Full CLI interoperability

Demo plan: https://gist.github.com/EronWright/116ca8aa1cd876ffb7534d53b76f3239"


What Makes This Demo Special

  1. Team Recognition - Credits Claude, Claire, Richard, Devon in opening and closing
  2. Community Invitation - Invites dogfooding at #hackathon-fy26q2-pulumi-intent
  3. Pulumi Intent - New capability for Pulumi Cloud
  4. Interactive Stacks - Covers the spectrum from spontaneous to coded
  5. Interactive Modification - Shows ongoing interaction, not just create-once (protect flag demo)
  6. Planning Mode - Shows the plan before execution, like pulumi preview
  7. Same Building Blocks - Stacks, providers, policies, state, outputs (familiar to Pulumi users)
  8. Policy violation is REAL - not staged, genuinely catches insecure config
  9. Infrastructure is REAL - actually SSHable, not mocked
  10. Protection is REAL - CLI respects the protect flag set interactively
  11. Mobility - Start spontaneous (interactive), move to coded (component generation)
  12. Interoperability - Protection flag works across interactive and CLI
  13. Speed - ~75 seconds from conversation to running, protected EC2

This demonstrates: Infrastructure across the spectrum - spontaneous exploration with Interactive Stacks, ongoing interactive modifications, production-ready code when needed, all on Pulumi Cloud. Built by our team, ready for you to try!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment