Spaces:
Running
Running
| # Video introduction β `Sizzing/aws_rl_env` | |
| A founder-pitch walkthrough for the HuggingFace Space at | |
| [huggingface.co/spaces/Sizzing/aws_rl_env](https://huggingface.co/spaces/Sizzing/aws_rl_env). | |
| ## Production summary | |
| | | | | |
| |---|---| | |
| | **Runtime** | 2:55β3:05 (target 3:00) | | |
| | **Tone** | Founder pitch β first-person plural, plain-spoken, results-forward. No marketing adjectives. | | |
| | **Voice** | Single narrator, conversational. Recommended: maintainer's own voice. | | |
| | **Aspect** | 16:9 primary (HF Space card, YouTube) + 9:16 vertical re-cut from scenes 1, 6, 7 (LinkedIn / X / Reels) | | |
| | **Resolution** | 1080p min, 1440p preferred for diagram clarity | | |
| | **Audio** | VO + soft underscore (no lyrics). Mute underscore under scene 7 demo so terminal/UI sounds breathe. | | |
| | **Captions** | Burn in. Audience watches muted on social. | | |
| | **Frame rate** | 30 fps (or 60 fps if smooth UI scrolling matters) | | |
| --- | |
| ## Scene-by-scene script | |
| > **Reading the script.** Each scene has four columns of intent: **Time** (target), **Narration** (spoken), **On-screen** (text overlays / lower-thirds), **Visual** (b-roll). Reused diagrams reference exact filenames in [docs/figures/](figures/). | |
| --- | |
| ### Scene 1 β Hook Β· 0:00 β 0:12 | |
| **Narration** | |
| > "Cloud agents fail in production β not because they don't know the commands, but because state drifts, services hiccup, and reward signals get gamed. We built an environment that simulates all three." | |
| **On-screen** | |
| - 0:01 β title card: **AWS Cloud-Ops Β· RL Environment** | |
| - 0:08 β lower-third: `sizzing-aws-rl-env.hf.space/web` | |
| **Visual** | |
| - NEW capture **HOOK-1**: 12 s screen recording of HF Space landing page at `sizzing-aws-rl-env.hf.space/web`. Slow zoom (1.0Γ β 1.08Γ) on the playground header. Cursor idle. | |
| - Source quote for narration: [Blog.MD:26](../Blog.MD), [README.md:17](../README.md). | |
| --- | |
| ### Scene 2 β The gap Β· 0:12 β 0:32 | |
| **Narration** | |
| > "Today you have two options. Real AWS gives you production fidelity but costs hundreds per training run and you can't reset it. Toy emulators are free but their responses don't match production, so the agent learns shortcuts that crumble on real cloud. We close that gap with an OpenEnv-compatible environment that speaks real AWS CLI semantics on a free, resettable backend." | |
| **On-screen** | |
| - 0:14 β left card fades in: **Real AWS** Β· `$$$ Β· irreversible Β· prod risk` | |
| - 0:19 β right card fades in: **Toy emulator** Β· `divergent responses Β· gameable` | |
| - 0:25 β center arrow points down to: **This project** Β· `production-equivalent + zero cost` | |
| - 0:30 β corner badge: `OpenEnv-compatible` | |
| **Visual** | |
| - NEW graphic **GFX-1**: split-screen "the gap" comparison. Left = AWS logo, red dollar icon. Right = toy/emoji graphic, red X. Center = project mark. Hold static while VO plays. | |
| - Source: [Blog.MD:42-48](../Blog.MD), [README.md:53-57](../README.md). | |
| --- | |
| ### Scene 3 β The environment Β· 0:32 β 0:58 | |
| **Narration** | |
| > "120 plus tasks across 5 difficulty tiers β warmup, beginner, intermediate, advanced, expert β plus an adversarial drift track. The curriculum picks tasks adaptively: novel ones first, weak ones often, with mastery tracking and spaced repetition so the agent doesn't forget what it learned. Underneath, a vendored MiniStack covers 34 AWS services, with a custom state endpoint we added so the grader has cheap ground truth." | |
| **On-screen** | |
| - 0:34 β counter animates: `0 β 120+ tasks` | |
| - 0:38 β list ticks down per tier: `25 / 25 / 25 / 25 / 24 / 9 drift` | |
| - 0:46 β chip: `MiniStack Β· 34 services Β· zero cost` | |
| - 0:53 β chip: `custom /_ministack/state endpoint` | |
| **Visual** | |
| - 0:32 β 0:42 β Reuse [docs/figures/tier_pyramid.png](figures/tier_pyramid.png). Animate tiers stacking bottom-up. | |
| - 0:42 β 0:58 β Reuse [docs/figures/curriculum_progression.png](figures/curriculum_progression.png). Slow pan left β right showing the promotion flow. | |
| - Source: [README.md:71-77](../README.md), [Blog.MD:51-57](../Blog.MD). | |
| --- | |
| ### Scene 4 β Anti-reward-hacking Β· 0:58 β 1:25 | |
| **Narration** | |
| > "Here's where most RL projects break. An agent that optimizes a naive reward will discover that printing 'bucket created' to stdout is way easier than actually creating one. So we built an 8-layer defense stack. Command allow-list. Dedup. Grader invisibility. No credit for read-only commands. Monotonic progress. Exact name validation. Ground-truth state checks. Final-state assertions. These layers compose β to hack the reward, the agent has to defeat all eight independently." | |
| **On-screen** | |
| - 0:58 β title: **8-Layer Anti-Reward-Hacking Stack** | |
| - 1:05 onward β each layer fades in synchronized to VO, ~2 s apart: | |
| 1. `Command allow-list` | |
| 2. `Operation dedup` | |
| 3. `Grader invisibility` | |
| 4. `No verification reward` | |
| 5. `Monotonic progress` | |
| 6. `Exact name validation` | |
| 7. `Ground-truth /_ministack/state` | |
| 8. `Final-state assertions` | |
| - 1:22 β bottom banner: **All 8 must be defeated to game reward** | |
| **Visual** | |
| - 0:58 β 1:08 β Reuse [docs/figures/reward_components.png](figures/reward_components.png) as background, dimmed. | |
| - 1:08 β 1:25 β NEW graphic **GFX-2**: vertical 8-layer stack list with each row revealed in sync with VO. Bold layer name + faint sub-label of "the hack it defeats" pulled from [Blog.MD:223-230](../Blog.MD). | |
| - Source: [Blog.MD:160-232](../Blog.MD), [README.md:91](../README.md), [server/README.md Β§9](../server/README.md). | |
| --- | |
| ### Scene 5 β Parallel rollouts Β· 1:25 β 1:50 | |
| **Narration** | |
| > "GRPO needs eight rollouts per training step on the same task. Run them sequentially and you burn 2,400 milliseconds per step before the GPU does anything. So we built three coordinated pool layers β server-side MiniStack pool, client-side GrpoPool, in-process MultiTurnEnvPool β that run all eight in parallel without state contamination. 2,400 milliseconds drops to about 300. On a single GPU." | |
| **On-screen** | |
| - 1:26 β header: **Parallel rollouts Β· G = 8** | |
| - 1:35 β animated counter: `2400 ms β 300 ms / step` | |
| - 1:42 β chip: `1 GPU Β· zero state contamination` | |
| **Visual** | |
| - 1:25 β 1:45 β Reuse [docs/figures/parallel_rollout_diagram.png](figures/parallel_rollout_diagram.png). Highlight the three pool layers in turn (subtle pulsing border) as VO names them. | |
| - 1:45 β 1:50 β Optional NEW capture **TERM-1**: 5 s `docker logs` cutaway showing 8 concurrent session IDs. Skippable if shoot time is tight β the diagram alone carries this scene. | |
| - Source: [Blog.MD:246-298](../Blog.MD), [README.md:97-99](../README.md). | |
| --- | |
| ### Scene 6 β Training & results Β· 1:50 β 2:20 | |
| **Narration** | |
| > "Two-stage pipeline. SFT first: LoRA fine-tune on a 1,500-row synthetic dataset, with a base model picked from an 11-model benchmark β Qwen2.5-Coder-3B won. Then GRPO: TRL's group-relative policy optimization, multi-turn rollouts, Optuna for hyperparameters. After training: format compliance hit 100 percent. Exact-match jumped from 39 to 89 percent. Intermediate-tier success climbed from 81 to 87. Three-billion parameters, free Colab runtime." | |
| **On-screen** | |
| - 1:50 β header: **SFT β GRPO** Β· two-stage | |
| - 1:53 β chip row: `Qwen2.5-Coder-3B Β· LoRA Β· TRL GRPO Β· Optuna` | |
| - 2:03 β three big counter cards animate in: | |
| - **Format compliance** β `0 β 100%` | |
| - **Exact-match** β `39% β 89%` | |
| - **Intermediate tier** β `81% β 87%` | |
| - 2:17 β corner badge: `1 GPU Β· Colab-reproducible` | |
| **Visual** | |
| - 1:50 β 2:00 β Reuse [docs/figures/sft_loss_curve.png](figures/sft_loss_curve.png) on left, [docs/figures/grpo_reward_curve.png](figures/grpo_reward_curve.png) on right, side-by-side. | |
| - 2:00 β 2:12 β Reuse [docs/figures/sft_vs_grpo_by_tier.png](figures/sft_vs_grpo_by_tier.png) full-frame. | |
| - 2:12 β 2:20 β Reuse [docs/figures/base_vs_sft_success.png](figures/base_vs_sft_success.png) with the three counter cards overlaid. | |
| - Source: [Blog.MD:26](../Blog.MD), [README.md:17](../README.md), [README.md:94-100](../README.md). | |
| --- | |
| ### Scene 7 β Live demo Β· 2:20 β 2:45 | |
| **Narration (sparser, let the UI breathe)** | |
| > "Here's what it looks like live. Pick a task. The agent emits real AWS CLI commands. Reward ticks up as resources are actually created β not just claimed. Switch to expert tier and drift kicks in: the env mutates state behind the agent's back; it has to detect and repair." | |
| **On-screen** β minimal lower-thirds only: | |
| - 2:21 β `Live demo Β· sizzing-aws-rl-env.hf.space/web` | |
| - 2:30 β `expert tier Β· drift mutation injected` | |
| **Visual** | |
| - NEW capture **DEMO-1**: 25 s screen recording of the live `/web` playground, no edits except trim. | |
| - 0:00 β 0:05 β landing, click into intermediate tier, pick a task (e.g. "create S3 bucket with versioning") | |
| - 0:05 β 0:13 β agent runs, command stream visible, reward bar climbs | |
| - 0:13 β 0:20 β switch to expert tier, pick a drift task | |
| - 0:20 β 0:25 β drift mutation appears in the diff panel; agent issues repair commands | |
| - **Important:** record from the public HF Space URL, not localhost. URL bar visible. | |
| --- | |
| ### Scene 8 β CTA Β· 2:45 β 3:00 | |
| **Narration** | |
| > "Try the demo, fork the repo, run it on Colab. Links below." | |
| **On-screen** β full end card, hold static for the full 15 s: | |
| - Title: **AWS Cloud-Ops Β· RL Environment** | |
| - Subtitle: **OpenEnv Β· SFT β GRPO Β· 120+ tasks** | |
| - 4 link rows with icons: | |
| - π **Live demo** β `sizzing-aws-rl-env.hf.space/web` | |
| - π€ **HF Space** β `huggingface.co/spaces/Sizzing/aws_rl_env` | |
| - π¦ **GitHub** β `github.com/udaykiranpadhy/aws-rl-env` | |
| - π **Colab notebooks** β see repo `train/` | |
| - QR code (bottom-right) β live demo URL | |
| **Visual** | |
| - NEW graphic **GFX-3**: end card. Static frame, hold full 15 s. Background: faint architecture diagram at 10% opacity. | |
| - Source for links: [README.md:21-25](../README.md), [Blog.MD:30-36](../Blog.MD). | |
| --- | |
| ## Capture list β assets to produce | |
| ### Screen recordings (3) | |
| | ID | Scene | Duration | What to record | | |
| |----|-------|----------|----------------| | |
| | **HOOK-1** | 1 | 12 s | HF Space landing at `/web`, slow 1.0Γβ1.08Γ zoom on header. No clicks. | | |
| | **DEMO-1** | 7 | 25 s | Live playground walkthrough: pick task β run β reward climbs β switch to expert β drift repair. **Public URL only β URL bar must show `sizzing-aws-rl-env.hf.space`, not localhost.** | | |
| | **TERM-1** | 5 (optional) | 5 s | `docker logs <container>` showing 8 concurrent session IDs. Skip if shoot time tight. | | |
| **Recording tips** | |
| - Use 1440p+ on a 16:9 monitor; downscale later. | |
| - Hide browser bookmarks bar; use a clean profile. | |
| - Disable cursor highlights unless they aid clarity. | |
| - For DEMO-1, pre-warm the Space (cold-start can take 30 s+). | |
| ### Static graphics (3) | |
| | ID | Scene | Spec | | |
| |----|-------|------| | |
| | **GFX-1** | 2 | Split-screen "the gap": left card (Real AWS Β· $$$ Β· irreversible), right card (Toy emulator Β· divergent Β· gameable), center arrow β project. | | |
| | **GFX-2** | 4 | Vertical 8-layer stack list. Each row: bold layer name + faint sub-label of the hack it defeats. Rows fade in sequentially in sync with VO. | | |
| | **GFX-3** | 8 | End card. Title + subtitle + 4 link rows (icons + URLs) + QR code β live demo. Faint architecture diagram at 10% opacity in background. | | |
| **Animated overlays (in-editor, no separate file needed)** | |
| - Scene 3: counter `0 β 120+`, tier list `25/25/25/25/24/9` | |
| - Scene 5: counter `2400 ms β 300 ms / step` | |
| - Scene 6: three counter cards `0β100%`, `39%β89%`, `81%β87%` | |
| --- | |
| ## Existing-asset reuse map | |
| All paths relative to repo root. Every file below is verified to exist in [docs/figures/](figures/). | |
| | File | Used in scene | | |
| |------|---------------| | |
| | [docs/figures/tier_pyramid.png](figures/tier_pyramid.png) | 3 | | |
| | [docs/figures/curriculum_progression.png](figures/curriculum_progression.png) | 3 | | |
| | [docs/figures/reward_components.png](figures/reward_components.png) | 4 | | |
| | [docs/figures/parallel_rollout_diagram.png](figures/parallel_rollout_diagram.png) | 5 | | |
| | [docs/figures/sft_loss_curve.png](figures/sft_loss_curve.png) | 6 | | |
| | [docs/figures/grpo_reward_curve.png](figures/grpo_reward_curve.png) | 6 | | |
| | [docs/figures/sft_vs_grpo_by_tier.png](figures/sft_vs_grpo_by_tier.png) | 6 | | |
| | [docs/figures/base_vs_sft_success.png](figures/base_vs_sft_success.png) | 6 | | |
| | [docs/figures/architecture_diagram.png](figures/architecture_diagram.png) | 8 (faint background) | | |
| --- | |
| ## Verifiable claims (don't drift these in edit) | |
| Every number in the script is sourced. If editor or AI tooling rewords these, double-check against the listed source line. | |
| | Claim | Source | | |
| |-------|--------| | |
| | 120+ AWS tasks Β· 5 tiers + drift | [README.md:71-72](../README.md), [Blog.MD:53](../Blog.MD) | | |
| | MiniStack Β· 34 AWS services | [Blog.MD:52](../Blog.MD), [README.md:58](../README.md) | | |
| | 8 anti-hacking layers (exact list) | [Blog.MD:221-230](../Blog.MD) | | |
| | 2,400 ms β 300 ms / step | [Blog.MD:248](../Blog.MD) | | |
| | G = 8 parallel rollouts on 1 GPU | [Blog.MD:26](../Blog.MD), [README.md:99](../README.md) | | |
| | Format compliance: 100% | [Blog.MD:26](../Blog.MD), [README.md:17](../README.md) | | |
| | Exact-match: 39% β 89% | [Blog.MD:26](../Blog.MD), [README.md:17](../README.md) | | |
| | Intermediate-tier: 81% β 87% | [Blog.MD:26](../Blog.MD), [README.md:17](../README.md) | | |
| | Base model: Qwen2.5-Coder-3B (11-model benchmark) | [README.md:95](../README.md) | | |
| | Free Colab runtime | [README.md:228-229](../README.md), [Blog.MD:26](../Blog.MD) | | |
| --- | |
| ## Verification checklist (before publishing) | |
| - [ ] Final cut between **2:30 and 3:15**. Trim scenes 3 or 4 if over. | |
| - [ ] Every on-screen number matches a row in the **Verifiable claims** table. | |
| - [ ] CTA scene 8 holds for **at least 5 s**, end-card text is legible at 720p (most-compressed downstream target). | |
| - [ ] DEMO-1 URL bar shows the **public HF Space**, not localhost. | |
| - [ ] Every reused diagram filename in this doc still exists under [docs/figures/](figures/) (`ls docs/figures/ | grep <name>`). | |
| - [ ] Read narration aloud: no "revolutionary", "game-changing", "cutting-edge", "next-generation", "unleash". If one slipped in, replace with the concrete claim it was hiding. | |
| - [ ] Captions burned in for muted-autoplay social. | |
| - [ ] 9:16 vertical re-cut produced from scenes 1, 6, 7 (β€ 60 s) for LinkedIn / X / Reels. | |
| - [ ] Audio underscore ducked under scene 7 demo so UI sounds breathe. | |
| --- | |
| ## Notes on tone | |
| This pitches as a maintainer, not a marketer. The numbers do the heavy lifting. Avoid these patterns: | |
| - β "Revolutionary new approach toβ¦" | |
| - β "Cutting-edge framework that unleashesβ¦" | |
| - β "Game-changing results across the board" | |
| - β "Format compliance hit 100 percent. Exact-match jumped 39 to 89." | |
| - β "We built three coordinated pool layers." | |
| - β "Here's what most RL projects break on." | |
| When uncertain between two phrasings, pick the one that sounds like the maintainer answering a question over coffee. | |