Catalog PyPI
Back to packageRELEASE DETAILS

0.1.0

PyPI

agentwire-mcp

Real-time message bus and inspector for multi-agent LLM systems

agentsautogencrewailangchainllmmonitoringmulti-agentobservability
Published27 Apr 2026
Direct dependencies15
Transitive dependenciesNot calculated

README

Version 0.1.0 documentation

🔌 AgentWire

Real-time message bus and inspector for multi-agent LLM systems

Python 3.10+ License: MIT Tests Code style: black

Features • Quick Start • Examples • Documentation • Integrations

AgentWire Dashboard

Make the invisible visible. See every message, every agent, every decision.


🎯 The Problem

Multi-agent systems are opaque black boxes. When your 5-agent pipeline produces a bad result, you have no way to see:

  • Which agent said what to whom
  • Why things went wrong
  • Where the breakdown happened
  • How much it cost

Debugging is impossible. Optimization is guesswork.

✨ The Solution

pip install agentwire
agentwire start

# Wrap your agents (one line each)
researcher = aw.wrap(ResearchAgent(), name="researcher")
writer = aw.wrap(WriterAgent(), name="writer")

# Run your pipeline
with aw.session("blog-post-run"):
    facts = researcher.run("Find quantum computing breakthroughs")
    post = writer.run(facts)

Open http://localhost:7433 → See everything in real-time.


🚀 Features

📊 Real-Time Message Feed

See messages flowing between agents as they happen. Every TASK, RESULT, ERROR, and TOOL_CALL is captured and displayed with full context.

🕸️ Interactive Graph View

Visualize agent topology with D3 force-directed graphs. Node size = message count, edge width = message frequency. Click to filter.

⏮️ Session Replay

Step through past runs message-by-message. Progressive graph rendering shows how your system evolved. Speed control: 0.5× to 10×.

💰 Cost Tracking

Automatic token counting and USD cost calculation for Claude, GPT-4, Gemini, and more. See exactly what each agent costs.

🔌 Framework-Agnostic

Works with LangChain, AutoGen, CrewAI, and raw API calls. One unified view across all frameworks in the same session.

🚀 Zero Infrastructure

SQLite by default. No Docker, no Postgres, no signup required. pip install && agentwire start and you're done.


⚡ Quick Start

Installation

pip install agentwire

Start the Server

agentwire start

This starts:

  • 🌐 REST API at http://localhost:7433/api
  • 🔌 WebSocket at ws://localhost:7433/ws
  • 📊 Dashboard at http://localhost:7433

Wrap Your Agents

import agentwire as aw

# Configure once
aw.configure(bus_url="http://localhost:7433")

# Wrap any agent (works with any class)
researcher = aw.wrap(ResearchAgent(), name="researcher")
writer = aw.wrap(WriterAgent(), name="writer")
reviewer = aw.wrap(ReviewerAgent(), name="reviewer")

# Run with session grouping
with aw.session("blog-post-run-42", name="Blog Post Generation"):
    facts = researcher.run("Find quantum computing breakthroughs")
    draft = writer.run(facts)
    final = reviewer.run(draft)

View in Dashboard

Open http://localhost:7433 to see:

  • 📝 Feed View - Real-time message stream with auto-scroll
  • 🕸️ Graph View - Agent topology with interactive nodes
  • 📊 Stats - Messages, tokens, cost tracking
  • ⏮️ Replay - Step through session with timeline controls

🎨 What Makes It Different

FeatureAgentWireLangSmithLangfusePhoenix
Traces inter-agent messages✅❌❌❌
Framework-agnostic✅❌PartialPartial
Session replay✅❌❌❌
Zero infrastructure✅❌❌❌
Open source✅❌✅✅
Real-time graph✅❌❌Partial

AgentWire focuses on the message bus abstraction - what agents say to each other - not just LLM calls.


📚 Examples

LangChain Research Pipeline

from agentwire.integrations.langchain import AgentWireCallback
import agentwire as aw

aw.configure(bus_url="http://localhost:7433")

with aw.session("research-run"):
    planner = aw.wrap(PlannerAgent(), name="planner")
    researcher = aw.wrap(ResearchAgent(), name="researcher")
    summarizer = aw.wrap(SummarizerAgent(), name="summarizer")
    
    plan = planner.run("Quantum computing breakthroughs 2024")
    findings = researcher.run(plan)
    summary = summarizer.run(findings)

→ See full example

AutoGen Coding Team

from agentwire.integrations.autogen import wire_autogen_agent
import agentwire as aw

with aw.session("coding-session"):
    orchestrator = aw.wrap(OrchestratorAgent(), name="orchestrator")
    coder = aw.wrap(CoderAgent(), name="coder")
    reviewer = aw.wrap(ReviewerAgent(), name="reviewer")
    
    assignment = orchestrator.run("Write Fibonacci function")
    code = coder.run(assignment)
    review = reviewer.run(code)

→ See full example

Raw API Pipeline

import agentwire as aw

with aw.session("data-pipeline"):
    fetcher = aw.wrap(DataFetcher(), name="fetcher")
    processor = aw.wrap(DataProcessor(), name="processor")
    analyzer = aw.wrap(DataAnalyzer(), name="analyzer")
    reporter = aw.wrap(Reporter(), name="reporter")
    
    data = fetcher.run("production-db")
    processed = processor.run(data)
    analysis = analyzer.run(processed)
    report = reporter.run(analysis)

→ See full example


🔧 Integrations

LangChain

from agentwire.integrations.langchain import AgentWireCallback

agent = initialize_agent(
    tools=[...],
    llm=llm,
    callbacks=[AgentWireCallback(agent_name="researcher")]
)

