Documentation Index
Fetch the complete documentation index at: https://docs.praison.ai/llms.txt
Use this file to discover all available pages before exploring further.
Context Monitor
The Context Monitor writes runtime context snapshots to disk, providing visibility into exactly what’s being sent to the model.
Agent-Centric Quick Start
from praisonaiagents import Agent
from praisonaiagents import ManagerConfig
# Enable monitoring via context param
agent = Agent(
instructions="You are helpful.",
context=ManagerConfig(
monitor_enabled=True,
monitor_path="./context.txt",
monitor_format="human", # or "json"
redact_sensitive=True,
),
)
# Monitoring happens automatically during chat
response = agent.chat("Hello!")
# Check ./context.txt for snapshot
Low-Level API
from praisonaiagents import (
ContextMonitor,
ContextLedger,
BudgetAllocation,
)
# Create monitor
monitor = ContextMonitor(
enabled=True,
path="./context.txt",
format="human",
frequency="turn",
)
# Write snapshot
monitor.snapshot(
ledger=ledger_data,
budget=budget_data,
messages=messages,
trigger="turn",
)
CLI Usage
# Enable monitoring when starting chat
praisonai chat --context-monitor
# Custom path and format
praisonai chat --context-monitor --context-monitor-path ./debug/context.json --context-monitor-format json
# In-session commands
/context on # Enable monitoring
/context off # Disable monitoring
/context dump # Write snapshot now
/context path ./ctx # Change output path
/context format json # Change format
Human-Readable (context.txt)
================================================================================
PRAISONAI CONTEXT SNAPSHOT
================================================================================
Timestamp: 2025-01-07T19:30:45Z
Session ID: abc123
Agent: CodeAssistant
Model: gpt-4o-mini
Model Limit: 128,000 tokens
Output Reserve: 8,000 tokens
Usable Budget: 120,000 tokens
--------------------------------------------------------------------------------
TOKEN LEDGER
--------------------------------------------------------------------------------
Component | Tokens | Budget | % Used
-------------------|---------|---------|--------
System Prompt | 1250 | 2000 | 62.5%
History | 45000 | 72000 | 62.5%
Tool Outputs | 18000 | 20000 | 90.0%
-------------------|---------|---------|--------
TOTAL | 66820 | 120000 | 55.7%
--------------------------------------------------------------------------------
CONVERSATION HISTORY (12 turns)
--------------------------------------------------------------------------------
[Turn 1] USER: Help me refactor the authentication module
[Turn 2] ASSISTANT: I'll help you refactor...
...
================================================================================
JSON (context.json)
{
"timestamp": "2025-01-07T19:30:45Z",
"session_id": "abc123",
"agent_name": "CodeAssistant",
"model_name": "gpt-4o-mini",
"budget": {
"model_limit": 128000,
"output_reserve": 8000,
"usable": 120000
},
"ledger": {
"system_prompt": 1250,
"history": 45000,
"tool_outputs": 18000,
"total": 66820
},
"utilization": 0.557,
"messages": [...],
"warnings": []
}
Update Frequency
| Frequency | Trigger | Use Case |
|---|
turn | After each user/assistant turn | General monitoring |
tool_call | Before/after each tool call | Debug tool output growth |
manual | Only via /context dump | On-demand inspection |
overflow | When budget exceeded | Alert-based |
monitor = ContextMonitor(
enabled=True,
frequency="tool_call", # Write on every tool call
)
Sensitive Data Redaction
By default, sensitive data is redacted in snapshots:
from praisonaiagents import redact_sensitive
text = "API key: sk-proj-abc123..."
redacted = redact_sensitive(text)
# Output: "API key: [REDACTED]"
Patterns redacted:
- API keys (
sk-, api_key, etc.)
- Passwords
- Tokens
- Connection strings
# Disable redaction (not recommended)
praisonai chat --context-monitor --no-context-redact
Multi-Agent Monitoring
from praisonaiagents import MultiAgentMonitor
# Create per-agent monitors
multi_monitor = MultiAgentMonitor(base_path="./context/")
# Get monitor for each agent
researcher_monitor = multi_monitor.get_agent_monitor("researcher")
writer_monitor = multi_monitor.get_agent_monitor("writer")
# Enable all
multi_monitor.enable_all()
Output files:
context/
├── context_researcher.txt
├── context_writer.txt
└── context_combined.txt
Safety Features
- Opt-in by default: Monitoring is disabled unless explicitly enabled
- Redaction: Sensitive data redacted by default
- Atomic writes: Uses temp file + rename to prevent corruption
- Respects ignore rules: Honors
.praisonignore for file content
Configuration
# config.yaml
context:
monitor:
enabled: false
path: ./context.txt
format: human
frequency: turn
redact_sensitive: true
Environment Variables
PRAISONAI_CONTEXT_MONITOR=true
PRAISONAI_CONTEXT_MONITOR_PATH=./context.txt
PRAISONAI_CONTEXT_MONITOR_FORMAT=human
PRAISONAI_CONTEXT_MONITOR_FREQUENCY=turn
PRAISONAI_CONTEXT_REDACT=true
Next Steps