You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit aef76ed
Browse filesBrowse the repository at this point in the historyBrowse files
fix: catch a refused provider key in Lab 0, and three other first-run fixes (#8)
* fix: check in Lab 0 that the model provider accepts the engine's key
`local/engine.sh --check` and the doctor both passed with a key the provider
refuses: the engine check only looked for a key in the gateway's environment.
The first sign was Lab 1, where the agent retried its first turn for three
minutes and then stopped with `upstream returned 401`.
The check now asks the provider. The harness lists models with the key it was
started with, so the key stays in the engine and the request costs nothing. A
refused key now fails Lab 0, step 2, within seconds and with its fix. A
provider that cannot be reached, or that answers with another status, is
reported as that, not as a bad key.
The gateway cannot be asked instead: its only Anthropic route is
`/v1/messages`, every call to it needs a session token, and its image has no
HTTP client.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Nq3n2MeC9XrC31wYfdjZv
* fix: remove the unnamed volumes the local stacks left behind
`docker compose down` keeps the unnamed volumes that the Kafka and RustFS
images declare, and the next `up` creates new ones. Each `local/down.sh` and
restart left four more empty volumes, and each `local/engine.sh` one more:
nine after one pass through the course.
`local/down.sh` now removes the containers with `rm --volumes` before `down`,
and `local/engine.sh` removes the engine's stopped containers with
`--volumes`. Named volumes hold the data and are not touched: after a stop and
a start, the topic, the view and the table are still there.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Nq3n2MeC9XrC31wYfdjZv
* docs: say what Apple's Python 3.9 does to the install command
On a Mac with no other Python, `python3` is 3.9.6. `runorca` needs 3.10 or
newer, so the lab's `pip install -r requirements.txt` stops at
`No matching distribution found for runorca==0.3.0`, which does not mention
Python. Both courses now say to check `python3 --version` first, and both
troubleshooting pages list the symptom.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Nq3n2MeC9XrC31wYfdjZv
* docs: name the ork release archive for a Mac without Homebrew
The pages gave only `brew install orca-ae/tap/ork`. A new Mac has no Homebrew,
and installing it takes an administrator password. The release archive needs
neither.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Nq3n2MeC9XrC31wYfdjZv
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: labs/cloud/troubleshooting.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,7 @@ Still stuck after two tries? Raise your hand.
13
13
14
14
| Symptom | Fix |
15
15
|---|---|
16
+
|`pip install -r requirements.txt`: `No matching distribution found for runorca==0.3.0`| The `python3` that made your virtual environment is older than the course needs: on macOS, Apple's own is 3.9. Install Python 3.11 or newer, then make the environment again with it. In `python/`: `rm -rf .venv`, then the install commands from Lab 0 with that Python's name in place of `python3`, for example `python3.13 -m venv .venv`. |
16
17
| Doctor: `Agent Engine HTTP 401/403`| The key was rejected. A key created before its permissions must be re-created: ask a facilitator. |
17
18
| Doctor: `Kafka ... authentication`|`SN_SERVICE_ACCOUNT` must be the full principal, `<name>@<org>.auth.streamnative.cloud`; `SN_API_KEY` is the raw key. |
18
19
| Doctor: `Kafka security.login_events: not found`| The topic is not there yet. Create it and load it: Lab 0, step 3. |
Copy file name to clipboardExpand all lines: labs/local/troubleshooting.md
+10-6Lines changed: 10 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
Two commands tell you what is wrong. Run both first.
4
4
5
5
```bash
6
-
local/engine.sh --check # the Agent Engine, and its link to the MCP server
6
+
local/engine.sh --check # the Agent Engine, its provider key, and its link to the MCP server
7
7
(cd python && .venv/bin/python doctor.py) # or: npm --prefix typescript run doctor
8
8
```
9
9
@@ -15,7 +15,9 @@ Each failed line prints its fix.
15
15
|---|---|
16
16
|`docker compose ... up` fails with a port already in use | Another program has one of the ports the stack publishes on `127.0.0.1`: 29092 (Kafka), 18081 (schema registry), 4566 and 5691 (RisingWave), 8000 (MCP). Stop that program, run `local/down.sh`, then run the `up` command again. Running it again without `local/down.sh` is not enough: Docker brings the container whose port was taken back without its network. The ports are fixed: the broker tells its clients to come back to `127.0.0.1:29092`, and `local/write-env.sh` writes these ports into `.env`. |
17
17
|`local/engine.sh` fails because a port is taken (`Bind for 0.0.0.0:8080 failed: port is already allocated`) | Another program has a port the engine publishes on `127.0.0.1`: 8080 (the registry) or 18082. If it is a container, `docker ps` shows which: look for `:8080->` under PORTS. Stop that program and run `local/engine.sh` again. If the port is 8080 and you want to keep that program running, move the registry instead: `export ORCA_LOCAL_REGISTRY_PORT=18080`, run `local/engine.sh` again, then `local/write-env.sh` so `.env` has the new address. Export it in every terminal you run `local/engine.sh` from: a run without it goes back to 8080. |
18
+
|`pip install -r requirements.txt`: `No matching distribution found for runorca==0.3.0`| The `python3` that made your virtual environment is older than the course needs: on macOS, Apple's own is 3.9. Install Python 3.11 or newer, then make the environment again with it. In `python/`: `rm -rf .venv`, then the install command from Lab 0 with that Python's name in place of `python3`, for example `python3.13 -m venv .venv`. |
18
19
|`local/engine.sh`: `ANTHROPIC_API_KEY is not set in this shell`|`export ANTHROPIC_API_KEY=<your key>` in the terminal where you run the script. The engine reads the key only when it starts. |
20
+
|`local/engine.sh`: `FAIL the model provider accepts that key`| The fix under that line says why. `the provider answered 401` (or `403`): the provider refuses the key the engine started with. `export ANTHROPIC_API_KEY=<a key that works>`, then `local/engine.sh`. `the engine cannot reach https://api.anthropic.com`: the engine has no way out to the provider. Check your network, then `local/engine.sh --check`. |
19
21
|`local/engine.sh`: `bootstrap refused: an organization already exists`| The engine's volumes exist but its keys in `.lab/ork` are gone. Start over: `local/down.sh --reset`, then Lab 0. |
20
22
| CLI path: `.venv/bin/python: No such file or directory`| The Python path is not installed. If you installed the TypeScript path, use the `npm` command the lab gives beside the Python one. Otherwise install one of the two: Lab 0, "Before you start". |
21
23
| Doctor: `Agent Engine HTTP 401`| The key in `.env` is not the running engine's key. Run `local/write-env.sh`. If it still fails, the engine's volumes and keys are out of step: `local/down.sh --reset`, then Lab 0. |
@@ -52,9 +54,11 @@ You do not have to wait for it: press Ctrl-C. That stops your script, not the
52
54
engine. The engine keeps retrying that turn for the rest of the three minutes,
53
55
and a turn you start meanwhile waits behind it. The usual cause is the key:
54
56
55
-
1. Check that the key works at all, for example in the
0 commit comments