---
title: "Before you start"
description: "What the guides' examples assume: a running proxy, the agents they name, the packages and keys they use, and the files they read."
source: "Guardian Agent SDK"
---
The guides' examples are whole programs you can run. Each one assumes the setup on this page, beyond the [Quick start](../quick-start.mdx)'s.

## A proxy for each provider

Most examples call OpenAI, through the proxy the quick start started, at `VIPER_PROXY_URL`. The Anthropic examples need a second proxy, aimed at Anthropic's endpoint on the Agent Gateway, since a proxy fronts one provider's endpoint ([One proxy per provider](./run-an-agent.mdx#one-proxy-per-provider)):

```sh
# OpenAI's, as in the quick start
viper proxy --port 8080 --require-agent-header \
  --gateway-endpoint "$GUARDIAN_URL/v1/openai_api"

# Anthropic's, in another terminal
viper proxy --port 8081 --require-agent-header \
  --gateway-endpoint "$GUARDIAN_URL/v1/anthropic_api"
```

Both proxies load every agent enrolled on the machine when they start, so they share the agents' keys, and the proxy's own key. Point the examples at them:

```sh
export VIPER_PROXY_URL=http://127.0.0.1:8080       # most examples
export OPENAI_PROXY_URL=http://127.0.0.1:8080      # the two-provider example
export ANTHROPIC_PROXY_URL=http://127.0.0.1:8081   # the two-provider example
```

The Anthropic-only example reads `VIPER_PROXY_URL` too, so run it with `VIPER_PROXY_URL=http://127.0.0.1:8081`.

## The agents they name

The examples use three agents: `researcher`, as in the quick start, `planner` and `report-writer`. Enroll the two you don't have yet, then restart the proxies so they load them:

```sh
for agent in planner report-writer; do
  viper agent add "$agent"
  GUARDIAN_API_KEY=ak_... viper agent register "$agent"
done
```

Sub-agents, such as `report-writer`'s `critic`, aren't enrolled: they sign as their parent.

## Packages and keys

Install the clients the examples call, beside the SDK ([Package managers](../install/package-managers.mdx)):

```sh
uv add "openai>=1.55.3" "anthropic>=0.40.0"
uv add "eqty-guardian-agent[langchain,deepagents,mcp]" langchain-openai   # the framework examples
uv add --dev pytest                                                                             # the testing examples
```

The Deep Agents examples need Python 3.11 or later ([Choose an integration](../frameworks/index.mdx#install)).

With pip, install the same packages: the SDK from EQTY Lab's Cloudsmith repository, the rest from PyPI. Then set your provider keys, which reach the providers unchanged:

```sh
export OPENAI_API_KEY=...
export ANTHROPIC_API_KEY=...
```

## The files they read

Some examples read files beside them, by relative paths, which resolve against the folder you run the example from. Create them there, or point the examples at your own.

A skill is a directory holding a `SKILL.md`, here `skills/triage/SKILL.md`:

{/* generated file sdks/python/snippets/skills/triage/SKILL.md markdown */}

```markdown
---
name: triage
description: Sort incoming questions by urgency before answering them.
---

# Triage

Answer urgent questions first. Say which questions you deferred, and why.
```

{/* end generated */}

Instructions the agent can't change, here `docs/agent-notes.md`:

{/* generated file sdks/python/snippets/docs/agent-notes.md markdown */}

```markdown
# Agent notes

Cite the internal documentation for every answer, by page title.
```

{/* end generated */}

A developer prompt read from a file, here `prompts/planner.md`:

{/* generated file sdks/python/snippets/prompts/planner.md markdown */}

```markdown
Break each request into steps, and say which step needs which tool.
```

{/* end generated */}

And code the planner's tools read, fingerprinted as one of its sources, here `lib/routing.py`:

{/* generated file sdks/python/snippets/lib/routing.py python */}

```python
"""Which team handles which kind of request: code the planner's tools read."""

TEAMS = {"billing": "finance", "outage": "on-call", "account": "support"}
```

{/* end generated */}

The [MCP tools](../frameworks/mcp-tools.mdx) example also starts a small MCP server from `servers/docs_server.py`, which that page shows.

Save an example in that folder, under any name that isn't a package's (not `mcp.py` or `langgraph.py`, say), and run it from there with `python example.py`, or `uv run python example.py` in a uv project. An example named `test_*.py` is a test module: keep its name, and run it with `pytest`, or `uv run pytest`.