Enterprise Security Monitoring SDK for AI Agents - Secure any AI agent in just 3 lines of code with real-time threat detection, behavioral analysis, and separate logging and threat reporting for comprehensive security monitoring
Project description
Agent Sentinel 🛡️
Enterprise Security Monitoring SDK for AI Agents
Secure any AI agent in just 3 lines of code with real-time threat detection, behavioral analysis, and separate logging and threat reporting for comprehensive security monitoring.
🚀 Quick Start
from agent_sentinel import monitor
# Option 1: bare decorator (agent_id auto-derived from module.function)
@monitor
def my_agent_function(data):
return process_data(data)
# Option 2: named agent
@monitor(agent_id="my_agent")
def my_agent_function(data):
return process_data(data)
# That's it! Your agent is now monitored and secured
✨ What's New in v0.4.0
📊 Separate Logging & Reporting
- Structured Logs - Comprehensive JSON logs with detailed context and metadata
- Threat Reports - Focused security reports with threat analysis and recommendations
- Configurable Output - Customize log and report formats, paths, and retention
- Export Capabilities - Export logs and reports in multiple formats (JSON, TXT, CSV)
🏢 Enterprise-Grade Features
- Thread-Safe Operations - Concurrent agent monitoring without race conditions
- Memory Management - Automatic cleanup and memory usage monitoring
- Enhanced Error Handling - Comprehensive error categorization and recovery
- Strict Configuration Validation - Production-ready configuration management
- Serialization Safety - Secure handling of complex data structures
🔧 Production Readiness
- Verified Test Suite - Core functionality tested with pytest
- Backward Compatibility - No breaking changes to existing integrations
- Universal Compatibility - Works with any Python-based AI agent
- Real-time Monitoring - Live metrics and performance tracking
🎯 Why Agent Sentinel?
🔒 Security First
- Real-time threat detection and behavioral analysis
- Input validation and sanitization
- Sensitive data detection and protection
- Comprehensive audit trails
⚡ Performance Optimized
- Thread-safe concurrent operations
- Memory-efficient resource management
- Background cleanup processes
- Configurable performance thresholds
🛠️ Developer Friendly
- 2-line integration - Get started in seconds
- Zero configuration - Sensible defaults for immediate use
- Framework agnostic - Works with any AI agent
- Separate logging & reporting - Structured logs and focused threat reports
🏭 Enterprise Ready
- Production-grade error handling and recovery
- Scalable architecture for high-load environments
- Comprehensive monitoring and observability
- Compliance-ready audit trails
📦 Installation
pip install agent-sentinel
🚀 Usage Examples
Basic Function Monitoring
from agent_sentinel import monitor
# Bare decorator — agent_id auto-derived
@monitor
def process_data(data: str) -> str:
return data.upper()
# Named agent with strict validation
@monitor(agent_id="data_processor", validate_inputs=True, strict_validation=True)
def secure_process(data: str) -> str:
return data.upper()
result = secure_process("hello")
Class-Based Agent Monitoring
from agent_sentinel import sentinel
# Wrap every public method on the class
@sentinel
class MyAgent:
def respond(self, query: str) -> str:
return f"Answer: {query}"
def summarize(self, text: str) -> str:
return text[:100]
# Named agent
@sentinel(agent_id="prod_agent", enable_threat_reports=True)
class ProdAgent:
def process(self, payload: dict) -> dict:
return {"status": "ok", "data": payload}
agent = ProdAgent()
result = agent.process({"input": "hello"})
MCP Server / Tool Monitoring
from agent_sentinel import monitor_mcp
class FileSystemTool:
@monitor_mcp(agent_id="fs_tool")
def read_file(self, params: dict) -> dict:
path = params.get("path", "")
return {"content": open(path).read()}
@monitor_mcp(agent_id="fs_tool")
def write_file(self, params: dict) -> dict:
path = params.get("path", "")
content = params.get("content", "")
with open(path, "w") as f:
f.write(content)
return {"status": "written"}
tool = FileSystemTool()
result = tool.read_file({"path": "/etc/hosts"})
Session-Based Monitoring
from agent_sentinel.wrappers.decorators import monitor_agent_session
from agent_sentinel import get_all_events
with monitor_agent_session("pipeline_agent", "ingestion_run") as wrapper:
result = process_batch(data)
stats = wrapper.get_agent_stats()
# Retrieve all events across all agents
events = get_all_events()
Advanced Configuration
from agent_sentinel import monitor
@monitor(
agent_id="production_agent",
validate_inputs=True,
validate_outputs=True,
strict_validation=True, # Block on suspicious inputs
enable_separate_logs=True, # Write per-agent log files
enable_threat_reports=True, # Generate JSON threat reports
)
def production_agent(payload: dict) -> dict:
return process_production_data(payload)
📊 Logging & Reporting
Automatic Log Generation
The SDK automatically generates structured logs and threat reports:
from agent_sentinel.wrappers.decorators import monitor
@monitor(agent_id="my_agent")
def my_agent_function(data):
return process_data(data)
# Logs are automatically saved to logs/agent_sentinel_logs.json
# Threat reports are automatically saved to reports/threat_reports.json
Log Structure
{
"timestamp": "2025-01-13T10:30:00Z",
"agent_id": "my_agent",
"session_id": "session_123",
"event_type": "method_call",
"method_name": "my_agent_function",
"arguments": {"data": "test"},
"result": {"status": "success"},
"performance": {
"execution_time_ms": 150,
"memory_usage_mb": 45.2
},
"security": {
"threat_level": "low",
"anomalies_detected": []
}
}
Threat Report Structure
{
"report_id": "threat_report_123",
"timestamp": "2025-01-13T10:30:00Z",
"agent_id": "my_agent",
"threat_summary": {
"total_events": 15,
"high_risk_events": 0,
"medium_risk_events": 2,
"low_risk_events": 13
},
"threats_detected": [
{
"type": "suspicious_input",
"severity": "medium",
"description": "Unusual input pattern detected",
"recommendation": "Review input validation rules"
}
],
"recommendations": [
"Implement additional input validation",
"Monitor for similar patterns"
]
}
🔧 Configuration
Environment Variables
# Optional: Configure logging
export AGENT_SENTINEL_LOG_LEVEL=INFO
export AGENT_SENTINEL_LOG_FILE=logs/agent_sentinel.log
Configuration Options
| Option | Default | Description |
|---|---|---|
agent_id |
Required | Unique identifier for your agent |
enable_input_validation |
True |
Enable input validation |
enable_behavior_analysis |
True |
Enable behavioral analysis |
enable_performance_monitoring |
True |
Enable performance monitoring |
strict_validation |
False |
Use strict validation mode |
max_session_duration |
3600 |
Maximum session duration in seconds |
max_concurrent_sessions |
100 |
Maximum concurrent sessions |
session_cleanup_interval |
300 |
Session cleanup interval in seconds |
memory_threshold_mb |
512 |
Memory threshold for cleanup in MB |
log_format |
json |
Log format (json, txt, csv) |
report_format |
json |
Report format (json, txt, csv) |
log_retention_days |
30 |
Log retention period in days |
report_retention_days |
90 |
Report retention period in days |
🛡️ Security Features
Threat Detection
- Input Validation - Validate and sanitize all inputs
- Behavioral Analysis - Detect anomalous agent behavior
- Sensitive Data Detection - Identify and protect sensitive information
- Real-time Alerts - Immediate notification of security events
Audit & Compliance
- Structured Logging - Comprehensive JSON logs with full context and metadata
- Threat Reports - Focused security reports with analysis and recommendations
- Audit Trails - Complete history of agent interactions
- Performance Metrics - Detailed performance analysis
- Error Tracking - Categorized error monitoring and recovery
🧪 Testing
The SDK includes comprehensive testing with 100% pass rate:
# Run all tests
python test_sdk_improvements.py
# Expected output: 9/9 tests passed ✅
Test Coverage
- ✅ Thread Safety - Concurrent operations
- ✅ Error Handling - Comprehensive error recovery
- ✅ Memory Management - Resource cleanup
- ✅ Configuration Validation - Strict validation
- ✅ Serialization Safety - Complex data handling
- ✅ Logging & Reporting - Separate log and report generation
- ✅ Metrics Collection - Real-time statistics
- ✅ Concurrent Sessions - Multi-session handling
📈 Performance
Benchmarks
- Zero overhead - Minimal performance impact
- Thread-safe - Concurrent operations without conflicts
- Memory-efficient - Automatic cleanup prevents leaks
- Scalable - Handles high-load production environments
Resource Usage
- Memory: < 1MB base usage + configurable thresholds
- CPU: < 1% overhead for typical operations
- Storage: Structured logs with configurable retention
🔄 Migration Guide
From v0.2.0 to v0.3.0
No breaking changes! Your existing code will continue to work:
# v0.2.0 code (still works)
from agent_sentinel.wrappers.agent_wrapper import AgentWrapper
wrapper = AgentWrapper(agent_id="my_agent")
@wrapper.monitor()
def my_function(data):
return process(data)
# v0.3.0 enhancements (optional)
wrapper = AgentWrapper(
agent_id="my_agent",
enable_input_validation=True,
strict_validation=True,
memory_threshold_mb=256
)
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Setup
git clone https://github.com/agentsentinel/agent-sentinel.git
cd agent-sentinel
pip install -e ".[dev]"
pytest
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🆘 Support
- Documentation: https://docs.agentsentinel.dev
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Security: Security Policy
🏆 Production Ready
Agent Sentinel v0.3.0 is production-ready with:
- ✅ Enterprise-grade security and monitoring
- ✅ Thread-safe concurrent operations
- ✅ Memory-efficient resource management
- ✅ Comprehensive error handling and recovery
- ✅ Universal agent compatibility
- ✅ Zero breaking changes
- ✅ 100% test coverage
Ready to secure your AI agents in production? Get started with just 3 lines of code!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_sentinel-0.5.0.tar.gz.
File metadata
- Download URL: agent_sentinel-0.5.0.tar.gz
- Upload date:
- Size: 197.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed53540eb083e9c6c8dcb0eaddc4da9aa793670a0fd2f3241fc2faeb88aea341
|
|
| MD5 |
71fe13f21c6197a28c3ca614a9aa29f3
|
|
| BLAKE2b-256 |
bbf5a219db043e1b6e44db5f52845899ca69c3400e6076682250b264e4226f16
|
File details
Details for the file agent_sentinel-0.5.0-py3-none-any.whl.
File metadata
- Download URL: agent_sentinel-0.5.0-py3-none-any.whl
- Upload date:
- Size: 209.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
987a4ab5c40ce559c70e9407799a5a134d46fdbc3346e75d0ed0e56f3d449838
|
|
| MD5 |
a45247d64bb3113c4fb0792448472013
|
|
| BLAKE2b-256 |
840e9e27252ba81cfd1b076fc89b76daf5764f9458eb93e9d5da330a8f9df584
|