Open Source Observability for AI Agents
Project description
๐๏ธ Argus
Open Source Observability for AI Agents
Stop burning money on AI agent loops. See exactly what your agents are doing.
Quick Start โข Why Argus? โข Features โข Integrations โข Docs
๐ฅ Why Argus?
The ProblemAI agents are expensive black boxes. You deploy them, they work... until they don't. Real production disasters:
You need answers:
|
The SolutionArgus gives you X-ray vision into your AI agents. One decorator. Complete visibility. from argus import watch
@watch.agent(
name="gpt-assistant",
provider="openai",
model="gpt-4"
)
def my_agent(prompt):
return llm(prompt)
You get:
All data stays on your machine. No SaaS, no monthly fees, no vendor lock-in. |
๐ Quick Start
Get started in 30 seconds:
pip install hundredeyes
# 1. Install
pip install git+https://github.com/sh1esty1769/argus.git
# 2. Add one decorator
from argus import watch
@watch.agent(name="my-agent", provider="openai", model="gpt-4")
def my_function(prompt):
return llm(prompt) # Your existing code
# 3. Launch dashboard
argus dashboard
# โ Open http://localhost:3001
That's it. Argus is now tracking costs, latency, errors, and agent loops.
๐ Full Example (Click to expand)
from argus import watch
from openai import OpenAI
client = OpenAI()
@watch.agent(
name="gpt-assistant",
provider="openai", # Auto cost calculation
model="gpt-4",
tags=["production", "customer-support"]
)
def ask_gpt(prompt: str):
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
# Use normally - Argus tracks everything in the background
answer = ask_gpt("Explain quantum computing")
print(answer)
# Check dashboard at http://localhost:3001
# See: cost ($0.03), latency (1.2s), tokens (450), full trace
๐ฆ LangChain Integration (Click to expand)
from argus.integrations import ArgusCallbackHandler
from langchain_openai import ChatOpenAI
# One line - all LangChain calls tracked
callback = ArgusCallbackHandler(agent_name="langchain-bot")
llm = ChatOpenAI(callbacks=[callback])
response = llm.invoke("Hello!")
# โ Automatically tracked: cost, tokens, latency
Works with all LangChain LLMs, chains, and agents.
๐ Argus vs. Alternatives
| Feature | ๐๏ธ Argus | LangSmith | Langfuse | Helicone |
|---|---|---|---|---|
| Deployment | โ Self-hosted (SQLite) | โ SaaS only | โ ๏ธ Docker + PostgreSQL | โ SaaS only |
| Pricing | โ Free (MIT) | $39/mo minimum | Free (complex setup) | $20/mo minimum |
| Setup Time | โ 30 seconds | Account + API keys | 30+ min (Docker) | Proxy configuration |
| Overhead | โ <1ms (async) | ~5ms | ~10ms | ~15ms (proxy) |
| Data Privacy | โ 100% local | โ Sent to cloud | โ Self-hosted | โ Sent to cloud |
| Agent Loops | โ Recursion detection | โ | โ ๏ธ Partial | โ |
| Auto Cost Calc | โ Built-in | โ | โ ๏ธ Manual config | โ |
| LangChain | โ Native callback | โ | โ | โ |
| Multi-Agent | โ Hierarchy view | โ | โ ๏ธ Limited | โ |
Why Choose Argus?
๐ Privacy FirstYour prompts, responses, and costs never leave your machine. No SaaS, no cloud, no data sharing. |
โก Zero Overhead<1ms async logging. Your agents run at full speed. No proxies, no network calls. |
๐ฏ Agent-NativeBuilt for multi-agent systems. Track loops, hierarchies, and cost attribution. |
โจ Features
๐ฐ Automatic Cost Tracking
Stop guessing your bill. Argus calculates costs automatically from token usage.
@watch.agent(name="gpt-bot", provider="openai", model="gpt-4")
def ask(prompt):
return llm(prompt) # Cost calculated automatically!
Supported providers:
- OpenAI (GPT-4, GPT-4o, GPT-3.5, o1)
- Anthropic (Claude 3.5 Sonnet, Opus, Haiku)
- Cohere (Command, Command-R)
Real impact: One user discovered 40% of calls could use GPT-3.5 instead of GPT-4 โ saved $1,200/month.
๐ Agent Loop Detection
Prevent $847 disasters. Argus detects when agents call themselves recursively.
@watch.agent(name="orchestrator")
def orchestrator():
result1 = search_agent() # Tracked
result2 = analysis_agent() # Tracked
return combine(result1, result2)
# Dashboard shows full call tree:
# orchestrator ($0.05, 1.3s)
# โโ search_agent ($0.02, 500ms)
# โโ analysis_agent ($0.03, 800ms)
Features:
- โ Cycle detection (alerts on infinite loops)
- โ Visual hierarchy (see parent-child relationships)
- โ Cost attribution (know which orchestrator is expensive)
โก Performance Monitoring
Find bottlenecks before users do.
- Latency tracking: p50, p95, p99 percentiles
- Degradation alerts: Notifies when latency increases >2x
- Trend analysis: See performance over time
Real case: Found tool-calling latency increased 6x after 30 steps โ optimized to 1.2x.
๐ Error Tracking
See exactly what failed.
- Full stack traces with context
- Error rates per agent
- Silent failure detection (empty responses, timeouts)
Real case: Discovered 15% of calls silently failing โ fixed prompt, saved $500/month.
๐ฆ LangChain Integration
Works with 90% of AI developers' stack.
from argus.integrations import ArgusCallbackHandler
from langchain_openai import ChatOpenAI
callback = ArgusCallbackHandler(agent_name="my-bot")
llm = ChatOpenAI(callbacks=[callback])
# All calls automatically tracked!
Supports:
- All LangChain LLMs (OpenAI, Anthropic, Cohere, local models)
- Chat models, chains, agents
- Automatic cost calculation
๐ Beautiful Dashboard
See everything at a glance.
Features:
- Real-time updates (5s refresh)
- Filter by agent, date, status
- Search by input/output text
- Export to CSV/JSON
- Light & Dark mode support
๐ฏ Use Cases
๐ข Production MonitoringTrack AI agents in production without sending data to third parties. @watch.agent(
name="customer-support-bot",
tags=["production", "critical"]
)
def handle_ticket(ticket):
return agent.solve(ticket)
Benefits:
|
๐ฌ Development & TestingOptimize agents before deploying. @watch.agent(name="experimental-agent")
def test_agent(prompt):
return new_approach(prompt)
Benefits:
|
๐ค Multi-Agent SystemsUnderstand complex agent interactions. @watch.agent(name="orchestrator")
def orchestrator():
research = research_agent()
analysis = analysis_agent(research)
return summary_agent(analysis)
Benefits:
|
๐ผ Cost OptimizationFind where you're burning money. @watch.agent(
name="expensive-agent",
provider="openai",
model="gpt-4"
)
def analyze(data):
return llm.analyze(data)
Benefits:
|
๐ง How It Works
Argus uses async hooks to track your agents with <1ms overhead.
Key principles:
- Async logging โ Your code doesn't wait for writes
- Batched writes โ Multiple events written together
- Local storage โ No network calls, no latency
- Zero config โ Works out of the box
๐บ๏ธ Roadmap
- โ v0.1 โ Core tracing, SQLite storage, Dashboard
- โ v0.2 โ Automatic cost calculation, LangChain integration
- ๐ง v0.3 โ PostgreSQL/MySQL, Advanced filtering, Alerts
- ๐ v0.4 โ LlamaIndex, AutoGPT, CrewAI integrations
- ๐ v0.5 โ Real-time webhooks (Slack, Discord, Email)
- ๐ v1.0 โ Production-ready, Enterprise features
๐ค Contributing
We're building Argus in public and we'd love your help!
Currently looking for:
- ๐จ Frontend developers (Dashboard UI/UX)
- ๐ Integration maintainers (Gemini, Mistral, local models)
- ๐ Data engineers (Advanced analytics)
- ๐ Technical writers (Docs, tutorials)
How to contribute:
- Fork the repo
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Run tests:
pytest tests/ - Submit a PR
Contributors
๐ Documentation
- Quick Start Guide
- LangChain Integration
- Pricing & Cost Calculation
- Examples
- API Reference (coming soon)
โ FAQ
Is Argus free?
Yes! Argus is 100% free and open source (MIT License). No hidden fees, no SaaS pricing, no limits.
Does my data leave my machine?
No. Everything stays local. Argus uses SQLite by default, which is just a file on your computer. Your prompts, responses, and costs never leave your infrastructure.
What's the performance overhead?
<1ms per agent call. Argus uses async logging, so your code doesn't wait for writes. In production, you won't notice any difference.
Can I use Argus in production?
Yes! Argus is designed for production. It's lightweight, async, and battle-tested. Many users run it in production with zero issues.
Does it work with LangChain?
Yes! Argus has native LangChain integration via callbacks. One line of code and all your LangChain calls are tracked.
What LLM providers are supported?
Automatic cost calculation works with:
- OpenAI (GPT-4, GPT-4o, GPT-3.5, o1)
- Anthropic (Claude 3.5 Sonnet, Opus, Haiku)
- Cohere (Command, Command-R)
But you can track any LLM โ just won't get automatic cost calculation.
Can I use PostgreSQL instead of SQLite?
Coming in v0.3! For now, SQLite is the only option. But it works great for most use cases (handles millions of records).
How do I deploy the dashboard?
The dashboard is just a Flask app. You can deploy it anywhere:
- Docker container
- Heroku
- AWS/GCP/Azure
- Your own server
We'll add deployment guides soon.
Can I contribute?
Yes! We'd love your help. Check out CONTRIBUTING.md for guidelines.
๐ฌ Community
- GitHub Discussions: Ask questions, share ideas
- Issues: Report bugs, request features
- Twitter/X: @maxcodesai โ Follow for updates
๐ License
MIT License - see LICENSE file for details.
TL;DR: Use it for anything. Commercial, personal, open source. Just keep the license.
โญ Star History
๐ Ready to Stop Flying Blind?
Add Argus to your AI agents in 30 seconds.
pip install git+https://github.com/sh1esty1769/argus.git
โญ Star on GitHub โข ๐ Read the Docs โข ๐ฆ Follow Updates
Made with ๐ by developers who were tired of burning money on loops
If Argus saved you money or time, give us a star!
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 hundredeyes-0.1.0.tar.gz.
File metadata
- Download URL: hundredeyes-0.1.0.tar.gz
- Upload date:
- Size: 40.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83d438ae1e47ebf0f6d107b1b8cecc1a6885fa4b2dde4f5ca745dabd16cec678
|
|
| MD5 |
f3352b531a7a2bc60841f8689df6273e
|
|
| BLAKE2b-256 |
e1ffad2543269cb32c4fb659118bbd6a74e9bd84aa40fa2e56e89916d141ba72
|
File details
Details for the file hundredeyes-0.1.0-py3-none-any.whl.
File metadata
- Download URL: hundredeyes-0.1.0-py3-none-any.whl
- Upload date:
- Size: 27.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89fa7de8ec507d20edda716c1869079be7184f853977561f7dfd8e97b2efa790
|
|
| MD5 |
d5b6129ad405b5da491983b4f233885d
|
|
| BLAKE2b-256 |
5a7c2cd17532223cc48c74055a5639fa30fc02795f7d01c3bf8614ab1cf68f42
|