README.md

July 9, 2026 ยท View on GitHub

TealTiger Logo

TealTiger Python SDK

The first open-source AI agent security SDK with client-side guardrails ๐Ÿ›ก๏ธ

PyPI version Python versions Tests License: Apache 2.0 Documentation v1.4.0 Discord

๐Ÿ“– Read the introduction blog post | ๐Ÿ“š Documentation

What's New in v1.4.0 โ€” Observe Mode (Zero-Config Adoption)

TealTiger v1.4 introduces observe() โ€” one line to instrument any LLM client with full visibility and an instant kill switch:

  • observe(client) โ€” Zero-config proxy wrapping for any of 12 supported LLM providers
  • Automatic Cost Tracking โ€” Per-request, per-session, per-agent cost accumulation across all providers
  • Behavioral Baseline โ€” Statistical profiling (P50/P95/P99 latency, token distribution, cost patterns)
  • PII Detection (REPORT_ONLY) โ€” Passive PII scanning without blocking โ€” visibility before enforcement
  • freeze() / unfreeze() โ€” Instant kill switch to halt any agent immediately, zero policy required
  • Structured Audit Trail โ€” Every call logged with correlation IDs, cost, latency, and governance metadata
  • Governance Dashboard โ€” Real-time overview with KPI metrics, defense pipeline, canary alerts, agent matrix
  • Under 5ms overhead โ€” All instrumentation is in-process, deterministic, and offline-capable
pip install tealtiger==1.4.0

## ๐Ÿš€ Quick Start

