Twenty minutes before class saves forty in it.
What stalls the first lesson is never the AI; it is installers. Do these at home and class starts with building.
- One command installs six programs
- Three-minute self-check
- Stuck? Check the Q&A
What to install
Seven to install, all free except Claude Code
Install at home and only verify in class; the classroom network crawls when everyone downloads at once. One command installs the six programs; GitHub is an account you sign up for separately.
The lazy way
One command installs all six programs
Press Start, type PowerShell and open it. Not Command Prompt (cmd); it cannot run this. A normal window is fine; when Git and Node.js install, Windows asks to allow changes: click Yes. If a lab computer wants an administrator password, ask the TA.
Paste this into PowerShell
"SST.OpenCodeDesktop","SST.opencode","Anthropic.ClaudeCode","StablyAI.Orca","Obsidian.Obsidian","Git.Git","GitHub.cli","OpenJS.NodeJS.LTS" | ForEach-Object { winget install --id $_ -e --accept-source-agreements --accept-package-agreements }Want guidance and an automatic version check? Paste this instead
This runs our setup script: the same installs, with step-by-step guidance and a list of anything that failed. Read the script
Paste into PowerShell
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor 3072; irm https://wport.me/learn/setup-win.ps1 | iex
This line installs
- OpenCode (AI agent)
- Claude Code (paid account)
- Orca
- Obsidian
- Git and GitHub CLI (gh)
- Node.js (LTS)
An AI agent that acts: it opens, edits and runs things for you. The desktop app puts files, chat and terminal in one window. The free models are enough for the whole course.
- How
- Install both the desktop app and the terminal version: Orca launches it through the opencode command. The one-line setup installs both; installing by hand, run both lines below. On first launch pick a free model.
- Check
- It opens and replies when you type 'hi'.
Download OpenCodeJust this one: one command
Windows (PowerShell)
winget install --id SST.OpenCodeDesktop -e; winget install --id SST.opencode -e
Mac (Terminal, needs Homebrew)
brew install --cask opencode-desktop; brew install opencode
Anthropic's AI agent. It does the same job as OpenCode, much faster: in our test the same task took Claude Code 15 seconds and OpenCode on a free model 3 minutes. It needs a paid Claude plan (Pro or above); without one, OpenCode is enough for the course.
- How
- One command installs it (already in the one-line setup below). Then type claude in a terminal and sign in to your Claude account.
- Check
- claude --version prints a version number.
Claude Code websiteJust this one: one command
Windows (PowerShell)
winget install --id Anthropic.ClaudeCode -e
Mac (Terminal, needs Homebrew)
brew install --cask claude-code
03Orca
A cockpit for your AI agents: OpenCode, terminal, browser and GitHub in one window, one tab per task, several agents side by side if you like. Free and open source.
- How
- Download the Windows or Mac installer and click through. On first launch choose OpenCode as the agent; add the folder in class.
- Check
- It opens and you can see the Add Repo button in the left sidebar.
Download OrcaJust this one: one command
Windows (PowerShell)
winget install --id StablyAI.Orca -e
Mac (Terminal, needs Homebrew)
brew install --cask stablyai/orca/orca
04Obsidian
Your database. Your profile notes live here and the AI works from them instead of inventing.
- How
- Install, then create a new vault named my-portfolio inside Documents. No spaces or non-ASCII characters in the path.
- Check
- You can see my-portfolio on the left and create a note.
Download ObsidianJust this one: one command
Windows (PowerShell)
winget install --id Obsidian.Obsidian -e
Mac (Terminal, needs Homebrew)
brew install --cask obsidian
Save points. Every version is a checkpoint you can roll back to, and it is how work reaches GitHub. gh is GitHub's command-line tool; in class you sign in with gh auth login.
- How
- Click through both installers with the defaults; the one-line setup installs both. Macs usually ship git, but gh still needs installing.
- Check
- git --version and gh --version both print a version number.
Download GitJust this one: one command
Windows (PowerShell)
winget install --id Git.Git -e; winget install --id GitHub.cli -e
Mac (Terminal, needs Homebrew)
brew install git gh
The engine behind the WPORT CLI and the Google CLI you will use in week two.
- How
- Download the LTS build and click through; the one-line setup also installs LTS on both Windows and Mac. Restart any open terminal or OpenCode afterwards so they pick it up.
- Check
- node --version prints v22 or newer.
Download Node.jsJust this one: one command
Windows (PowerShell)
winget install --id OpenJS.NodeJS.LTS -e
Mac (Terminal, needs Homebrew)
brew install node@26; brew link --force --overwrite node@26
Cloud storage for your work. Lab machines reset; GitHub does not. The student Copilot plan is applied for here too.
- How
- Sign up with a personal email (school addresses expire after graduation, and you will show this account to interviewers), then verify it. For the student plan, add your school address under Settings → Emails. Pick an English username you would be happy to show an interviewer; it ends up in your URLs.
- Check
- You are signed in and your email no longer says 'unverified'.
All set?
A three-minute self-check
Open OpenCode on the my-portfolio folder and paste this in. If it replies with versions for git, gh and node, you are ready.
Copy → paste into OpenCode → send
你好,請告訴我: 1. 你是哪一個模型?你現在看得到哪個資料夾? 2. 幫我檢查這台電腦有沒有 git、gh 和 node,各是什麼版本?沒有的話告訴我。
If it worked, the reply looks like this
我是 GPT-5 mini(免費模型)。
我看得到的資料夾:C:\Users\you\Documents\my-portfolio
git version 2.47.0
gh version 2.80.0
node v26.13.0
三個都裝好了,可以開始上課。
A different model name is fine; a folder path plus versions for git, gh and node means you are ready. Missing one? Check the Q&A below.
Q&A
Frequently asked questions
Things that really happened in earlier classes. Open one for the why and the fix.
While installing
- A
Windows blocks unsigned or rarely-seen installers by default; it is not a virus warning.
- 1First make sure the file came from an official link on the tool cards above. Only those get through; delete anything else.
- 2Click 'More info'.
- 3Then click 'Run anyway'.
- A
Lab computers are locked down; student accounts cannot install software.
- 1Ask the TA. Do not guess passwords.
- 2Meanwhile pair up with the person next to you.
- 3Git and Node.js both have portable builds that need no admin rights; the TA can help.
- A
Programs that were already open do not see newly installed tools until they restart.
- 1Quit and reopen OpenCode, then ask again.
- 2Still failing: run git --version in a terminal; reinstall if it errors.
- 3Then raise your hand.
- A
macOS only trusts the App Store and signed apps by default.
- 1First make sure the app came from an official link on the tool cards above. Only those get through; bin anything else.
- 2System Settings → Privacy & Security, scroll down, click 'Open Anyway'.
- 3Or right-click the app and choose Open.
- A
Forty people downloading at once saturates the classroom network.
- 1Install at home beforehand; in class only verify.
- 2On the day, tether to your phone for the download.
- 3While waiting, do step 1 (a one-page site in a chat AI); it needs nothing installed.
- A
Some antivirus products are twitchy about command-line tools.
- 1Do not disable antivirus or change security settings.
- 2Ask the TA, or install on your own laptop in advance.
- A
School mail servers often junk it, or it takes a few minutes.
- 1Check Junk and Other folders.
- 2GitHub Settings → Emails → Resend verification email.
- 3After five minutes, sign up with a personal email and add the school address later for the student plan.
During class
- A
Usually no model selected, the free quota is exhausted, or the network dropped.
- 1Check a free model is selected; try another free one.
- 2Quit and reopen.
- 3The same prompt in ChatGPT or Gemini keeps you moving.
- A
Free tiers cap usage per hour or per day.
- 1Switch to another free model.
- 2Apply for the Copilot student plan and connect it once approved.
- 3Describe the change fully in one go; fewer round trips, less quota.
- A
Lab computers restore themselves and you may not get the same seat.
- 1Commit and push to GitHub before you leave.
- 2Next week git clone it back and open that folder in both Obsidian and OpenCode.
- A
Non-ASCII characters or spaces in folder names trip up some tools.
- 1Name vaults and project folders in plain English without spaces: my-portfolio.
- 2Keep it under Documents rather than Desktop or Downloads.
- A
This computer is not signed in to GitHub yet. Pushing needs proof that you own the repo; in class you sign in with gh auth login.
- 1Run gh auth login and choose GitHub.com, HTTPS, then Login with a web browser.
- 2Enter the 8-character code in the browser and click Authorize; once the terminal says Logged in, push again.
- 3On a shared computer, clear this login before you leave (see 'before you leave').
- A
Private was not selected when creating the repo, so your personal notes are visible to everyone.
- 1Repo Settings → Danger Zone at the bottom → Change visibility → Private.
- 2When deploying, expose only the site folder (set Vercel's Root Directory to site).
- A
You were at 85, aimed for 90 and landed on 75. That is what commits are for.
- 1Tell the AI: 'take me back to the previous commit'.
- 2Habit: commit every time you are happy with the result.
- A
The browser is serving its cached copy.
- 1Hard refresh: Ctrl+F5 on Windows, Cmd+Shift+R on Mac.
- 2For a Vercel site: make sure you pushed, then check the latest deployment is green.
- A
Most often the Root Directory was not set to site, so Vercel cannot find index.html.
- 1Project Settings → Root Directory → Edit → choose site → redeploy.
- 2Check the file is named index.html in lower case.
- A
Git keeps every version; deleting the file does not remove it from history.
- 1Tell the TA or teacher right away.
- 2Revoke and reissue the key where it came from (Google Cloud, WPORT). That is the real fix.
- 3Have the AI remove it from git with git rm --cached, then add the filename to .gitignore. .gitignore alone does nothing for files already committed.
None of these? Paste this
Paste into ChatGPT or Gemini with a screenshot. It already asks for one step at a time and forbids disabling antivirus, so you will not be led somewhere unsafe.
Copy → paste into ChatGPT or Gemini → add a screenshot
我在學校電腦教室的 Windows 電腦上安裝軟體卡住了。 軟體:(OpenCode/Claude Code/Orca/Obsidian/Git/GitHub CLI/Node.js,填一個) 我做到哪一步:(例如:按兩下安裝檔之後) 畫面上的字:(照抄,或直接貼截圖) 這台電腦我可能沒有系統管理員權限。 請一次只給我一步,等我回報結果再給下一步。 不要叫我關防毒、改登錄檔或改系統安全設定;如果一定要管理員權限,直接跟我說,我去找助教。
Shared computers
Before you leave, clean up
The next person at that lab computer is not you. Leaving logins and keys behind lends your account to a stranger.
- 1Commit and push everything; refresh GitHub and see the files.
- 2Sign out of GitHub, Vercel, WPORT and Google in the browser.
- 3Have the AI clear the stored GitHub logins, both gh and Windows Credential Manager (copy the prompt below).
- 4If you did the Google part: delete client_secret.json, run gws auth logout, remove .config/gws.
- 5At home: Google Account → Security → Third-party connections, remove my-ai-helper.
Clear logins → copy → paste into OpenCode
這是公用電腦,幫我清掉我的登入資料: 1. 執行 gh auth logout,登出 GitHub CLI(gh 的登入是另外存的)。 2. 刪掉 Windows 認證管理員裡 GitHub 的登入:cmdkey /delete:git:https://github.com 3. 確認這個倉庫的 git config 沒有寫進 --global。 4. 告訴我還有哪些地方要我自己手動登出(瀏覽器的 GitHub、OpenCode、Claude Code 的帳號)。
Remove the programs too?
For a borrowed computer you are handing back, or to reinstall from scratch. It removes only the programs from this course; your my-portfolio folder and your work on GitHub stay. Lab computers usually reset themselves, so skip it there. Click Yes if Windows asks for permission; if it wants a password, ask the TA.
Windows: paste into PowerShell
"SST.OpenCodeDesktop","SST.opencode","Anthropic.ClaudeCode","StablyAI.Orca","Obsidian.Obsidian","Git.Git","GitHub.cli","OpenJS.NodeJS.LTS" | ForEach-Object { winget uninstall --id $_ -e }Mac: paste into Terminal
for c in opencode-desktop claude-code stablyai/orca/orca obsidian; do brew uninstall --cask "$c"; done; for f in opencode git gh node@26; do brew uninstall "$f"; done
Computer ready? Warm up your head too
Class will throw a lot of new words at you. Skim the glossary first and spend your energy building.