← Back to list

ms-devui
by pagerguild
Development environment automation with multi-agent workflow orchestration for Claude Code
⭐ 0🍴 0📅 Jan 16, 2026
SKILL.md
name: ms-devui description: | Use when developing and testing Microsoft Agent Framework agents locally. Triggers: "DevUI", "agent testing", "local development", "agent debugging", "test harness". NOT for: Production deployment or AG-UI web interfaces.
Microsoft Agent DevUI
Expert guidance for using DevUI to develop and test agents locally.
What is DevUI?
DevUI is a development interface for testing agents without building a full UI:
- Interactive chat for testing agent responses
- Tool visualization to see tool calls and results
- State inspection for debugging agent state
- Request/response logging for detailed analysis
- Performance profiling built-in
Quick Start
Enable DevUI
from agent_framework import ChatAgent
from agent_framework.devui import DevUI
class MyAgent(ChatAgent):
system_prompt = "You are a helpful assistant."
@ai_function
def search(self, query: str) -> str:
"""Search for information."""
return f"Results for: {query}"
# Start DevUI server
if __name__ == "__main__":
agent = MyAgent()
devui = DevUI(agent)
devui.run(port=8080)
# Visit http://localhost:8080
CLI Mode
# Run agent with DevUI
python -m agent_framework devui my_agent:MyAgent --port 8080
# Or with hot reload
python -m agent_framework devui my_agent:MyAgent --reload
DevUI Features
Chat Interface
┌─────────────────────────────────────────────────────┐
│ Agent: MyAgent [Settings] │
├─────────────────────────────────────────────────────┤
│ │
│ User: What's the weather in Seattle? │
│ │
│ Agent: Let me search for that... │
│ │
│ ┌─ Tool Call ─────────────────────────────────┐ │
│ │ search("weather Seattle") │ │
│ │ Result: "Sunny, 68°F" │ │
│ └──────────────────────────────────────────────┘ │
│ │
│ Agent: The weather in Seattle is sunny and 68°F. │
│ │
├─────────────────────────────────────────────────────┤
│ [Type your message...] [Send] │
└─────────────────────────────────────────────────────┘
State Inspector
View and modify agent state in real-time:
from agent_framework.devui import DevUI, StateInspector
class StatefulAgent(ChatAgent):
def __init__(self):
self.user_preferences = {}
self.conversation_context = {}
# DevUI automatically exposes these for inspection
devui = DevUI(
agent,
inspectors=[
StateInspector("user_preferences"),
StateInspector("conversation_context"),
StateInspector("memory")
]
)
Tool Testing Panel
Test individual tools in isolation:
┌─────────────────────────────────────────────────────┐
│ Tool Tester │
├─────────────────────────────────────────────────────┤
│ Tool: [search ▼] │
│ │
│ Parameters: │
│ ┌──────────────────────────────────────────────┐ │
│ │ query: [weather in Seattle ] │ │
│ │ limit: [10 ] │ │
│ └──────────────────────────────────────────────┘ │
│ │
│ [Execute Tool] │
│ │
│ Result: │
│ ┌──────────────────────────────────────────────┐ │
│ │ { │ │
│ │ "results": [...], │ │
│ │ "count": 5, │ │
│ │ "latency_ms": 234 │ │
│ │ } │ │
│ └──────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
Request/Response Viewer
┌─────────────────────────────────────────────────────┐
│ Request Log [Clear] │
├─────────────────────────────────────────────────────┤
│ ▼ Request #1 (2.3s) │
│ ├─ Input: "What's the weather?" │
│ ├─ Model: gpt-4o │
│ ├─ Tokens: 150 prompt, 45 completion │
│ ├─ Tool Calls: │
│ │ └─ search("weather") → "Sunny, 68°F" │
│ └─ Output: "The weather is sunny and 68°F." │
│ │
│ ▶ Request #2 (1.1s) │
│ ▶ Request #3 (0.8s) │
└─────────────────────────────────────────────────────┘
Configuration
DevUI Options
from agent_framework.devui import DevUI, DevUIConfig
config = DevUIConfig(
# Server settings
host="0.0.0.0",
port=8080,
# Features
enable_tool_tester=True,
enable_state_inspector=True,
enable_request_log=True,
enable_profiler=True,
# Security (for shared environments)
require_auth=False,
auth_token="dev-token-123",
# Development
hot_reload=True,
reload_dirs=["./agents", "./tools"],
# Logging
log_level="DEBUG",
log_requests=True,
log_responses=True
)
devui = DevUI(agent, config=config)
Multi-Agent DevUI
from agent_framework.devui import MultiAgentDevUI
# Test multiple agents in one interface
devui = MultiAgentDevUI([
("Researcher", ResearchAgent()),
("Writer", WriterAgent()),
("Reviewer", ReviewerAgent())
])
devui.run(port=8080)
Workflow DevUI
from agent_framework.devui import WorkflowDevUI
from agent_framework.workflows import SequentialBuilder
workflow = (
SequentialBuilder()
.add_agent(agent1)
.add_agent(agent2)
.add_agent(agent3)
.build()
)
# Visualize workflow execution
devui = WorkflowDevUI(workflow)
devui.run(port=8080)
Testing Patterns
Manual Testing
# Interactive testing with DevUI
devui = DevUI(agent)
devui.run(port=8080)
# Open browser to http://localhost:8080
# - Test various inputs
# - Inspect tool calls
# - Check state changes
Automated Test Scenarios
from agent_framework.devui import TestScenario, run_scenarios
scenarios = [
TestScenario(
name="Basic greeting",
input="Hello!",
expected_contains=["hello", "hi", "greetings"]
),
TestScenario(
name="Weather query",
input="What's the weather?",
expected_tool_calls=["search"],
expected_contains=["weather", "temperature"]
),
TestScenario(
name="Error handling",
input="Do something impossible",
expected_error=False
)
]
# Run scenarios and generate report
results = run_scenarios(agent, scenarios)
print(results.summary())
Load Testing
from agent_framework.devui import load_test
results = await load_test(
agent,
requests=[
"What's the weather?",
"Tell me a joke",
"Search for Python tutorials"
],
concurrency=10,
duration=60 # seconds
)
print(f"Requests/sec: {results.requests_per_second}")
print(f"P50 latency: {results.p50_latency}ms")
print(f"P99 latency: {results.p99_latency}ms")
print(f"Error rate: {results.error_rate}%")
Debugging Tools
Breakpoints
from agent_framework.devui import breakpoint
class DebugAgent(ChatAgent):
@ai_function
async def complex_operation(self, data: str) -> str:
"""Operation with debug breakpoint."""
processed = self.preprocess(data)
# Pause execution and inspect in DevUI
await breakpoint(
message="After preprocessing",
locals={"processed": processed}
)
result = await self.analyze(processed)
return result
Step-Through Execution
from agent_framework.devui import DevUI
devui = DevUI(
agent,
step_mode=True # Pause after each tool call
)
Memory Inspection
from agent_framework.devui import MemoryInspector
devui = DevUI(
agent,
inspectors=[
MemoryInspector(
show_conversation=True,
show_vector_memory=True,
show_summary=True
)
]
)
Integration with IDEs
VS Code Extension
// .vscode/launch.json
{
"configurations": [
{
"name": "Debug Agent with DevUI",
"type": "python",
"request": "launch",
"module": "agent_framework",
"args": ["devui", "my_agent:MyAgent", "--port", "8080"],
"env": {
"AGENT_DEBUG": "true"
}
}
]
}
PyCharm Configuration
Run Configuration:
- Script: -m agent_framework
- Parameters: devui my_agent:MyAgent --port 8080 --reload
- Working directory: $ProjectDir$
Best Practices
1. Use Hot Reload During Development
# Auto-reload on code changes
python -m agent_framework devui my_agent:MyAgent --reload
# Or in code
devui = DevUI(agent, hot_reload=True)
2. Test Edge Cases
# Test with various inputs
test_cases = [
"", # Empty input
"a" * 10000, # Very long input
"🎉" * 100, # Unicode/emoji
"<script>alert(1)</script>", # Injection attempts
None, # Null handling
]
3. Profile Before Production
from agent_framework.devui import DevUI, Profiler
devui = DevUI(
agent,
profiler=Profiler(
track_memory=True,
track_cpu=True,
track_tokens=True
)
)
Related
ms-agent-typesskill - Agent implementationms-ag-uiskill - Production web interfacesms-observabilityskill - Telemetry integration- DevUI Docs
Score
Total Score
50/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon