---
title: "Requirements"
description: "The Python versions, Viper version, optional extras and model clients the Guardian Agent SDK supports."
source: "Guardian Agent SDK"
---
## Python

Python 3.10 or later, on any operating system Viper runs on: Linux or macOS, or a container (see [Supported platforms](https://guardian.docs.eqtylab.io/user-guide/install-viper/#supported-platforms)). The SDK is pure Python; its dependencies (Pydantic, jsonschema, httpx and anyio) install from prebuilt wheels on common platforms.

[Deep Agents](https://github.com/langchain-ai/deepagents) needs Python 3.11 or later, so the `deepagents` extra installs nothing on 3.10, and calling `create_deep_agent` there raises `ModuleNotFoundError`, saying it needs Python 3.11 or later and the extra.

## Viper

The SDK talks to a local Viper proxy, which holds each agent's key, signs its requests and forwards them to your Guardian Platform deployment's Agent Gateway. It needs **Viper 0.3.0 or later**: `Guardian` checks the proxy's agent API, definition schema and features on first use, and raises `ga.ProxyIncompatible`, naming what's missing, if the proxy is older. No definition is sent to an incompatible proxy.

To install Viper and point it at your gateway, see [Install Viper](https://guardian.docs.eqtylab.io/user-guide/install-viper/) in the Guardian Platform docs.

## Optional extras

The core SDK works with OpenAI's and Anthropic's Python clients and anything that takes an `httpx` client. The extras add framework support:

- **`langchain`** (`eqty-guardian-agent[langchain]`): LangChain chat models and tools in a definition and in `bind()`, LangChain's `create_agent` (`guardian_agent.langchain`), and hand-built LangGraph graphs (`guardian_agent.langgraph`).
- **`deepagents`** (`eqty-guardian-agent[deepagents]`): Deep Agents' `create_deep_agent` (`guardian_agent.deepagents`). Python 3.11 or later.
- **`mcp`** (`eqty-guardian-agent[mcp]`): tools from MCP servers, loaded with `langchain-mcp-adapters`, each server recorded in the definition.

Your model provider's LangChain package (`langchain-openai`, `langchain-anthropic`) isn't included: install the one you use.

## Model clients

`agent.bind()` routes these through the proxy:

- OpenAI's `OpenAI` and `AsyncOpenAI`, from `openai` 1.55.3 or later.
- Anthropic's `Anthropic` and `AsyncAnthropic`, from `anthropic` 0.40.0 or later.
- LangChain's `ChatOpenAI` and `ChatAnthropic`, with the `langchain` extra. Another kind of LangChain chat model raises `TypeError`.

Those are the oldest releases that work with httpx 0.28, the newest `httpx` release and the one a fresh install gets: older releases fail as soon as you create the client. Newer releases work too, whether they build on `httpx` (`openai` before 3, `anthropic` before 1.0) or on `httpx2`, as current ones do. The SDK is tested at those oldest releases, at the newest built on `httpx`, and at the newest built on `httpx2`.

A proxy fronts one provider's gateway endpoint, so an agent that calls both OpenAI and Anthropic runs through two proxies ([Quick start](../quick-start.mdx), step 2). `agent.httpx_client()` and `agent.httpx_async_client()` give any other client that takes an `httpx` client the same routing. OpenAI's Realtime (WebSocket) API can't go through the proxy, so a bound client's Realtime connections fail rather than go unsigned.