Skip to content

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

uv sync --all-packages          # from the workspace root
python -m semos.agentura.ui

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 LLMExecutor loop 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:

cp config.example.yml config.yml

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