semos-agentura-ui¶
Panel-based chat client for the Semos Agentura agents. Multi-session, multi-model chat with a virtual filesystem browser in the sidebar. Built on panelini.
Run¶
Opens on http://localhost:5006 (override with UI_PORT). To start the UI together with the email
and document agents, use uv run python run_local.py from the repo root instead.
What it does¶
- Connects to each agent over MCP (tool calling) and A2A (task delegation)
- Hosts the filesystem agent in-process, so the chat and the file tree share one VFS instance and
session://files resolve in both - Runs the shared
LLMExecutorloop instead of panelini's built-in tool loop, so tool calling behaves the same in the UI as it does agent-to-agent - Renders tool results: file links, images, and structured data
Configuration¶
LLM providers are configured in config.yml. Copy the template and edit:
config.example.yml is used automatically if no config.yml exists, so the UI starts without setup.
${VAR} placeholders are resolved from the environment at runtime, and client_type may be
anthropic, openai, or litellm:
providers:
azure_anthropic:
display_name: "Azure AI Foundry (Claude)"
client_type: "anthropic"
env_vars:
api_key: "${AZURE_API_KEY}"
endpoint: "${AZURE_API_BASE}"
models:
- name: "Claude Sonnet 4"
value: "anthropic/claude-sonnet-4-6"
Agent URLs come from SEMOS_AGENTURA_<AGENT>_URL (see the
root README). Additional agents
can be added with EXTRA_AGENTS="name:port,name:port".
Layout¶
src/semos/agentura/ui/
__main__.py Panel app, provider wiring, VFS tree, executor callback
mcp_hub.py MCP connections to the agents
mcp_tools.py LangChain tool wrappers for MCP tools
a2a_client.py A2A discovery and task sending
a2a_tools.py Delegate tools (ask_*_agent) and per-tool A2A wrappers
file_registry.py Session file registry for the middleware
renderers.py Resolves file references in chat output
License¶
Apache-2.0