Skip to main content

Enterprise AI Governance & Shadow AI Hunter SDK

Project description

trustgate-python

TrustGate Python SDK with Automatic Context for enterprises. Use the same API as OpenAI while routing through the TrustGate gateway and auto-injecting trace and workflow context (n8n, GitHub Actions, GitLab CI).

Install

pip install -e .

Usage

1. Direct client (two-keyword API)

Use tg.chat.completions.create() with the same arguments as openai.chat.completions.create(); TrustGate headers are added automatically.

from trustgate import TrustGate

tg = TrustGate(
    base_url="https://your-trustgate-gateway.example",
    api_key="your-api-key",  # optional
)

response = tg.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello"}],
    temperature=0.7,
)
# response is the same shape as OpenAI (e.g. response["choices"][0]["message"]["content"])

2. Zero-config: patch all SDKs at once

Apply TrustGate headers (and optional gateway routing) to OpenAI, Anthropic, and Google Gemini in one call. Uses TRUSTGATE_BASE_URL (and provider-specific env vars) when base_url is not set.

import trustgate
trustgate.patch_all()  # or patch_all(base_url="https://your-gateway.example")
# Then use openai, anthropic, or google.generativeai as usual — all requests get x-trustgate-* headers

3. Monkey patch existing OpenAI code

Route all openai.OpenAI traffic through TrustGate and inject context headers:

import trustgate
trustgate.patch_openai(base_url="https://your-trustgate-gateway.example")

import openai
client = openai.OpenAI(api_key="...")  # base_url and headers are overridden
resp = client.chat.completions.create(model="gpt-4o", messages=[...])

You can also set the gateway URL via environment:

export TRUSTGATE_BASE_URL=https://your-trustgate-gateway.example

Then call trustgate.patch_openai() with no arguments.

4. Multi-model: Anthropic and Gemini

All patches use the same context (context.build_trustgate_headers) for Shadow AI detection (e.g. local_script, n8n, GitHub Actions, GitLab CI).

Anthropic (optional dep: pip install trustgate[anthropic]):

import trustgate
trustgate.patch_anthropic(base_url="https://your-gateway.example")

import anthropic
client = anthropic.Anthropic(api_key="...")  # base_url and x-trustgate-* headers set

Gemini — patch the new google.genai Client (optional dep: pip install trustgate[gemini]), or use the wrapper to send requests via the gateway:

import trustgate
trustgate.patch_google_generativeai(base_url="https://your-gateway.example")

# Or use the wrapper for full control (gateway must proxy to Gemini):
from trustgate import TrustGateGeminiClient
client = TrustGateGeminiClient(base_url="https://your-gateway.example", api_key="...")
response = client.generate_content(model="gemini-1.5-flash", contents="Hello")

Env vars: TRUSTGATE_ANTHROPIC_BASE_URL, TRUSTGATE_GEMINI_BASE_URL (fallback: TRUSTGATE_BASE_URL).

Automatic context (bridge headers)

The SDK detects the environment and sets:

  • x-trustgate-trace-id – Execution/pipeline id (e.g. N8N_EXECUTION_ID, GITHUB_RUN_ID, CI_PIPELINE_ID) or a generated UUID.
  • x-trustgate-workflow-name – Workflow/pipeline name when available (n8n workflow, GitHub workflow, GitLab job).
  • x-trustgate-workflow-step – Optional step name for granular traceability (see Granular traceability); in n8n can be auto-set from N8N_NODE_ID / N8N_NODE_NAME.
  • x-trustgate-source – One of n8n, github_actions, gitlab_ci, or local_script (when no env is detected, for Shadow AI monitoring).

Detection is based on environment variables:

Source Env vars (examples)
n8n N8N_EXECUTION_ID, N8N_WORKFLOW_NAME, N8N_NODE_ID, N8N_NODE_NAME
GitHub Actions GITHUB_ACTIONS, GITHUB_RUN_ID, GITHUB_WORKFLOW
GitLab CI GITLAB_CI, CI_PIPELINE_ID, CI_JOB_NAME

Metadata

Every request includes source_tool metadata (in the x-trustgate-source-tool header as JSON):

  • sdk_version – TrustGate Python SDK version
  • python_version – Python version (e.g. 3.11.5)
  • os – OS name (e.g. Windows, Linux)

You can add or override keys per request with source_tool_override:

tg.chat.completions.create(
    model="gpt-4o",
    messages=[...],
    source_tool_override={"step_name": "extract", "stage": "preprocessing"},
)

Granular traceability

Use workflow_step so the gateway can show different parts of the same workflow (e.g. n8n) as separate steps in the Agent Intelligence Gantt chart. Without it, all calls in one run look like a single block; with it, you see segments like Data_Extraction, Final_Summary, etc.

Direct client:

tg.chat.completions.create(
    model="gpt-4o",
    messages=[...],
    workflow_step="Data_Extraction",
)
# later in the same workflow
tg.chat.completions.create(
    model="gpt-4o",
    messages=[...],
    workflow_step="Final_Summary",
)

n8n (automatic): When running inside n8n, the SDK can set x-trustgate-workflow-step automatically from N8N_NODE_ID or N8N_NODE_NAME, so each node appears as its own step in the Gantt without code changes.

Monkey patch with a default step:

trustgate.patch_openai(
    base_url="https://your-gateway.example",
    workflow_step="CI_CodeReview",
)
# every OpenAI call from this process will send that step

Development

pip install -e ".[dev]"
pytest

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trustgate-0.2.0.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trustgate-0.2.0-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file trustgate-0.2.0.tar.gz.

File metadata

  • Download URL: trustgate-0.2.0.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for trustgate-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6db89b89331bd6093b92ab87be069ad4f8b57af902fae7814e0b62c85a345b93
MD5 0503438491f1073ac2a06b5a074d432b
BLAKE2b-256 a37fb9c2b41b8916266b44f1181e6d7fda0c4a46e98f2d3cc825cb8ef1e6b0ce

See more details on using hashes here.

File details

Details for the file trustgate-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: trustgate-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for trustgate-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2086408f382d8f4c5352f724875603bb444a44e350c2b1ff4684ae3c42ad0848
MD5 868464f2faa77b1f0d4dd07073432be1
BLAKE2b-256 035e2432234752e51e816c8a6ab3e5723e24bc461eb8cd69ad3dc31f6109578c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page