Skip to main content

Environments

How you can run the workshop, and which coding agent to bring. Read this a week before the day, together with SETUP.md.

Where the shop runs​

Everything in the labs runs against the demo shop. You have three options, and the labs work the same way in each:

OptionYou needSet upPresets
Local shop (recommended)Docker with Composedocker compose -f shop/compose.yaml up -d, then http://localhost:9090yours alone
Shared instancenothing but a browser and the repositoryput SHOP_URL (from the facilitators) and SHOP_SPACE (your GitHub handle) into .envin your own space, which nobody else sees
No Docker at allas the shared instanceas the shared instanceas the shared instance

With the shared instance, add -p shared to every test run (uv run robotcode -p shared robot). The shop helper (uv run --no-sync python -m shop ...) and the labs pick up your space from .env by themselves.

Choose the local shop if Docker runs on your machine and can pull images: nothing you do depends on the network. Choose the shared instance if Docker is blocked, forbidden or too slow on your laptop.

Which coding agent​

The facilitators demonstrate with Claude Code. Codex and GitHub Copilot (the CLI) work for every lab. Bring the one you use at work, or the one your company lets you use: the labs teach patterns that carry over.

Claude CodeCodexGitHub Copilot CLI
Sign-ina Claude plan or an Anthropic API keya ChatGPT plan or an OpenAI API keya GitHub Copilot plan
Context fileAGENTS.md, through CLAUDE.mdAGENTS.mdAGENTS.md
Spec-driven workflow (Lab 5)/opsx:propose, /opsx:apply, /opsx:archive$openspec-propose, $openspec-apply-change, $openspec-archive-change/opsx-propose, /opsx-apply, /opsx-archive
Trustasks once per folderasks before it runs project hooks and before each MCP tool callasks once per folder; hooks, agents and workspace MCP servers need it

Where the labs differ between agents​

The labs give a table wherever the agents differ. Here are all those differences in one place:

LabClaude CodeCodexGitHub Copilot
2: check the context loads/memoryreads AGENTS.md on startcopilot instruction list
3: Robot Framework Agent Skills--agent claude-code, into .claude/skills/--agent codex, into .agents/skills/--agent copilot, into .claude/skills/, which Copilot also reads
3: your own skill.claude/skills/<name>/.agents/skills/<name>/.github/skills/<name>/
3: a skill loadsprints Skill(<name>)reads the skill's SKILL.mdnames the skill it invokes
4: RobotCode pluginclaude plugin marketplace add --scope project ..., claude plugin install --scope project robotcode@robotframework-agent-plugins, recorded in .claude/settings.jsoncodex plugin marketplace add ..., codex plugin add robotcode@robotframework-agent-pluginscopilot plugin marketplace add ..., copilot plugin install robotcode@robotframework-agent-plugins
6: MCP server.mcp.json, approve it on first start, /mcp.codex/config.toml, approve each tool call or allow them all.github/mcp.json, in a trusted folder, copilot mcp list
7: hooks.claude/settings.json, merged with the plugin entry of Lab 4.codex/hooks.json, trust them when asked.github/hooks/workshop.json, in a trusted folder
7: subagents.claude/agents/*.md, /agents.codex/agents/*.toml, ask for one by name.github/agents/*.agent.md, /agent; start the reviewer interactively, not with copilot -p

Codex and its sandbox​

Codex runs shell commands in a sandbox, which shows in three ways during the labs:

  • Network. The sandbox blocks network access by default, and test runs reach the shop over the network. Allow it when Codex asks, or start Codex with network access for the workspace:

    codex -c sandbox_workspace_write.network_access=true
  • uv's cache. uv keeps a download cache in your home folder, outside the workspace. Codex notices, and points UV_CACHE_DIR somewhere writable by itself. Nothing to do, but don't be surprised by it in the transcript.

  • Agent configuration. .agents/ and .codex/ are read-only inside the sandbox. Codex asks before it changes a skill there, or you edit the file yourself, as Lab 3 does anyway.

Claude Code has the same guard for .claude/: it asks before it writes there.

Cost​

An agent session makes many model requests. Set a spending cap on any API key you use today, and prefer a subscription plan if you have one. Healing in Module 8 needs its own model only if the facilitators say so (SETUP.md, Healing API key); otherwise you triage a recorded report.