1 Β· What you need
Before the workshop, make sure you have:
- A Mac running a recent macOS (Sonoma or newer is ideal).
- A Windows PC on Windows 10 or 11.
- A GitHub account β free, sign up at github.com.
- A paid AI subscription β either a Claude Pro / Max / Team plan for Claude Code, or a ChatGPT Plus / Pro / Business plan for Codex. Free accounts don't work for either. More on this in the next step.
- About 30 minutes and decent Wi-Fi.
- On the day: your laptop and its charger. No laptop, no workshop β it's hands-on from minute ten.
2 Β· Pick your AI tool
Both are βcoding agentsβ: you type what you want in plain English, and they write the code, run it, and fix it. Choose one below β the rest of this guide adapts to your choice. If you're undecided, pick Claude Code.
Claude Code
Runs in your terminal (also inside the Claude desktop app). It's what the instructors use and what all the demos are based on, so you'll be able to follow along keystroke for keystroke.
- Needs a Claude Pro, Max, or Team subscription β claude.ai/upgrade
- Works great on Mac and Windows
- Best βundoβ story (rewind conversation + code)
Codex (by OpenAI)
Already paying for ChatGPT Plus or Pro? Then you already have Codex β no extra subscription, no API key. Sign in with your ChatGPT account and you're good. A solid choice if you'd rather not add another subscription.
- Included with ChatGPT Plus, Pro, Business, Edu, Enterprise (not Free)
- Usage limits scale with your plan β Plus is plenty for the workshop
- Native on Mac; on Windows it's newer and a bit rougher
3 Β· Set up your terminal
The terminal is where your AI agent lives. It's just a text box that talks to your computer.
Install Ghostty
Ghostty is a fast, native terminal app. It handles long output smoothly (which matters when an AI is generating code) and stays out of your way.
Go to ghostty.org, download the macOS app, open the .dmg, and drag Ghostty to Applications. Open it (β Space, type βGhosttyβ, Enter). You should see a window with a blinking cursor.
Open Windows Terminal
Windows Terminal is Microsoft's modern terminal. On Windows 11 it's pre-installed; on Windows 10 grab it free from the Microsoft Store.
Open it with Win + X β Terminal, or search βTerminalβ in the Start menu. Make sure you're in a PowerShell tab (the default), not Command Prompt.
C:\> you're in Command Prompt. Open a new PowerShell tab β the prompt should show PS C:\>.4 Β· Install HomebrewInstall Git for Windows
Install Homebrew (the package manager)
Homebrew is an app store for developer tools that runs in the terminal. Paste this into Ghostty:
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"It asks for your Mac password. Nothing appears as you type β that's normal. Press Enter. Follow any βNext stepsβ it prints at the end (usually two lines to paste).
brew --version. If it prints a version, skip this step.Install Git for Windows
Both Claude Code and Codex use Git under the hood, so this is required. Download from git-scm.com/downloads/win and install with the default settings.
Close and reopen Windows Terminal so it picks up the new PATH. Then verify:
PS> git --version
# Should print something like: git version 2.47.1.windows.1winget, a package manager like Homebrew. We'll use it for the GitHub CLI later β nothing to install.5 Β· Install Claude CodeCodex switch to Codexswitch to Claude Code
Install Claude Code
Run this in Ghostty:
Run this in PowerShell:
$ curl -fsSL https://claude.ai/install.sh | bashPS> irm https://claude.ai/install.ps1 | iexClose and reopen Windows Terminal so the PATH update takes effect. Then verify:
Verify it installed:
$ claude --versionNow log in. Run claude β it opens a browser window to sign in with your Claude account. Follow the prompts.
$ claudeOnce logged in you'll see a prompt. Type hello and press Enter to check it responds. Then type /exit.
claude again. If it persists, set the path manually:PS> [System.Environment]::SetEnvironmentVariable("CLAUDE_CODE_GIT_BASH_PATH", "C:\Program Files\Git\bin\bash.exe", "User")PS> $env:Path = [System.Environment]::GetEnvironmentVariable("Path", "User") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "Machine")
PS> claude --versionMake sure your ChatGPT plan includes Codex
Codex is included with ChatGPT Plus, Pro, Business, Edu and Enterprise. It is not available on the Free plan. Check yours at chatgpt.com β Settings β Subscription.
Don't have one yet? Go to chatgpt.com, create an account, then Upgrade β Plus ($20/mo). Plus gives you plenty of Codex usage for a workshop morning; Pro gives much more headroom.
Install the Codex CLI
Run one of these in Ghostty (the first is the official installer; the second uses Homebrew):
$ curl -fsSL https://chatgpt.com/codex/install.sh | sh$ brew install --cask codexRun this in PowerShell:
PS> powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"wsl --install in an admin PowerShell, then follow the Mac/Linux commands inside Ubuntu) or use Claude Code instead, which is smoother on Windows.Close and reopen your terminal, then verify:
$ codex --versionnpm install -g @openai/codex also works. Careful: the package is @openai/codex β the unscoped codex package on npm is unrelated.Sign in with ChatGPT
$ codexChoose Sign in with ChatGPT. Your browser opens β log in with the account that has your Plus/Pro plan (double-check you're not on a different, free account). Return to the terminal when it says you're done.
Type hello and press Enter to check it responds. Then press Ctrl + C (or type /quit) to exit.
codex logout, then codex again.codex login --device-auth β it prints a URL and a short code you can enter on any device.6 Β· Install the desktop app (optional but handy)
Download the Claude app
The Claude desktop app gives you three ways to work with Claude; we'll touch all three during the workshop:
- Chat β the familiar conversation interface, as a native app.
- Cowork β Claude works alongside you on files and apps, proactively.
- Code β Claude Code running inside the desktop app, no terminal needed.
Download from claude.ai/download, open the .dmg, drag Claude to Applications.
Download from claude.ai/download, run the installer, follow the prompts.
Sign in with the same Claude account you used in the terminal. If you see a chat interface, you're good.
Download the Codex app
OpenAI ships a desktop Codex app that wraps the same agent in a friendlier window with multiple parallel threads. It's optional β the CLI is all you need β but nice to have as a fallback if the terminal feels intimidating.
Get it from chatgpt.com/codex (the ChatGPT desktop app from openai.com/chatgpt/download also includes a Codex tab). Sign in with the same ChatGPT account.
Core setup done.
Terminal ready, AI agent talking, desktop app installed. Everything below is about getting comfortable β skim it now, and we'll practice together on the day.
7 Β· Getting comfortable with the terminal
Never used a terminal? Here's the crash course. Instead of clicking through folders in FinderFile Explorer, you type commands. You only need four.
pwd, ls, cd and mkdir all work in PowerShell too.Where am I: pwd
βPrint working directory.β Shows which folder you're in.
$ pwd
# /Users/yournameWhat's here: ls
βList.β Shows what's in the current folder.
$ ls
# Desktop Documents Downloads Projects ...Move around: cd
βChange directory.β cd .. goes up one level; cd ~ goes home from anywhere.
# Go into Documents
$ cd Documents
# Back up one level
$ cd ..
# Home, from anywhere
$ cd ~Create folders: mkdir
βMake directory.β -p creates parent folders if needed.
$ mkdir -p ~/Projects/workshopThe pattern you'll use every time
# 1. Go to your project folder
$ cd ~/Projects/my-project
# 2. Start the agent
$ claude
# 3. Talk to it in plain English
"Create a web page with a hero section and a contact form"
# 4. Exit when done
/exit# 1. Go to your project folder
$ cd ~/Projects/my-project
# 2. Start the agent
$ codex
# 3. Talk to it in plain English
"Create a web page with a hero section and a contact form"
# 4. Exit when done (Ctrl+C twice also works)
/quitcd Docu, press Tab.8 Β· Useful commands inside the agent
While chatting, commands that start with / control the tool itself β they're not messages to the AI.
/statusβ check your usage. Useful when Claude seems slow; you might be near your limit./clearβ fresh conversation, same project files. Use when switching tasks or when Claude seems confused by old context./helpβ every command and shortcut./btwβ ask a quick side question without interrupting the main task. Answer appears in an overlay; Esc dismisses./reviewβ code & security review of recent changes./insightsβ a report on how you've been using Claude Code and features you're missing.- Esc Esc (or
/rewind) β your undo button. Pick a point in the conversation and Claude reverts both the chat and the code changes made after it. Restore code + conversation, conversation only, or code only.
/statusβ your session, model, and remaining usage./newβ start a fresh conversation in the same folder./modelβ pick a model / reasoning effort. Higher effort = smarter but slower./initβ create anAGENTS.mdfile with notes Codex reads every session (project conventions, what not to touch)./diffβ see what Codex has changed so far./helpβ every command and shortcut.- Esc while it's working β interrupt and redirect. Codex keeps your project in Git, so your undo button is
git checkout .(discard uncommitted changes) β or just tell Codex βrevert the last change.β
9 Β· Understanding permissions
By default the agent asks before running commands or editing files. Safe, but slow when you're prototyping. For the workshop we'll let it move faster.
Auto mode
For the workshop we'll run Claude Code in auto mode. Claude edits files and runs commands on its own, but a built-in safety check still reviews each action and only stops to ask you about the genuinely risky ones (deleting things, touching files outside the project, anything irreversible). Fast, and still has a seatbelt.
$ claude --permission-mode autoYou can also switch modes mid-session: press Shift + Tab to cycle through them, or type /permissions.
| Mode | What it does |
|---|---|
default | Asks on first use of each tool. The safe default for important repos. |
acceptEdits | Auto-approves file edits; still asks before running commands. |
auto | Acts on its own; a safety check asks only about risky actions. Use this for the workshop. |
plan | Read-only. Claude can analyze but not change anything. Great for reviewing. |
bypassPermissions | No checks at all (--dangerously-skip-permissions). Not needed for us. |
Approval modes & the sandbox
Codex has two dials: approvals (when it asks you) and a sandbox (what it's physically allowed to touch). The defaults ask a lot. For the workshop, start it like this:
$ codex --full-auto--full-auto lets Codex edit files and run commands inside your project folder without asking, while the sandbox still blocks it from touching the rest of your computer. If a step genuinely needs to go outside (e.g. installing a tool), it asks.
| Flag | What it does |
|---|---|
| (default) | Read-only sandbox; asks before edits and commands. Safe, slow. |
--full-auto | Edits + commands inside the project folder, no prompts. Use this for the workshop. |
--dangerously-bypass-approvals-and-sandbox (aka --yolo) | No sandbox, no prompts at all. No safety net at all. Fine for throwaway prototypes; don't use on anything precious. |
You can also change modes mid-session with /approvals.
10 Β· GitHub setup
GitHub is where we'll store and publish code. With the CLI, the agent can create repos, push code and deploy pages without leaving the terminal.
Create a GitHub account
If you don't have one: github.com/signup. Free is all you need. Two minutes.
Install the GitHub CLI
$ brew install ghPS> winget install GitHub.cliClose and reopen Windows Terminal after installing.
Then log in:
$ gh auth loginWhen asked, choose: GitHub.com (not Enterprise) β HTTPS β Login with a web browser. It opens your browser to authorize. Verify:
$ gh auth status
# Logged in to github.com as yournameDry run: publish a page to GitHub Pages
Optional, but it proves the whole pipeline works before the workshop. GitHub Pages hosts static sites for free.
$ mkdir -p ~/Projects/my-page
$ cd ~/Projects/my-page
$ claude --permission-mode auto$ codex --full-autoPS> mkdir -p ~\Projects\my-page
PS> cd ~\Projects\my-page
PS> claude --permission-mode autoPS> codex --full-autoThen tell it:
Build a simple landing page with a hero section, an about
section, and a contact link. Clean, modern design, everything
in a single index.html file.
Then create a GitHub repository called "my-page", push this
project to it, and set up GitHub Pages so it's live on the web.
Give me the URL when it's done.It will build the page, init Git, create the repo, push, enable Pages, and hand you a URL like https://yourusername.github.io/my-page/. Live within a minute or two.
To change it later: cd back into the folder, start the agent, and say βUpdate the headline, then push to GitHub.β
11 Β· Railway (optional β for real web apps)
GitHub Pages only hosts static sites. If your idea needs a server β user accounts, a database, saving things people type in β you need somewhere to run code. Railway is the easiest option we've found: connect a repo, it builds and runs it, you get a URL. This very website runs on it. Skip this if you're not sure; you can set it up in five minutes on the day.
Create a Railway account
Go to railway.com and click Login β Login with GitHub. Using your GitHub account means Railway can deploy straight from your repos later.
New accounts start on a free trial with a small credit. To deploy for real you'll need the Hobby plan ($5/month), which includes $5 of usage β a small workshop app costs cents. You can add a card later; the trial is enough for the workshop.
Install the Railway CLI
$ brew install railwayPS> npm i -g @railway/cliwinget install OpenJS.NodeJS.LTS, then close and reopen the terminal. (Or use Scoop: scoop install railway.)Then log in β it opens your browser:
$ railway login
$ railway whoami
# Logged in as you@example.comThat's all the agent needs: once you're logged in, it can run railway commands on your behalf.
Optional: create an API token
A token lets tools deploy without the browser login β useful for GitHub Actions or if the agent runs somewhere that can't open a browser. Not needed for the workshop itself, but here's how:
- Open railway.com/account/tokens.
- Give it a name (e.g. workshop), leave the workspace as is, click Create.
- Copy it immediately β it's shown only once.
Use it by setting an environment variable before running commands:
$ export RAILWAY_API_TOKEN=paste-your-token-here
$ railway whoamiPS> $env:RAILWAY_API_TOKEN = "paste-your-token-here"
PS> railway whoamiDeploy something
Inside your project folder, start the agent and tell it:
Deploy this app to Railway: create a new Railway project,
make sure the server listens on the PORT environment variable,
deploy it, generate a public domain and give me the URL.Under the hood that's railway init β railway up β railway domain. A minute later you have a live URL like my-app-production.up.railway.app. Redeploy any time with βpush the latest changes to Railway.β
You're ready for the workshop.
Terminal set up, agent talking, GitHub connected. Bring your laptop, your charger, and the idea you wrote down when you registered. See you on Saturday, August 29 at 9:00.
Common questions
Can I use a free Claude or ChatGPT account?
No. Claude Code needs Claude Pro ($20/mo), Max or Team. Codex needs ChatGPT Plus ($20/mo), Pro, Business, Edu or Enterprise. If you have neither, get Claude Pro β it's what we demo on β and cancel after if you like.
I already pay for ChatGPT Pro. Do I really not need anything else?
Correct. Codex is included in your plan. Install the CLI, choose βSign in with ChatGPTβ, done. Pro has much higher usage limits than Plus, so you won't hit a wall during the workshop.
Claude Code or Codex β which is actually better?
They're close, and both improve monthly. We recommend Claude Code because the demos use it, the undo/rewind experience is excellent, and it's smoother on Windows. If you already have ChatGPT Plus/Pro and don't want a second subscription, Codex is a perfectly good choice.
Can I use iTerm2 / Warp / Terminal.app instead of Ghostty?
Yes. Any modern terminal works. Ghostty is a recommendation, not a requirement.
Should I use WSL instead of native Windows?
For Claude Code: not needed β it runs natively in PowerShell. For Codex: WSL is OpenAI's most reliable Windows path; try the native installer first and fall back to WSL if it misbehaves. If you already use WSL, the Mac/Linux instructions apply inside it.
Is auto mode safe?
For workshop exercises and prototypes, yes. Claude edits files and runs commands on its own, but a safety check still stops to ask before risky or irreversible actions. For production repos or sensitive projects, use default or acceptEdits and approve actions individually.
Claude Code won't install on my Mac.
Make sure you're on a recent macOS. If the install script fails, try brew install --cask claude-code. If that fails too, bring it to the workshop β we'll sort it out.
Claude Code won't install on Windows.
Make sure you're in PowerShell (not CMD). If irm isn't recognized, try Invoke-RestMethod https://claude.ai/install.ps1 | Invoke-Expression. Close and reopen the terminal after installing. Still stuck? Ask at the workshop.
Do I need to know how to code?
No. You describe what you want in plain English; the AI writes the code. Basic terminal comfort helps β that's why this page covers it.
What if I hit rate limits during the workshop?
Type /status inside the agent to check usage. If you're close to the limit, tell us β we'll help you keep going.
Do I need Railway?
Only if your app needs a server (logins, a database, saving what users type). Pure front-end apps β calculators, trackers that save on the device, portfolio sites β are fine on GitHub Pages for free. Step 11 takes five minutes if you decide you need it.
Can I build a mobile app, not just a website?
Yes. We start with a web app because it works on every phone instantly and is easiest to publish. If you want a native iOS/Android app, we'll show the path (Expo / React Native) during the βbuild your own thingβ block. Bring your phone.