Take the app home. Keep building.
Use your own machine, model and telemetry project. Start locally; add the optional services when their course part needs them.
Local IT path · Parts 1–3
Python 3.12+, uv, Git, a browser and one builder/editor. Bring one working tool-capable model endpoint and exact alias.
Python · uv installation · Git · Ollama · LiteLLM
Part 4 · observe
Your own Langfuse project. Use a self-hosted instance or an explicitly selected hosted project. Self-hosting additionally needs Docker Compose and local resources.
Parts 5–6 · control and host
Security tests run locally. Live OCI hosting additionally needs an approved scope, supported service/region, OCI identity, image builder and telemetry destinations. A design-only submission does not prove cloud deployment.
Keep your chosen runtime
The rehearsed Lovable route uses its native TypeScript server and Lovable AI. The Python commands below belong to the separate local engineering route; do not paste them into Lovable Cloud. Ask your builder to instrument its actual server runtime. GitHub Pages serves the lessons only, never your model keys or an authenticated AI backend.
Local IT route: install the pinned dependencies
Use macOS, Linux or Windows with WSL for these shell commands. Install the tools from their official links; this page installs nothing. From the workshop repository root:
uv sync --frozen --extra studio .venv/bin/python scripts/course_doctor.py --part 1
The doctor only checks local prerequisites. It reads no credential values, calls no endpoint and creates no resources. A green result does not prove your model supports tools.
2. Configure your own model
mkdir -p local/private/home cp workshops/local-ai-studio/studio.example.toml local/private/home/studio.toml chmod 600 local/private/home/studio.toml
Edit that private TOML with the exact working alias and endpoint. For Ollama use an already installed tool-capable model; run ollama list to discover your own names. For a gateway, obtain your own client key and reference its environment variable. A chat subscription does not automatically provide an API key. Never use the presenter’s endpoint or keys.
3. Start and verify the app
PYTHONPATH=src .venv/bin/python -m agent_workshop.studio --config local/private/home/studio.toml --output local/private/home/run-01 --port 8770
If your gateway uses a private key file, add --secrets local/private/home/keys.env only after creating your own bounded 0600 file with the configured environment names. No key is needed for an unauthenticated local Ollama endpoint.
Open http://127.0.0.1:8770/desk to inspect the authored reference, then follow the Part 1 brief to build and verify your own app. Test create → search → select → Analyze safely. A real model/tool answer is required. Ctrl-C stops the owned foreground server; keep its private receipts. Use a fresh output path, such as run-02, on restart.
4. Continue with one brief per part
Open all six course parts. Each offers complete Markdown agent instructions and acceptance checks. Keep the same working app; add one capability, then rerun earlier checks. Parts 1–3 need no OCI tenancy. Part 4 needs your telemetry destination; Part 6 needs cloud access for live acceptance.
# Only when reaching hosted SDK exercises: uv sync --frozen --extra live .venv/bin/python scripts/course_doctor.py --part 6
Common setup problems
Why am I asked to sign in twice in Lovable?
The builder workspace and the app you create are separate identities. Google sign-in opens the builder. Your app may then use Continue with Lovable for its own authenticated users. Review that app consent: it can request your name and email. Accept only for the app you intend to test. Do not bypass it, expose auth tokens or call a model endpoint without the required session.
The editor preview is blank after a build
Do not count the builder’s completion message as success. Check the actual preview, inspect errors and use the editor’s Open preview control when appropriate. Authenticated preview URLs can contain access tokens; do not copy them into public guides or screenshots. Use the app’s actual controls for acceptance.
The command cannot import a module
Run from the repository root, use its .venv interpreter and install the correct frozen extra. Local Studio uses studio; hosted SDK tests use live. Do not install random global packages to hide a missing environment.
The model chats but never calls a tool
Confirm native tool support with the exact model alias and gateway settings. Record that incompatibility. Choose another explicitly configured model; never silently return a scripted answer.
A hosted builder cannot reach my laptop
A SaaS server cannot call your laptop’s loopback address. Use its supported private server integration, or run your app/backend locally. Do not add wildcard CORS or expose secrets in the browser.
Port in use or output folder exists
Identify the owner of the listener and choose another port if needed. Do not kill an unknown process. Existing output is deliberately preserved; choose a new run directory instead of deleting evidence.
How do I stop and clean up?
Stop only foreground processes and containers you started. For self-hosted Langfuse, use its compose project stop command in its own directory. Do not delete volumes if you want traces preserved. Cloud teardown must use your own exact resource inventory and authorization. Never run a generic destroy command against a shared account.