SDK integration examples
The Watcher SDK source archive includes integration examples. Each one connects a tool that the Watcher client does not cover, such as a coding agent, agent framework, gateway, model library, compliance API or SIEM. The examples are source code to adapt and test in your own environment, not built-in connections. For Claude Code, Codex and GitHub Copilot CLI, use the Watcher client instead; see Integrations.
Recognized SDK agents appear by name in session views, alerts and agent filters. A name does not imply support for every feature; the coverage and limits below still apply.
Get the examples
Download watcher_sdk-<version>-source.tar.gz from the
Watcher release matching your server.
Extract it with tar -xzf watcher_sdk-<version>-source.tar.gz, replacing
<version> with the release number without its leading v. The examples are
under sdk/examples/. Keep the whole sdk/ directory together: Python examples
install the SDK from the adjacent source. The wheel installs the client library
and optional CLI; examples ship in the source archive. Older source releases
may not contain examples.
Integration names link to the upstream projects or their documentation. Each source folder links to the example's folder in the public SDK repository. Its README gives setup, usage, supported inputs, error behavior and test commands. The linked folders match the latest production release; use the copy in the archive that matches your server.
Choose the data flow
Coding agents and general-purpose agents connect through native tool hooks or approval interfaces. Framework examples use the framework's scheduler or callbacks. A hook can stop a tool only when the host waits for the decision before dispatch. Read the example's timeout behavior and supported tool paths.
For unattended operation, a call that requires a human must remain withheld. Examples with a human approval callback can pass that decision to an authorized interface and record the choice. A local callback is not a built-in approval UI; each README states what the example implements.
Gateway examples install monitoring on the gateway server. Clients using a covered route need no Watcher library. Synchronous plugins can hold a model's tool proposals before the client receives them. Export-only connections import completed requests and cannot stop those requests. A gateway cannot prevent action outside its covered routes or tools that already ran at the provider.
The gateway hook accepts complete provider request/response
pairs, converted transcripts, or a Claude Code or Codex transcript file. Its configured
enforcement mode
controls observation, enforcement and paused behavior through the same endpoint.
A successful submission does not prove durable recording. Verify the stored
conversation and decisions through the query API or
Analyzer. Each gateway example starts every
conversation ID it sends with its own prefix, such as litellm:, so its
sessions show the Gateway session source there. The LiteLLM example requires an
x-watcher-session-id header or native Claude/Codex UUID metadata and derives
its litellm: conversation ID from either. A custom integration that sends
other IDs shows Hooks API.
Compliance API ingestion imports activity that has already happened. It supports later review and cannot stop past tool calls.
Observability exports send stored decisions, selected session summaries and optional transcripts to other systems. Transcript content is excluded unless explicitly enabled. The public SDK does not expose a notification-delivery feed; these examples export records, not notification events. Bounded query windows are not a lossless stream of later changes.
Verification labels
The Observe, Block tools and Export columns summarize recorded tests. Dates identify those runs; they do not establish compatibility with changes made since the test. Read the example's README for the tested environment, covered paths and limits. Last tested shows Not recorded when no test run is recorded.
| Label | Meaning |
|---|---|
| Static tests | Adapter tests with simulated Watcher responses; some also exercise installed upstream software. |
| End-to-end testing | The integration path was tested against the Watcher API and database, locally or deployed. Model output or hosted services may use fixtures; see the example's README. |
| Not verified | The example provides this feature, but no passing test is recorded for it. Read its README before relying on it. |
| Not available | The example does not provide this feature. |
These labels describe test coverage, not a guarantee about all tools or sessions. Read the example's limits before using it for blocking review. Some hooks can refuse a tool without recording a decision. Others may let tools run when a hook does not start, times out, or is not loaded.
Local exporter tests do not establish that a hosted destination indexed the records or generated an alert. Each example README names the tested receiver and the steps needed to verify your destination.
Examples by category
Coding agents
| Integration | Source folder | Observe | Block tools | Last tested |
|---|---|---|---|---|
| Aider | aider/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| Amp | amp/ | Static tests | Not available | 2026-09-26 |
| Cline | cline/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| Continue CLI | continue/ | Static tests | Not available | 2026-09-26 |
| Cursor | cursor/ | Static tests | Static tests | 2026-09-26 |
| Gemini CLI | gemini-cli/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| Goose | goose/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| Hermes Agent | hermes/ | Not verified | Not verified | Not recorded |
| Kilo Code | kilocode/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| Mistral Vibe | mistral-vibe/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| OpenCode | opencode/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| OpenHands | openhands/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| Pi | pi/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| Qwen Code | qwen-code/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| Roo Code | roo-code/ | Static tests | Not available | 2026-09-26 |
| Windsurf | windsurf/ | Static tests | Static tests | 2026-09-26 |
General-purpose agents
| Integration | Source folder | Observe | Block tools | Last tested |
|---|---|---|---|---|
| OpenClaw | openclaw/ | End-to-end testing | End-to-end testing | 2026-09-26 |
Agent frameworks
| Integration | Source folder | Observe | Block tools | Last tested |
|---|---|---|---|---|
| Agno | agno/ | Static tests | Static tests | 2026-09-26 |
| AutoGen | autogen/ | Static tests | Static tests | 2026-09-26 |
| CAMEL | camel/ | Static tests | Static tests | 2026-09-26 |
| CrewAI | crewai/ | Static tests | Static tests | 2026-09-26 |
| DSPy | dspy/ | Static tests | Static tests | 2026-09-26 |
| Google ADK | google-adk/ | Static tests | Static tests | 2026-09-26 |
| Haystack | haystack/ | Static tests | Static tests | 2026-09-26 |
| LangChain | langchain/ | Static tests | Static tests | 2026-09-26 |
| LangChain4j | langchain4j/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| LangGraph | langgraph/ | Static tests | Static tests | 2026-09-26 |
| LlamaIndex | llamaindex/ | Static tests | Static tests | 2026-09-26 |
| Mastra | mastra/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| OpenAI Agents | openai-agents/ | Static tests | Static tests | 2026-09-26 |
| Pydantic AI | pydantic-ai/ | Static tests | Static tests | 2026-09-26 |
| Semantic Kernel | semantic-kernel/ | Static tests | Static tests | 2026-09-26 |
| smolagents | smolagents/ | Static tests | Static tests | 2026-09-26 |
| Strands Agents | strands/ | Static tests | Static tests | 2026-09-26 |
| Vercel AI SDK | vercel-ai/ | End-to-end testing | End-to-end testing | 2026-09-26 |
Gateways
| Integration | Source folder | Observe | Block tools | Last tested |
|---|---|---|---|---|
| Agent Router | agent-router/ | End-to-end testing | End-to-end testing | 2026-10-06 |
| Bifrost | bifrost/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| Cloudflare AI Gateway | cloudflare-ai/ | Static tests | Not available | 2026-09-26 |
| Helicone | helicone/ | End-to-end testing | Not available | 2026-09-26 |
| Kong AI Proxy | kong-ai/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| LiteLLM proxy | litellm/ | End-to-end testing | End-to-end testing | 2026-10-01 |
| OpenRouter | openrouter/ | Static tests | Not available | 2026-09-26 |
| Portkey | portkey/ | End-to-end testing | End-to-end testing | 2026-09-26 |
Model libraries
| Integration | Source folder | Observe | Block tools | Last tested |
|---|---|---|---|---|
| Anthropic Messages | anthropic/ | Static tests | Static tests | 2026-09-26 |
| Cohere V2 | cohere/ | End-to-end testing | End-to-end testing | 2026-09-26 |
| Google Gen AI | google-genai/ | Static tests | Static tests | 2026-09-26 |
| Groq | groq/ | Static tests | Static tests | 2026-09-26 |
| Hugging Face Inference | huggingface-inference/ | Static tests | Static tests | 2026-09-26 |
| Mistral AI | mistralai/ | Static tests | Static tests | 2026-09-26 |
| Ollama | ollama/ | Static tests | Static tests | 2026-09-26 |
| OpenAI Responses and Chat Completions | openai/ | Static tests | Static tests | 2026-09-26 |
Compliance APIs
| Integration | Source folder | Observe | Block tools | Last tested |
|---|---|---|---|---|
| Claude Compliance API | claude-compliance/ | Static tests | Not available | 2026-09-26 |
Observability and SIEM
| Integration | Source folder | Export | Last tested |
|---|---|---|---|
| Google Security Operations | google-security-operations/ | Static tests | 2026-09-26 |
| Microsoft Sentinel | microsoft-sentinel/ | Static tests | 2026-09-26 |
| OpenTelemetry | opentelemetry/ | Static tests | 2026-09-26 |
| Splunk | splunk/ | Static tests | 2026-09-26 |
Export destinations
Use these examples to send stored decisions, selected session summaries and optional transcripts to an observability or SIEM destination. Follow the README of the example's source folder. The OpenTelemetry example has a separate setup section for each destination.
| Destination | Source folder | Transport |
|---|---|---|
| Grafana / Loki | opentelemetry/ | OTLP logs through a Collector |
| Datadog | opentelemetry/ | OTLP logs through a Collector |
| Splunk | splunk/ | HTTP Event Collector |
| Microsoft Sentinel | microsoft-sentinel/ | Azure Monitor Logs Ingestion into a custom table |
| Elastic Cloud | opentelemetry/ | Managed OTLP endpoint through a Collector |
| New Relic | opentelemetry/ | OTLP logs through a Collector |
| Dynatrace | opentelemetry/ | OTLP logs through a Collector |
| AWS CloudWatch Logs | opentelemetry/ | OTLP logs signed by the Collector |
| OpenSearch | opentelemetry/ | OTLP through OpenSearch Ingestion or Data Prepper |
| Google Security Operations | google-security-operations/ | Chronicle v1 structured-event import |
An accepted request does not prove searchable records or an alert. The README provides a destination check and states which local tests were run. Reconcile late-arriving records and later decision changes before relying on scheduled exports; occurrence-time windows do not provide a complete change feed.