This bootcamp is a hands-on path from inference to production-style agents. You will call NVIDIA® NIM™ from cloud and local endpoints, expose and consume capabilities with the Model Context Protocol (MCP) (including a low-level server implementation), and orchestrate reasoning and tool use with LangGraph. You will then use NeMo Agent Toolkit (NAT) to connect MCP tools to NIM with YAML workflow configuration—plus observability and evaluation—before tying the stack together in a final Challenge.
Two deployment options are supported:
- DGX / DGXC clusters — install dependencies directly on the host and run
phoenixandcode-serverfrom your shell. - Local with Docker Compose — build a self-contained image that bundles Python, the lab requirements, and
code-server, and mount the repo as a workspace.
Pick whichever matches your environment and skip the other section.
We tested and ran all labs on a DGX machine equipped with an A100 and H100 GPUs (80GB).
Participants are expected to have Python programming knowledge, basic prior knowledge of SQL databases and queries, Natural Language Processing knowledge, and NVIDIA NGC and API keys.
Ensure the following tools are installed on your system:
For local run setups, ensure that port 8000 (used by local NIM and other local HTTP services in the labs) and port 6006 (used by Phoenix) are available before starting the notebooks.
First, clone this repository and navigate to the project directory:
https://github.com/openhackathons-org/agentic-ai-bootcamp
cd agentic-ai-bootcampCreate and activate a new virtual environment using Python 3.13 or newer:
# Create virtual environment
python -m venv agentic-ai-env
# Activate virtual environment
source agentic-ai-env/bin/activateWith the virtual environment activated, install the required packages:
# Install requirements
uv pip install -r requirements.txtArize Phoenix is an open-source observability UI used in some labs to collect and inspect traces (for example, from LLM and agent runs). Start it in a separate terminal while your virtual environment is activated, and leave that terminal running while you work through the notebooks.
# Launch the Phoenix web UI and trace collector (default UI port is 6006)
phoenix serveExample startup output (versions and paths may differ on your machine):
✅ Migrations completed in 0.613 seconds.
INFO: Started server process [23099]
INFO: Waiting for application startup.
██████╗ ██╗ ██╗ ██████╗ ███████╗███╗ ██╗██╗██╗ ██╗
██╔══██╗██║ ██║██╔═══██╗██╔════╝████╗ ██║██║╚██╗██╔╝
██████╔╝███████║██║ ██║█████╗ ██╔██╗ ██║██║ ╚███╔╝
██╔═══╝ ██╔══██║██║ ██║██╔══╝ ██║╚██╗██║██║ ██╔██╗
██║ ██║ ██║╚██████╔╝███████╗██║ ╚████║██║██╔╝ ██╗
╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═╝ v14.5.0
| ⭐️⭐️⭐️ Support Open Source ⭐️⭐️⭐️
| ⭐️⭐️⭐️ Star on GitHub! ⭐️⭐️⭐️
| https://github.com/Arize-ai/phoenix
|
| 🌎 Join our Community 🌎
| https://join.slack.com/t/arize-ai/shared_invite/zt-3r07iavnk-ammtATWSlF0pSrd1DsMW7g
|
| 📚 Documentation 📚
| https://arize.com/docs/phoenix
|
| 🚀 Phoenix Server 🚀
| Phoenix UI: http://localhost:6006
|
| Authentication: False
| Log traces:
| - gRPC: http://localhost:4317
| - HTTP: http://localhost:6006/v1/traces
| Storage: sqlite:////Users/krkalyan/.phoenix/phoenix.db
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:6006 (Press CTRL+C to quit)
From this output, the useful bits are:
- Phoenix UI — open http://localhost:6006 in a browser to explore traces and experiments.
- Storage — Phoenix uses a local SQLite database under your home directory (the exact path is printed in the log).
- Stopping the server — press Ctrl+C in the terminal where
phoenix serveis running when you no longer need the UI.
curl -fsSL https://code-server.dev/install.sh | sh
# Install Python Extensions
code-server --install-extension ms-python.python --install-extension ms-toolsai.jupyter
code-server --auth none --port 8888After running the command, you should see output similar to:
[2026-04-15T08:04:15.280Z] info Wrote default config file to /Users/krkalyan/.config/code-server/config.yaml
[2026-04-15T08:04:15.461Z] info code-server 4.112.0 d7599ae360900ad55b503e3c840b417a1eae4798
[2026-04-15T08:04:15.462Z] info Using user-data-dir /Users/root/.local/share/code-server
[2026-04-15T08:04:15.468Z] info Using config file /Users/root/.config/code-server/config.yaml
[2026-04-15T08:04:15.468Z] info HTTP server listening on http://127.0.0.1:8888/
[2026-04-15T08:07:10.214Z] info - Authentication is disabled
[2026-04-15T08:04:15.468Z] info - Not serving HTTPS
With code-server running, open http://localhost:8888 in your browser (or use the URL printed in the terminal if it differs). In the workspace, open the tutorial directory and start from start_here.ipynb.
When you are finished with the labs close your shell or pressing Ctrl+D in the terminal. Congratulations, you've successfully built and deployed an Agentic AI Bootcamp!
If you encounter any issues:
-
Virtual Environment Issues
- Make sure you're in the correct directory when creating the virtual environment
- Verify that the virtual environment is activated (you should see
(agentic-ai-env)in your terminal prompt)
-
Package Installation Issues
- Try updating pip before installing requirements:
pip install --upgrade pip - If a package fails to install, try installing it separately
- Try updating pip before installing requirements:
-
GPU Access Issues
- Ensure NVIDIA drivers are properly installed
- Check if CUDA toolkit is installed and matches your PyTorch version
- Run
nvidia-smiin terminal to verify GPU is recognized
-
VSCode Access Issues
- Make sure port 8888 is not being used by another application
- If accessing from another machine, ensure firewall settings allow the connection
- Try a different port if 8888 is unavailable
For additional help, please open an issue in the GitHub repository.
This option packages the entire environment — Python 3.13, the lab requirements, and code-server with the Python and Jupyter extensions — into a single container. It is the fastest way to run the bootcamp on a laptop or workstation without touching the host's Python installation.
- Docker Engine 24+ with the Compose plugin (
docker compose versionshould succeed) - Ports
8888(code-server) and6006(Phoenix) free on the host - Roughly 6 GB of free disk space for the image
A GPU is not required for the local container; the labs reach NIM endpoints over the network. If you do have an NVIDIA GPU and want to use it, install the NVIDIA Container Toolkit and add a deploy.resources.reservations.devices block to docker-compose.yml.
git clone https://github.com/openhackathons-org/agentic-ai-bootcamp
cd agentic-ai-bootcampFrom the repo root, build the image and start the service in the background:
docker compose up --build -dThe first build takes a few minutes while requirements.txt is installed and code-server is downloaded. Subsequent starts reuse the cached image and come up in seconds.
The compose file mounts the repo at /workspace/agentic-ai-bootcamp and settings.json at /workspace/agentic-ai-bootcamp/.vscode/settings.json, so any edits you make on the host are visible inside the container immediately — no rebuild required.
Open http://localhost:8888 in your browser. code-server will load the agentic-ai-bootcamp workspace; navigate to the tutorial directory and start from start_here.ipynb.
Phoenix is installed inside the container. Follow the instructions in lab 5 to launch the Phoenix server.
The UI is published on the host at http://localhost:6006 via the port mapping in docker-compose.yml.
# Stop the container but keep the image
docker compose down
# Stop and remove the built image
docker compose down --rmi local- Port already in use — another process is bound to
8888or6006. Either free the port or remap it indocker-compose.yml(e.g."9000:8888"). - Permission denied on bind mount — on Linux, the container writes as
rootby default; files it creates may be owned byrooton the host. Runsudo chown -R $USER:$USER .after stopping the container if needed. - Image rebuild after editing
requirements.txt— bind mounts only cover the repo; package changes requiredocker compose up --buildto reinstall inside the image. - Code-server unreachable from another machine —
docker-compose.ymlbinds to all interfaces inside the container, but Docker only publishes tolocalhostby default. Change the port mapping to"0.0.0.0:8888:8888"or use SSH port forwarding.