AutoGen

from agentwire.integrations.autogen import wire_autogen_agent

wire_autogen_agent(my_agent, name="assistant", session_id="run-1")

CrewAI

from agentwire.integrations.crewai import wire_crew

my_crew = Crew(agents=[...], tasks=[...])
wire_crew(my_crew, session_id="crew-run")
result = my_crew.kickoff()

🎮 CLI Commands

# Start server
agentwire start                    # Default: port 7433
agentwire start --port 8000        # Custom port
agentwire start --no-dashboard     # API-only mode

# Check status
agentwire status                   # Show server status and stats

# Clear data
agentwire clear                    # Clear all (with confirmation)
agentwire clear --session abc123   # Clear specific session
agentwire clear --force            # Skip confirmation

# Stop server
agentwire stop

# Docker
agentwire docker up                # Start with Docker Compose
agentwire docker down              # Stop containers

📖 Documentation


🏗️ Architecture

┌─────────────────┐
│   Agent Code    │  Your Python code
│   (SDK)         │  aw.wrap(), aw.session()
└────────┬────────┘
         │ emit()
         ↓
┌─────────────────┐
│   REST API      │  FastAPI server
│   POST /api/    │  Store + broadcast
└────────┬────────┘
         │
    ┌────┴────┐
    ↓         ↓
┌────────┐ ┌──────────┐
│ SQLite │ │WebSocket │  Real-time
│  DB    │ │Broadcast │  to clients
└────────┘ └─────┬────┘
                 ↓
         ┌───────────────┐
         │ React         │  Dashboard
         │ Dashboard     │  Feed + Graph
         └───────────────┘

🧪 Testing

# Run all tests (54 passing)
pytest tests/ -v

# Run specific test suite
pytest tests/test_bus.py -v
pytest tests/test_integrations.py -v

# Run with coverage
pytest tests/ --cov=agentwire --cov-report=html

🛠️ Development

Setup

# Clone repository
git clone https://github.com/DanixMP/AgentWire.git
cd agentwire

# Install in development mode
pip install -e .
pip install -r requirements-dev.txt

# Run tests
pytest tests/

# Start dashboard dev server
cd dashboard
npm install
npm run dev

Project Structure

agentwire/
├── agentwire/              # Python package
│   ├── models.py           # Data models
│   ├── store.py            # Database layer
│   ├── bus.py              # FastAPI server
│   ├── emitter.py          # Message emission
│   ├── wrapper.py          # Agent wrapping
│   ├── session.py          # Session management
│   ├── cli.py              # CLI tool
│   └── integrations/       # Framework integrations
├── dashboard/              # React dashboard
│   └── src/
│       ├── components/     # React components
│       ├── hooks/          # Custom hooks
│       └── types.ts        # TypeScript types
├── examples/               # Example scripts
├── tests/                  # Test suite
└── docs/                   # Documentation

🎯 Roadmap

✅ Completed

  • Core message bus and storage
  • Real-time WebSocket broadcasting
  • React dashboard with feed and graph
  • Session replay with timeline
  • CLI tool
  • Framework integrations (LangChain, AutoGen, CrewAI)
  • Examples and documentation

🚧 Planned

  • Postgres support for production
  • Multi-session comparison
  • Export sessions as JSON/CSV
  • Custom message types
  • Webhook notifications
  • Team collaboration features
  • Cloud deployment guides

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

MIT License - see LICENSE file for details.


🙏 Acknowledgments

  • Built with FastAPI, React, and D3.js
  • Inspired by the need for better multi-agent observability
  • Thanks to the LangChain, AutoGen, and CrewAI communities

📞 Support


Made with ❤️ for the multi-agent AI community

⭐ Star us on GitHub • 🐦 Follow on Twitter

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 16

Native requirements
15 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
aiosqlite
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
aiosqlite>=0.19runtime
fastapi
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
fastapi>=0.110runtime
httpx
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
httpx>=0.27runtime
pydantic
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pydantic>=2.0runtime
rich
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
rich>=13runtime
tomli
Environment
{
  "extras": "",
  "marker": "python_version < \"3.11\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
tomli>=2.0; python_version < "3.11"runtime
typer
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
typer>=0.12runtime
uvicorn
Environment
{
  "extras": "standard",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
uvicorn[standard]>=0.27runtime
agentwire
Environment
{
  "extras": "autogen,crewai,langchain,postgres",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
agentwire[autogen,crewai,langchain,postgres]; extra == "all"runtime
pyautogen
Environment
{
  "extras": "",
  "marker": "extra == \"autogen\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pyautogen>=0.2; extra == "autogen"runtime
crewai
Environment
{
  "extras": "",
  "marker": "extra == \"crewai\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
crewai>=0.28; extra == "crewai"runtime
httpx
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
httpx>=0.27; extra == "dev"runtime
pytest-asyncio
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest-asyncio>=0.23; extra == "dev"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest>=8.0; extra == "dev"runtime
langchain
Environment
{
  "extras": "",
  "marker": "extra == \"langchain\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
langchain>=0.2; extra == "langchain"runtime
asyncpg
Environment
{
  "extras": "",
  "marker": "extra == \"postgres\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
asyncpg>=0.29; extra == "postgres"runtime

Distribution files

2 collected
agentwire_mcp-0.1.0-py3-none-any.whl

bdist_wheel · 202.39 KB · Python py3

Source file
agentwire_mcp-0.1.0.tar.gz

sdist · 356.88 KB · Python source

Source file

Repository

PENDING
danixmp/agentwire

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 08:57 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:15d948643cffa6f8dffd4fdf8add4c502e04d1672b251a6245e3ef0d5da3cd23

Other collected versions

View all collected versions →