Session and User Context
Tag traces with session and user IDs for multi-user applications
When building multi-user applications, you often need to track which user or session triggered each agent execution. Peargent provides context functions that automatically tag all traces with session and user IDs using thread-local storage.
Context API
Use these functions to manage context for the current thread:
from peargent.observability import (
set_session_id, get_session_id,
set_user_id, get_user_id,
clear_context
)
# Set context
set_session_id("session_123")
set_user_id("user_456")
# Get context
print(f"Session: {get_session_id()}")
print(f"User: {get_user_id()}")
# Clear context (important for thread reuse)
clear_context()Web Application Integration
Flask Middleware
Automatically set context from request headers or session:
@app.before_request
def before_request():
set_session_id(session.get('session_id'))
set_user_id(request.headers.get('X-User-ID'))
@app.after_request
def after_request(response):
clear_context()
return responseFastAPI Middleware
Use middleware to handle context for async requests:
@app.middleware("http")
async def add_context(request: Request, call_next):
set_session_id(request.headers.get("X-Session-ID"))
set_user_id(request.headers.get("X-User-ID"))
response = await call_next(request)
clear_context()
return responseFiltering by Context
Once tagged, you can filter traces by session or user:
# Filter by session
session_traces = tracer.list_traces(session_id="session_123")
# Filter by user
user_traces = tracer.list_traces(user_id="alice") What's Next?
Accessing Traces Learn how to retrieve, filter, and analyze your trace data programmatically.