Observed since 21 Oct, 08:55 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Real-time 3D visualization for multi-agent AI systems
Real-time 3D visualization for multi-agent AI systems. Drop one decorator on your agent functions and watch them appear as robots in a live 3D scene — calls, responses, token streams, errors, and latency all rendered as they happen.
pip install agentviz
agentviz serve
agentviz serve — starts a local FastAPI server + opens the 3D UI in your browser@agentviz.traceThe server can be self-hosted anywhere (Linode, Railway, Docker). Multiple agents on different machines can all connect to the same room.
import agentviz
agentviz.init(server="http://localhost:8000")
@agentviz.trace
async def fetch_data(query: str) -> str:
return await db.query(query)
@agentviz.trace(name="Planner", to="orchestrator", color="#9B59B6")
async def plan(goal: str) -> str:
return await llm.plan(goal)
That's it. Run your agents — they show up in the UI automatically.
export AGENTVIZ_SERVER=http://localhost:8000
export AGENTVIZ_PROJECT=my-team
Then just use @agentviz.trace with no init() call.
from agentviz import AgentVizClient
async with AgentVizClient(
server="ws://localhost:8000/agent-ws",
name="DataFetcher",
color="#E74C3C",
) as client:
call_id = await client.emit_call(to="orchestrator", message="Fetching records…")
result = await do_work()
await client.emit_response(to="orchestrator", call_id=call_id, result=result)
from agentviz import HttpAgentVizClient
client = HttpAgentVizClient(server="https://my-agentviz.railway.app", name="Lambda")
call_id = client.emit_call(to="orchestrator", message="Processing event…")
result = process(event)
client.emit_response(to="orchestrator", call_id=call_id, result=result)
async for chunk in llm.stream(prompt):
await client.emit_token(chunk.delta)
await client.emit_stream_end()
Tokens accumulate in a speech bubble above the robot in real-time.
@agentviz.trace — works on any async or sync function, no boilerplatecontextvars)semicircle, pipeline, star, mesh, grid — switch live from the UI?room=project-name separates teams on the same serverfrom agentviz.integrations.langchain import AgentVizCallbackHandler
from agentviz import HttpAgentVizClient
client = HttpAgentVizClient(server="http://localhost:8000", name="LangChainAgent")
handler = AgentVizCallbackHandler(client)
chain.invoke({"input": "..."}, config={"callbacks": [handler]})
from agentviz.integrations.langgraph import get_langgraph_callbacks
callbacks = get_langgraph_callbacks(client)
graph.invoke(state, config={"callbacks": callbacks})
from agentviz.integrations.openai_agents import patch_openai_agents
import agentviz
agentviz.init(server="http://localhost:8000")
patch_openai_agents() # patches globally — all agents auto-traced from here
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from agentviz.integrations.otel import AgentVizSpanExporter
provider = TracerProvider()
provider.add_span_processor(BatchSpanProcessor(AgentVizSpanExporter()))
Every OTEL span becomes a call/response/error event in the 3D scene automatically.
Add to your MCP host config:
{
"mcpServers": {
"agentviz": {
"command": "python",
"args": ["-m", "agentviz.mcp_server"],
"env": {
"AGENTVIZ_SERVER": "http://localhost:8000"
}
}
}
}
Then use agentviz_emit_call, agentviz_emit_response, agentviz_emit_token etc. as tools from within Claude.
docker build -t agentviz .
docker run -p 8000:8000 agentviz
docker-compose up
Push the repo and set the start command to:
agentviz serve --host 0.0.0.0 --port $PORT --no-browser
agentviz serve # start server, open browser
agentviz serve --port 9000 # custom port
agentviz serve --no-browser # headless (for servers)
agentviz serve --demo # also start demo agents
agentviz --version
Or:
python -m agentviz serve
Each URL ?room=<name> gets its own isolated scene, agent registry, and session history. Share a single deployed server across multiple teams:
https://agentviz.mycompany.com/?room=search-team
https://agentviz.mycompany.com/?room=billing-team
MIT
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.3.0 | 12 Apr 2026 | 9 |
This describes our collected data; it is not a security assessment.
Observed since 21 Oct, 08:55 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:5928123e88c7b00710241a51215ff8fa6f8e12c2d63426a9d4b8dcddee996aa4