1 · What you need
Before the workshop, make sure you have:
- A Mac.
- A Windows PC on Windows 11 ideally. Windows 10 works for Claude Code; Codex calls it “best effort”.
- A GitHub account — free, sign up at github.com.
- An AI subscription — either a Claude Pro / Max / Team plan for Claude Code, or a ChatGPT Plus / Pro / Business plan for Codex. Claude Code isn't available on the free Claude plan; Codex technically works on a free ChatGPT account but the allowance is far too small for a workshop morning. 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, Ultra, 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 every ChatGPT plan — Free and Go get a small taster allowance, Plus and up get real headroom
- Usage limits scale with your plan — Plus is plenty for the workshop
- Runs natively on Mac and Windows 11 (Windows 10 is best-effort)
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, grab the macOS “Universal Binary” .dmg, open it, and drag Ghostty to Applications. Open it (⌘ Space, type “Ghostty”, Enter). You should see a window with a blinking cursor. (If you already have Homebrew from an earlier project, brew install --cask ghostty does the same.)
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
Git is how your code gets to GitHub, and Claude Code uses the bundled Git Bash to run commands (without it, it falls back to PowerShell, which is less reliable). Download from git-scm.com/downloads/win and install with the default settings — or run winget install --id Git.Git -e --source winget in PowerShell.
Close and reopen Windows Terminal so it picks up the new PATH. Then verify:
PS> git --version
# Should print something like: git version 2.5x.x.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 | iexThe installer shows no progress while it downloads — give it a minute. When it finishes, close the terminal and open a new window so the PATH update takes effect. Then verify:
$ 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 doctor runs a quick health check.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 every ChatGPT plan — Plus, Pro, Business, Edu and Enterprise get proper usage; Free and Go only get a small taster that won't last a workshop morning. Check yours at chatgpt.com → Settings → Subscription.
On Free? Go to chatgpt.com and Upgrade → Plus ($20/mo). Plus gives you plenty of Codex usage for a workshop morning; Pro (from $100/mo) 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"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. (Same trap on the Microsoft Store: winget install Codex finds a QR-code app, not OpenAI's.)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 type /quit (or press Ctrl + C) 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. (Device-code login is in beta; if it's refused, switch it on first under Settings → Security in ChatGPT.) codex login status tells you whether you're signed in.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 for Mac and Windows 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 and 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 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.
/usage— how much of your plan's limit you've used and when it resets. Check it if Claude tells you to wait./clear— fresh conversation, same project files. Use when switching tasks or when Claude seems confused by old context./help— every command and shortcut./statusshows version, model and account./btw— ask a quick side question without interrupting the main task. Answer appears in an overlay; Esc dismisses./review— a code review of your recent changes, with the bugs it finds listed for you./insights— a report on how you've been using Claude Code and features you're missing.- Esc Esc with an empty prompt (or
/rewind, also/undo) — 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, permissions and token 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./permissions— change what Codex may do without asking (see the next step)./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
An agent can either ask you before every edit and command, or move on its own with a safety net. The careful setting is right for important code and painfully slow for prototyping. For the workshop we want the faster one.
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.
Good news: on current versions auto mode is already the default when you start claude — the mode indicator under the prompt says auto. If yours says Manual instead, press Shift + Tab until it cycles round to auto, or start it explicitly:
$ claude --permission-mode auto| Mode | What it does |
|---|---|
default (“Manual”) | Only reads on its own; asks before every edit and command. 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. The default, and what we use in 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 --approve-for-me--approve-for-me (OpenAI's own alias: --not-so-yolo) lets Codex edit files and run commands inside your project folder, with an automatic reviewer waving through the routine stuff instead of you. 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. |
--approve-for-me | Edits + commands inside the project folder; an automatic reviewer approves the routine ones. 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 /permissions.
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 --id GitHub.cli --source wingetClose 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$ codex --approve-for-mePS> mkdir -p ~\Projects\my-page
PS> cd ~\Projects\my-page
PS> claudePS> codex --approve-for-meThen 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 your idea. See you on Wednesday, November 25 at 9:00, Topview Tower.
Common questions
Do I need to sign up?
No. Just tell me what you want to build so I can prepare, then get your laptop ready and show up at Topview Tower at 9:00 on Wednesday, November 25.
What's the plan on the day?
09:00 — Hello and a short intro: what these tools can do right now, a live demo, how the morning runs.
09:10 — Build your own thing. Take the idea you sent in and build it, alone or with whoever is sitting next to you. I'll be walking around.
11:15 — Show and tell. Everyone gets two minutes. Broken is fine, we've all been there.
12:00 — Done. Out by noon.
Can I use a free Claude or ChatGPT account?
Not really. Claude Code needs Claude Pro ($20/mo), Max, Ultra or Team — the free plan doesn't include it. Codex does sign in on a free ChatGPT account, but the included allowance covers a few quick tasks, not three hours of building; plan on ChatGPT Plus ($20/mo). 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 auto mode gives you speed with a safety net out of the box. 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?
No. Both Claude Code and Codex now run natively in PowerShell, Codex with its own Windows sandbox. If you already use WSL for other things, the Mac/Linux instructions apply inside it — just don't mix the two (a tool installed in WSL isn't visible from PowerShell and vice versa).
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, press Shift + Tab to switch to default (Manual) or acceptEdits and approve actions individually.
Claude Code won't install on my Mac.
If claude says “command not found” right after installing, open a new terminal window first — the installer puts it in ~/.local/bin and the old window hasn't noticed. If the install script itself fails, try brew install --cask claude-code (this one doesn't auto-update; run brew upgrade claude-code now and then). 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 you see “irm is not recognized”, you're in CMD. Close all terminal windows and reopen after installing. As a fallback, winget install Anthropic.ClaudeCode installs the same thing (but doesn't auto-update; run winget upgrade Anthropic.ClaudeCode occasionally). 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 /usage/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.