Why the Controller?
Traditional observability requires adding SDKs to every service — changing code, rebuilding images, and redeploying. The Controller eliminates all of that:How It Works
The Controller provides two types of observability:LLM Observability (eBPF-based)
Uses eBPF to intercept LLM API calls at the network level — no application changes required. Captures:- Model name, provider, and endpoint
- Token usage (prompt + completion)
- Request latency and error rates
- Cost estimation
Agent Observability (SDK injection)
Automatically injects the OpenLIT Python SDK into running Python applications to capture:- Agent framework spans (LangChain, CrewAI, LangGraph, etc.)
- Tool calls and chain-of-thought traces
- Vector database operations
Deployment Modes
The Controller auto-detects its environment and adapts accordingly:Kubernetes
Runs as a DaemonSet on every node. Discovers Pods, Deployments, DaemonSets, and StatefulSets. SDK injection triggers rolling updates.
Docker
Runs as a sidecar container alongside your services. Discovers containers via the Docker socket. SDK injection recreates the container.
Linux
Runs as a systemd service or standalone process. Discovers bare-metal processes on the host. SDK injection uses systemd drop-in files.
Architecture
- Service Discovery — The Controller scans for processes making LLM API calls (OpenAI, Anthropic, Gemini, Bedrock, etc.)
- Agents — Discovered services appear in the OpenLIT dashboard where you can enable/disable observability
- LLM Observability — One-click eBPF instrumentation for LLM traffic metrics
- Agent Observability — One-click SDK injection for agent framework traces
- Reconciliation — The Controller automatically restores your desired state after pod restarts, container recreates, or process restarts
The Agents Page
The Agents page is the dashboard page where you manage all Controller-discovered services. Once the Controller is running, navigate to Agents in the OpenLIT sidebar.Services view
The main view shows every service the Controller has discovered across your infrastructure:Enabling observability
Click Enable next to any service. The Controller will:- LLM Observability — Attach eBPF probes to intercept LLM API traffic. Takes effect within seconds, no restart required.
- Agent Observability — Inject the OpenLIT Python SDK. In Kubernetes this triggers a rolling update; in Docker the container is recreated; on Linux the systemd service is restarted.
Disabling observability
Click Disable to remove instrumentation:- LLM Observability — eBPF probes are detached immediately. No application restart.
- Agent Observability — The injected SDK environment variables are removed. In Kubernetes a rolling update restores the original pod spec. In Docker the container is recreated without the SDK. On Linux the systemd drop-in is removed and the service is restarted.
Service detail page
Click on a service name to see its detail page:- Controller instance — Which Controller node is managing this service
- Workload info — Namespace, deployment name, container image (Kubernetes), container ID (Docker), or PID/executable (Linux)
- Instrumentation status — Current state for both LLM and Agent Observability
- SDK version — The OpenLIT Python SDK version injected (for Agent Observability)
- Last seen — When the Controller last reported this service
Controller instances
The Controller tab shows all running Controller instances with their:- Node/host name
- Deploy mode (Kubernetes, Docker, Linux)
- Poll interval and last poll time
- Number of services discovered
- Version
Troubleshooting
Getting Started
Quickstart
Get the Controller running in under 5 minutes
Configuration
Customize discovery, polling, endpoints, and more

