Capstone test, repo sanity, file map, fix table. Most students hit at least one of the 19 known issues — that's normal.
"Even if you just hang on to the first block, you're already winning."
— Sara, main room ~46 minDid your morning brief actually deploy and run? Pick the path that matches what you built.
If you completed the 4D path, your deliverable is a personalized morning brief deployed to Vercel that pulls from Google Calendar, Gmail, and Drive on a schedule. Run through this checklist:
npm run dev renders the brief at localhost:3000verify.sh from the repo root passes its 4 checksThe full 4D quickstart lives in the student repo at blueprints/morning-brief/QUICKSTART-4D.md.
8D students are layering extensions on the 4D scaffold. Confirm at least one of:
Full 8D extension menu: blueprints/morning-brief/EXTENSIONS-8D.md.
This is normal. Of cohort 1, only one student had a confirmed live Vercel morning brief by the close of Sunday. Most 4D students were still wiring connectors at the wrap. Partial is normal.
Pick up where you stopped. Open the repo. Open Claude. Tell it: "I left off at <step> on Sunday. Walk me through what I need to do next." Your CLAUDE.md should have enough state for it to know your context.
Four common breakage modes for the repo itself. Run through these before debugging anything else.
From the repo root, run:
git remote -v
You should see origin pointing at github.com/aibuild-lab/agent-native-os. If it points at a repo under your own GitHub username, you cloned your fork — that's fine, but you'll need to add an upstream remote to pull AIBL updates.
Pull weekly: git pull origin main
The repo ships with a verify.sh script that checks the four most common setup issues: Node version, Claude CLI install, repo location, and CLAUDE.md presence.
bash verify.sh
If anything fails, the script tells you exactly what's wrong. Don't guess — copy the output into Claude and ask "fix this for me."
From the repo root, with Claude Code open:
Walk through this repo from the root. Tell me what's broken, what's stale, and what I should fix first. Reference verify.sh and CLAUDE.md if you find them.
This catches drift that the verify script can't, like CLAUDE.md pointing at a file that no longer exists or a stale API key in .env.
Never commit:
.env or .env.local — should be in .gitignore alreadyOPENAI_, ANTHROPIC_, GOOGLE_, SUPABASE_ in plain textnode_modules/ directoryBefore any push: git diff --staged | grep -iE "key|token|secret" — if anything matches, abort and clean.
The six-layer file map. Kills the spaghetti-structure anxiety almost everyone hits in week 2.
"I had no problems working with Claude to keep setting things up, but I'm afraid I'm creating spaghetti structure for how that's all stored and used going forward."
— a cohort 1 student
You can think of this GitHub repo almost like a different way to look at your local machine. The folders on disk and the folders in GitHub are the same thing — GitHub just remembers history.
Lives in ~/.claude/. Holds your master CLAUDE.md, agent definitions, MCP server config, and slash commands that apply to every project. Don't put project-specific stuff here.
The student repo. Curriculum, blueprints, guides, lexicon, troubleshooting. Pull AIBL updates here. For day-to-day workshop use, open this local folder and run Claude from it. If you want to remix the curriculum itself, fork the repo and edit your fork.
Your morning-brief deploy lives here, or any new project you start. Has its own CLAUDE.md, its own .env, its own git origin pointing at your fork.
API keys live in 1Password (preferred) or .env files (gitignored). The op:// URI pattern lets op run inject them without ever writing them to disk in plain text.
Optional but recommended. Your notes, decisions, meeting transcripts. Claude can read this when you point at it. Cairns is the structure we use; the lexicon has the full term breakdown.
Vercel hosts the morning brief. Supabase hosts any database you wire in. Both have their own dashboard URLs — bookmark them.
The 19 issues cohort 1 hit. Each entry: symptom, root cause, fix. Click to expand. Numbering matches the HQ known-issues.md.
Symptoms (verbatim): "When I click on the repo, it gives me a 404 error." / "I've forked and made private." / "no invite yet, so my GitHub username is gh246810."
Cause: Pre-Sunday the repo was private; some students still hit the old 404. GitHub does not let you change a fork's visibility from public to private after the fact (real GitHub policy, not your machine). Some usernames did not get added to the org invite list before class.
Fix:
github.com/aibuild-lab/agent-native-os. Refresh; the 404 should be gone.git remote set-url origin <your-private-url>, then push.Cause: The starter Cairns vault at templates/obsidian-cairns-starter/cairns/ is intentionally mostly empty. L1 has stub files, L2/L3 have only .gitkeep placeholders. That is the correct state of a starter vault. The full populated Cairns vault lives in Tyler's private repo.
Fix: Nothing. Empty cairns is correct for Sunday. You fill them in as you build. See guides/cairns/00-the-cairns-pattern.md. If your fork shows missing files (not just empty folders), pull the latest from upstream.
Symptom (cohort 1 student in Hunter's 2D room): "It's telling me my origin was pointing at the public source, but it should be to my private repo, and I have no clue."
Cause: When you cloned the public repo and then created your own private repo to push to, origin still pointed at the upstream public URL. Pushing in this state risks publishing your CLAUDE.md or in-progress work.
Fix (Hunter's two-option recipe):
Option A (recommended): rename remotes.
cd ~/Documents/agent-native-os git remote rename origin upstream git remote add origin <your-private-repo-url> git remote -v # confirm origin = private, upstream = public git push -u origin main
Option B: rewire in place.
git remote set-url origin <your-private-repo-url> git remote -v git push -u origin main
Option A is safer; you keep a named pointer at the public repo for future pulls.
Symptom (cohort 1 student in Wade's afternoon room): "Why would I not have the other two?"
Cause (Wade): "Because when you do that first setup prompt, Tyler probably only had the first four that we're working on today. So you have to download the other two."
Setup prompt cloned: agent-native-os, research-papers-cairns, tool-docs-cairns, youtube-cairns-vault. Not auto-cloned: workshop-installer, skills-guard.
Fix:
cd ~/Documents gh repo clone aibuild-lab/workshop-installer gh repo clone aibuild-lab/skills-guard
You only need them if you are extending the workshop installer or studying the skills-guard scanner. Most students don't need either today.
Symptoms (verbatim): "for signing up with 1password, can I do Individual or I need to do the Business?" / "I did get 1password setup, but I'm hitting Windows Hello for EVERY secret retrieved." / "The 1Password piece took me longer to implement than everything else combined."
Cause: 1Password moved the developer-tools tier (CLI / SSH / dev integration) out of the Family plan. It is now Teams or Business only. On Windows, the 1Password Windows Hello integration prompts every secret retrieval by default.
Fix:
.env with chmod 600 for local practice..env.Symptoms (verbatim): "Gmail/Calendar OAuth bug." / "I'm not able to draft emails. But I can see Slack and Obsidian (2 out of 3 ain't bad I guess)."
Cause (Hunter): When you authorize Gmail in Claude Desktop, OAuth uses whichever Google account is currently logged into your default browser, not the one you typed in Claude. Work account active in browser + trying to connect personal Gmail = OAuth lands on the wrong account.
Fix:
Symptoms (verbatim): "for Firecrawl should I paste my API key into Claude or should I choose the endpoints, SDK?" / "what's the difference between Exa and Perplexity?" / "CC desktop cannot find Firecrawl."
Cause: Three different research/scraping tools, each best at a different thing. Claude Desktop only connects some natively.
| Tool | Best for | How to wire |
|---|---|---|
| Exa | Semantic web search | Optional API key in Infisical, .env, or 1Password; called from your slash command |
| Perplexity | Conversational research with citations | API key; substitutable for Exa for many tasks |
| Firecrawl | Scraping a known URL into clean markdown | Optional API key; not in Claude Desktop's connector list |
If Claude Desktop "cannot find Firecrawl" in connectors, that is correct. Firecrawl is API-only.
getUpdates returns empty
Symptom: Created a bot via BotFather, hit getUpdates, got {"ok":true,"result":[]}.
Cause: Telegram bots cannot start a conversation. You have to message your bot first before getUpdates returns a chat id.
Fix: Open your bot in Telegram (BotFather gave you a t.me/your_bot link). Send any message (hi works). Re-hit getUpdates; chat id is in result[0].message.chat.id.
/rest/v1 breaks the connection
Symptoms (verbatim): "I am getting a Vercel error that SUPABASE_URL references secret supabase_url which does not exist." / "I need to update my Supabase URL to remove the /Rest/V1."
Cause: When you paste the Supabase URL out of the dashboard, the value sometimes carries /rest/v1 on the end (visible in the API Docs section). The Supabase JS client wants the base URL only.
Fix: Your SUPABASE_URL should look like https://xyzabc.supabase.co, not https://xyzabc.supabase.co/rest/v1. Trim the suffix. Re-deploy.
Symptom (cohort 1 student fix-write-up): "The env: and build.env: blocks reference legacy Vercel Secrets (@supabase_url, etc.) that don't exist. Vercel resolves these before dashboard Environment Variables, so deploys fail."
Cause: The morning brief scaffold's vercel.json was using the older Vercel Secrets pattern. Vercel deprecated it; @-prefixed references resolve before dashboard values, so deploy fails even when the dashboard values are correct.
Fix: Delete the env: and build.env: blocks from vercel.json. Vercel will pick up the dashboard environment variables directly. Redeploy. The blueprint scaffold has been updated; if your fork still has the old pattern, sync upstream.
Symptom: "I keep getting shut down by YT every time CC tries to run."
Cause: YouTube rate-limits and bot-detects requests from the same IP at high frequency without an authenticated session.
Fix:
yt-dlp with --cookies-from-browser chrome so requests look authenticated.YouTube as a 4D source is brittle. Treat it as 8D and skip for now if you're still on 4D.
/personalize says "command does not exist"
Symptom (verbatim): "Claude tells me neither personalize nor personalize exists. and asks 'What were you hoping it would do?'"
Cause (Claude's self-diagnosis): "The /personalize command isn't registering because the file is in configs/commands/ but Claude Code looks for custom slash commands in .claude/commands/."
Fix:
cp configs/commands/personalize.md ~/.claude/commands/personalize.md # Then quit Claude Code (Cmd+Q) and reopen. Custom commands only load on startup.
Same fix applies to any other command in configs/commands/: cp to ~/.claude/commands/ (global) or .claude/commands/ (project-local), then restart.
Symptom (Wade, pre-session room): Setup prompt that worked in the terminal does not work in Claude Desktop, or vice versa.
Cause (Wade's framing): "The desktop app uses a different command than the terminal. And sometimes when people are setting this up [it] was for the terminal. And like since most more often than not, like you want it for both really."
Fix: Wade revised the installer to write to both paths. If you used a pre-Sunday installer and only one surface works, re-run the latest setup prompt. Still resolving in only one? Run which claude from the working surface and copy that path into your shell profile for the other surface.
Symptom (cohort 1 student in Hunter's 2D room): "I put this CD slash GitHub agent in the terminal. And then am I supposed to be doing that?"
Cause: The setup prompt mixed shell commands (terminal) with Claude Code instructions (paste into Claude). Students could not tell which was which.
Fix (Hunter, live): "You don't need to do this in the terminal. You can just tell it to run those things, just be like 'great, run it.'"
Rule of thumb:
$ → goes in the terminal first, then launch claude from there.Symptom (two cohort 1 students in Wade's afternoon room): "There's a super level that you don't see in that file structure… you have to ask for it."
Cause: macOS hides home-directory hidden folders in Finder by default, including the path Claude Desktop suggests as project root.
Fix (peer-to-peer in the room): In Finder, hit Cmd + Shift + G (Go to Folder) and type the path explicitly: ~/Documents/agent-native-os. If you intentionally cloned into a different parent folder, use that exact path instead.
Alternative: enable hidden files in Finder with Cmd + Shift + . (period). Toggle them back off the same way.
Symptom (cohort 1 student in Wade's afternoon room): "It started asking me from Claude to connect to my Google Drive files and my music files and things that he had not asked me for before."
Cause (Wade's diagnosis): "When you ask it a question, it's asking for permission because really there's nothing in [the folder you selected] except everything else."
You selected your user home folder as Claude Desktop's project root, not the agent-native-os subfolder. Claude then sees Drive, Music, Documents, etc. all as "in scope."
Fix:
~/Documents/agent-native-os (or wherever you cloned).Already granted Drive/Music access by accident? Revoke in macOS System Settings → Privacy & Security → Files & Folders → Claude.
Fix: See Recording & transcript map. Maven hosts the canonical recording (Sara dropped the URL in the channel Sunday evening). The portal also has the 12-segment Fathom timestamp index for the main room and Wade rooms.
Heads-up: A cohort 1 student submitted the legal acceptance form Saturday, returned Sunday morning, and saw a duplicate-detection prompt that read as a hard block. If you re-visited the form and got an ambiguous response, you are still in. Fix is on the post-workshop product backlog (clearer success state + email + Slack DM confirmation).
Heads-up: a couple of installer bugs surfaced on fresh Windows VM tests. If you hit a stall during install, post in #agent-native-os with the error and tag Wade.
Still stuck after working through this page? Post in #agent-native-os with a screenshot, the prompt you ran, and what Claude said. The team triages.