# Integrations

Copy-paste manifests for running the Ingero agent alongside common
parts of the GPU and ML stack. Each subdirectory is self-contained.

| Directory | What it shows |
|-----------|---------------|
| `vllm/` | The agent tracing a vLLM inference server in the same host, plus `bundle/` (a vLLM image with the agent baked in) |
| `pytorch-lightning/` | A Lightning callback that annotates a live trace with the training step and epoch |
| `ray/` | Decorator and context-manager helpers that annotate a live trace per Ray task |
| `hf-trainer/` | A `transformers.Trainer` callback that annotates the trace per step and epoch |
| `deepspeed/` | A loop helper that annotates the trace from a standalone DeepSpeed loop |
| `accelerate/` | An Accelerate `GeneralTracker` that annotates the trace on each `accelerator.log` |
| `mcp/` | Drive Ingero from Claude Code / Cursor / Claude Desktop via the agent's stdio MCP server |

The agent stays the eBPF data producer in every case. These examples
add no agent dependencies; they show placement and configuration only.

Every example except `vllm/` (the inference side-car) uses the agent's
external annotation socket (agent v0.17.0): a training workload writes
step / epoch / task labels into a recorded trace, which `ingero query`
and `ingero explain` join to the eBPF event stream. They require the
agent to run with `trace --record --annotate`, share one pure-stdlib
socket writer (`ingero_annotate.py`), and degrade to a no-op when the
agent is not running with `--annotate`. The annotation wire protocol
they conform to is owned by the agent in `pkg/contract/annotate.go`;
these examples never import agent Go code.