```bash
pip install tealtiger
import asyncio
from tealtiger import TealOpenAI, GuardrailEngine, PIIDetectionGuardrail, PromptInjectionGuardrail

async def main():
    # Set up guardrails
    engine = GuardrailEngine()
    engine.register_guardrail(PIIDetectionGuardrail())
    engine.register_guardrail(PromptInjectionGuardrail())

    # Create guarded client โ€” drop-in replacement for OpenAI
    client = TealOpenAI(
        api_key="your-openai-key",
        agent_id="my-agent",
        guardrail_engine=engine
    )

    response = await client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": "Hello!"}]
    )

    print(response.choices[0].message.content)
    print(f"Guardrails passed: {response.security.guardrail_result.passed}")

asyncio.run(main())

๐ŸŒ Supported Providers

95%+ market coverage with 7 LLM providers:

ProviderClientModelsFeatures
OpenAITealOpenAIGPT-4, GPT-3.5 TurboChat, Completions, Embeddings
AnthropicTealAnthropicClaude 3, Claude 2Chat, Streaming
GoogleTealGeminiGemini Pro, UltraMultimodal, Safety Settings
AWSTealBedrockClaude, Titan, Jurassic, Command, LlamaMulti-model, Regional
AzureTealAzureOpenAIGPT-4, GPT-3.5Deployment-based, Azure AD
MistralTealMistralLarge, Medium, Small, MixtralEU Data Residency, GDPR
CohereTealCohereCommand, EmbedRAG, Citations, Connectors

๐Ÿ›ก๏ธ Key Features

TealEngine โ€” Policy Evaluation

Deterministic policy evaluation with multi-mode enforcement:

from tealtiger import TealEngine, PolicyMode, DecisionAction, ReasonCode

engine = TealEngine(
    policies=my_policies,
    mode={
        "default_mode": PolicyMode.ENFORCE,       # or MONITOR, REPORT_ONLY
        "policy_modes": {
            "tools.file_delete": PolicyMode.ENFORCE,
            "identity.admin_access": PolicyMode.ENFORCE
        }
    }
)

decision = engine.evaluate({
    "agent_id": "agent-001",
    "action": "tool.execute",
    "tool": "file_delete",
    "correlation_id": "req-12345"
})

if decision.action == DecisionAction.ALLOW:
    await execute_tool()
elif decision.action == DecisionAction.DENY:
    if ReasonCode.TOOL_NOT_ALLOWED in decision.reason_codes:
        raise ToolNotAllowedError(decision.reason)
elif decision.action == DecisionAction.REQUIRE_APPROVAL:
    await request_approval(decision)

# Risk-based routing
if decision.risk_score > 80:
    await escalate_to_human(decision)

Decision fields: action (ALLOW, DENY, REDACT, TRANSFORM, REQUIRE_APPROVAL, DEGRADE), reason_codes (standardized enums), risk_score (0-100), correlation_id, metadata

TealGuard โ€” Security Guardrails

Client-side guardrails that run in milliseconds with no server dependency:

from tealtiger import GuardrailEngine, PIIDetectionGuardrail, PromptInjectionGuardrail, ContentModerationGuardrail

engine = GuardrailEngine(mode="parallel", timeout=5000)

engine.register_guardrail(PIIDetectionGuardrail(action="redact"))
engine.register_guardrail(PromptInjectionGuardrail(sensitivity="high"))
engine.register_guardrail(ContentModerationGuardrail(threshold=0.7))

result = await engine.execute(user_input)
print(f"Passed: {result.passed}")
print(f"Risk Score: {result.risk_score}")

Detects: PII (emails, phones, SSNs, credit cards), prompt injection, jailbreaks, harmful content, custom patterns.

TealCircuit โ€” Circuit Breaker

Cascading failure prevention with automatic failover:

from tealtiger import TealCircuit

circuit = TealCircuit(
    failure_threshold=5,
    reset_timeout=30000,
    monitor_interval=10000
)

# Wraps provider calls with circuit breaker protection
response = await circuit.execute(
    lambda: client.chat.completions.create(model="gpt-4", messages=messages)
)

TealAudit โ€” Audit Logging & Redaction

Versioned audit events with security-by-default PII redaction:

from tealtiger import TealAudit, RedactionLevel, FileOutput

audit = TealAudit(
    outputs=[FileOutput("./audit.log")],
    config={
        "input_redaction": RedactionLevel.HASH,    # SHA-256 hash + size (default)
        "output_redaction": RedactionLevel.HASH,
        "detect_pii": True,
        "debug_mode": False
    }
)

Redaction levels: HASH (default, production-safe), SIZE_ONLY, CATEGORY_ONLY, FULL, NONE (debug only).

Correlation IDs & Traceability

End-to-end request tracking across all components:

from tealtiger import ContextManager

context = ContextManager.create_context(
    tenant_id="acme-corp",
    app="customer-support",
    env="production"
)

# Context propagates through TealEngine, TealAudit, and all providers
response = await client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello"}],
    context=context
)

# Query audit logs by correlation_id
events = await audit.query(correlation_id=context.correlation_id)

Features: Auto-generated UUID v4 correlation IDs, OpenTelemetry-compatible trace IDs, HTTP header propagation, multi-tenant support.

Policy Test Harness

Validate policy behavior before production deployment:

from tealtiger import PolicyTester, TestCorpora

tester = PolicyTester(engine)
report = tester.run_suite({
    "name": "Customer Support Policy Tests",
    "tests": [
        {
            "name": "Block file deletion",
            "context": {"agent_id": "support-001", "action": "tool.execute", "tool": "file_delete"},
            "expected": {"action": DecisionAction.DENY, "reason_codes": [ReasonCode.TOOL_NOT_ALLOWED]}
        },
        *TestCorpora.prompt_injection(),
        *TestCorpora.pii_detection()
    ]
})

print(f"Tests: {report.passed}/{report.total} passed")
# CLI usage
python -m tealtiger.cli.test ./policies/*.test.json --coverage --format=junit --output=./results.xml

Cost Tracking & Budget Management

Track costs across 50+ models and enforce spending limits:

from tealtiger import CostTracker, BudgetManager, InMemoryCostStorage

storage = InMemoryCostStorage()
tracker = CostTracker()
budget_manager = BudgetManager(storage)

budget_manager.create_budget({
    "name": "Daily GPT-4 Budget",
    "limit": 10.0,
    "period": "daily",
    "alert_thresholds": [50, 75, 90, 100],
    "action": "block",
    "enabled": True
})

# Estimate before request
estimate = tracker.estimate_cost("gpt-4", {"input_tokens": 1000, "output_tokens": 500}, "openai")

# Check budget
check = await budget_manager.check_budget("agent-123", estimate)
if not check.allowed:
    print(f"Blocked by: {check.blocked_by.name}")

๐Ÿ›ก๏ธ OWASP Top 10 for Agentic Applications Coverage

TealTiger v1.2.0 covers 7 out of 10 OWASP ASIs through its SDK-only architecture:

ASIVulnerabilityCoverageComponents
ASI01Goal Hijacking & Prompt Injection๐ŸŸก PartialTealGuard, TealEngine
ASI02Tool Misuse & Unauthorized Actions๐ŸŸข FullTealEngine
ASI03Identity & Access Control Failures๐ŸŸข FullTealEngine
ASI04Supply Chain Vulnerabilities๐Ÿ”ง SupportTealAudit
ASI05Unsafe Code Execution๐ŸŸข FullTealEngine
ASI06Memory & Context Corruption๐ŸŸข FullTealEngine, TealGuard
ASI07Inter-Agent Communication SecurityโŒ PlatformN/A
ASI08Cascading Failures & Resource Exhaustion๐ŸŸข FullTealCircuit
ASI09Harmful Content Generation๐Ÿ”ง SupportTealGuard
ASI10Rogue Agent Behavior๐ŸŸข FullTealAudit

๐Ÿ“– Complete OWASP ASI Mapping | OWASP Top 10 for Agentic Applications

๐ŸŽฏ Use Cases

  • Customer Support Bots โ€” Protect customer PII
  • Healthcare AI โ€” HIPAA compliance
  • Financial Services โ€” Prevent data leakage
  • E-commerce โ€” Secure payment information
  • Enterprise AI โ€” Policy enforcement and audit trails
  • Education Platforms โ€” Content safety

๐Ÿ“š Documentation

๐Ÿค Contributing

We welcome contributions! Please see our Contributing Guide.

๐Ÿ“„ License

Apache 2.0 โ€” see LICENSE


Made with โค๏ธ by the TealTiger team