Setup
What to do before running the demos. Each step says which demos need it - skip the rest.
Who to sign in as
Every account's password is Savetheinternet!1.
- Alice Watson -
. Most chapters, and the Safe AI Adoption walkthrough. - Rickie Deckow -
. Chapters 1, 3 and 7, and the MCP server step below. - Ramona Flatley -
. Chapter 4, in a browser with no Cloudflare One client.
is for each app's /admin page and FlareID's admin, not for demos.
Setting up the Windows client
Every demo that uses the Cloudflare One client - all but chapter 4.
- On the lab's Windows client, open an elevated PowerShell and run the setup script. It
installs the Cloudflare One client, Goose (configured for this lab) and
psql:irm https://demo./windows-client-setup.ps1 -OutFile windows-client-setup.ps1 .\windows-client-setup.ps1 - Open the Cloudflare One client, enter the team name
opportune-vikingand sign in as Alice. - Open a new terminal for
psql, so the updated PATH is picked up.
Setting up Goose by handonly if you are not using the script, or on macOS
- Connect to a provider → + Add a custom provider → Configure
manually. Type OpenAI Compatible, API URL
https:///compat, API base path empty, model@cf/google/gemma-4-26b-a4b-it. - Extensions → + Add custom extension, type Streamable HTTP, name
Company AI Portal, endpoint
https:///mcp. - Disable every other extension, so the agent answers from the company's systems and not the local machine.
On Windows, set GOOSE_DISABLE_KEYRING firstif the portal extension says “Failed to load extension”
Windows Credential Manager cannot hold the portal's OAuth token, so Goose discards it. The script sets this
for you; by hand, add to %APPDATA%\Block\goose\config\config.yaml:
GOOSE_DISABLE_KEYRING: true
Switching who you are
Chapters 1, 3 and 7, which are run as Rickie.
- In the client: Preferences → Account → Log out from Cloudflare Zero Trust.
- Clear the browser's sessions - sign out at
https://opportune-viking.cloudflareaccess.com/cdn-cgi/access/logoutandhttps:///- or paste the sign-in link the client opens into an InPrivate window. Otherwise you are signed straight back in as the last person. - Enrol again with team name
opportune-vikingand sign in as the other person.
Authenticate the MCP servers
Only for the demos that use an AI agent: the Safe AI Adoption walkthrough and the AI agent chapters. Once per lab.
- Zero Trust → Access controls → MCP Portals → MCP servers. All five show Waiting.
- For each: … → Authenticate server, and sign in as
- an Executive, so Ledger works too. Each becomes Ready. - In Goose, send any prompt and authorise the servers at the portal when asked, as Alice. She gets four of five: Ledger is for Executives.
Check the agent works
AI demos only. Ask Goose:
Who am I, and which tools do you have available?
Expect Alice Watson, and tools from four apps - not Ledger.
Other AI clients
Goose is the client the demos are written for - it shows the audience why something was blocked. These work too.
opencodeshows only “HTTP 424” when something is blocked
In ~/.config/opencode/opencode.json. The Desktop app takes this shape whatever its version:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"cf-ai-demo": {
"npm": "@ai-sdk/openai-compatible",
"name": "Cloudflare AI Gateway (demo)",
"options": { "baseURL": "https://aig./compat" },
"models": { "workers-ai/@cf/google/gemma-4-26b-a4b-it": { "name": "Google Gemma 4 (Workers AI)" } }
}
},
"mcp": { "servers": { "ai-demo": { "type": "remote", "url": "https://mcp./mcp", "codemode": false } } },
"permission": {
"execute": "deny", "bash": "deny", "edit": "deny", "read": "deny", "glob": "deny",
"grep": "deny", "webfetch": "deny", "websearch": "deny", "subagent": "deny", "skill": "deny"
}
}
Cloudflare OSin the browser at , if deployed - nothing to install
- Settings → Choose your model → Add new model → Other Cloudflare Workers AI…,
id
@cf/google/gemma-4-26b-a4b-it. - On
/gatekeepers, add the portal and sign in. - In a chat: + → Add a new connection → Company AI Portal → pick a server → All tools. Repeat per server. The Safe AI Adoption walkthrough needs WorkBox and Pipeline.
Tool names change through the portalwhy the transcript shows hr_list_employees, not list_employees
The portal prefixes every tool with its server: hr_, crm_, work_,
wiki_, fin_. The scripts name the underlying tool.