Context health monitoring for AI agents — detect poisoning, drift, loops
Project description
StreamCtx
Your AI agent is silently corrupting its own context. StreamCtx detects it — and fixes it.
Install
pip install streamctx
2-Line Setup
import streamctx
streamctx.start() # patches OpenAI + Anthropic automatically
The Problem Nobody Talks About
You ship an AI agent. It works perfectly in demos.
Then in production:
- Agent gets stuck repeating the same failed action 58 times
- Context from step 3 contradicts context from step 7
- Agent hallucinates a tool call, writes it to memory, references it forever
- Your $0.50 task costs $50 because nobody set a limit
Every LLM observability tool tracks tokens. Nobody tracks context health.
Until now.
What StreamCtx Does
1. Context Poison Detection
result = streamctx.scan(messages)
print(result["health_score"]) # 25/100
print(result["warnings"])
# ⚠️ Repeated errors: 'failed' 4x — agent stuck in loop
# 🔴 Context severely poisoned — resume from checkpoint
2. Context Diff — See Exactly What Changed
diff = streamctx.context_diff(step3_msgs, step7_msgs, step_a=3, step_b=7)
print(diff["summary"])
# ⚠️ System prompt REMOVED — agent lost instructions
# ⚠️ Contradiction: 'use gpt' added but 'use claude' removed
# Drift Score: 50/100
3. Auto-Checkpoint + Resume
session_id = streamctx.get_session_id()
messages = streamctx.resume(session_id)
# Pick up exactly where agent left off
4. 50% Token Compression
result = streamctx.compress(messages, max_tokens=2000)
# 140 tokens → 70 tokens (50% reduction)
5. Self-Healing
stats = streamctx.healing_stats()
# failures: 1, recoveries: 1
6. Full Session Report
streamctx.report()
streamctx.stop()
Storage Backends
StreamCtx works out of the box with zero config (SQLite, local file). For production, point it at Supabase for managed, multi-user persistence:
# .env
STREAMCTX_BACKEND=supabase
SUPABASE_URL=your-project-url
SUPABASE_KEY=your-api-key
No code changes needed — same API, different backend.
Feature Comparison
| Feature | StreamCtx | Langfuse | LangSmith | Mem0 |
|---|---|---|---|---|
| Token tracking | YES | YES | YES | NO |
| Cost estimation | YES | YES | YES | NO |
| Context Poison Det. | YES | NO | NO | NO |
| Context Diff | YES | NO | NO | NO |
| Auto-checkpoint | YES | NO | NO | NO |
| 50% Compression | YES | NO | NO | NO |
| Self-healing | YES | NO | NO | NO |
| Zero config | YES | NO | NO | NO |
| Open source | YES | YES | NO | NO |
| Core features free forever | YES | Partial | NO | NO (Graph Memory paywalled) |
Quick Start
import streamctx
from openai import OpenAI
streamctx.start()
client = OpenAI()
messages = [{"role": "user", "content": "Hello!"}]
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages,
)
result = streamctx.scan(messages)
print(result["health_score"])
print(result["recommendation"])
streamctx.report()
streamctx.stop()
API Reference
streamctx.start() # start tracking
streamctx.stop() # stop tracking
streamctx.report() # print full report
streamctx.wrap(client) # manually wrap client
streamctx.scan(messages) # context health score
streamctx.context_diff(a, b) # compare two steps
streamctx.checkpoint() # save checkpoint
streamctx.resume(session_id) # resume from checkpoint
streamctx.get_session_id() # current session ID
streamctx.compress(messages) # 50% token compression
streamctx.healing_stats() # self-healing stats
Why StreamCtx?
Most tools answer: "How many tokens did I use?"
StreamCtx answers: "Why is my agent broken — and how do I fix it?"
Pricing
The core SDK — all 6 features above, plus the SQLite backend — is free forever, MIT-licensed, with no feature gates. No credit card, no signup, no locked features.
A managed offering (hosted Supabase backend + observability dashboard + team access) is planned for teams who want infrastructure handled for them. The features themselves will never move behind a paywall.
Roadmap
Done:
- Token tracking + cost estimation
- Context poison detection
- Context diff + drift scoring
- Auto-checkpoint + resume
- 50% token compression
- Self-healing engine
- Supabase storage backend
Coming:
- Context budget manager (v0.4.0)
- Visual dashboard
- Multi-agent support
License
MIT — Sneh R Joshi
Built by a solo founder who got tired of AI agents silently going insane.
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
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 streamctx-0.4.1.tar.gz.
File metadata
- Download URL: streamctx-0.4.1.tar.gz
- Upload date:
- Size: 37.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e28716eccbd98f073266cdce59e02051774edcd2c4c62247fb0b869cb77508ac
|
|
| MD5 |
541f9145731e9e1048196785772335b4
|
|
| BLAKE2b-256 |
540fc6d445175ceac81c222f80e94f66a801e695d3d160d13f851eef41545766
|
File details
Details for the file streamctx-0.4.1-py3-none-any.whl.
File metadata
- Download URL: streamctx-0.4.1-py3-none-any.whl
- Upload date:
- Size: 31.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f96d09a5d493db7846942cbb2dce4a7ed321a278040fba6c778e52e9d04b6943
|
|
| MD5 |
572128f1bb2299a399b2f02f24d926f2
|
|
| BLAKE2b-256 |
fcf91284fea0d3befbe35ece348bb7227bd402fbc6cf9763a8a7001f5ab30a64
|