Admin UI + OpenRPC + Full Management Interface #2

Closed
opened 2026-02-10 12:03:41 +00:00 by despiegk · 0 comments
Owner

Admin UI + OpenRPC + Full Management Interface

Branch: development (merged to main)
Deleted branch: main_billing_audio (fully merged into development)

What was done

Admin UI (accessible at GET /)

  • Two-column sidebar layout: stats sidebar (25%) + tabbed main content (75%)
  • Sidebar: live server status, request stats, provider list, MCP status (auto-refreshes every 10s)
  • Chat tab: test the broker from the browser with streaming responses, custom model autocomplete dropdown,
    temperature/max tokens/system prompt controls, multi-turn conversation
  • Models tab: full CRUD editor — add, edit, delete models with a modal form, manage backends per model, save config to
    disk (YAML)
  • MCP tab: view connected MCP servers, aggregated tools list, refresh tools
  • API Keys tab: create and disable API keys (SQLite-backed)
  • Metrics tab: per-IP request/error counts
  • Logs tab: real-time operation logs with 2s polling, filter by operation/status/model, dynamic log level control
  • API Docs tab: accordion-style interactive docs for all 24 JSON-RPC methods
  • SVG favicon (inline data URI, no extra file serving)

Backend / JSON-RPC 2.0 (POST /rpc)

  • 24 RPC methods across 6 groups:
    • Server: info, health, config.get
    • Models: models.list, models.config, models.get, models.add, models.update, models.delete, models.save
    • MCP: mcp.list_servers, mcp.list_tools, mcp.refresh, mcp.health
    • API Keys: apikeys.list, apikeys.create, apikeys.disable
    • Metrics: metrics.get, metrics.detailed
    • Logs: logs.get, logs.clear, logs.stream, logs.set_level, logs.get_level
  • OpenRPC spec served at GET /openrpc.json
  • Operation logging for chat, embedding, TTS, STT requests (in-memory circular buffer, 500 entries)
  • Dynamic tracing log level via reload::Layer

Infrastructure

  • Build system: buildenv.sh, scripts/build_lib.sh, updated Makefile
  • Forgejo CI workflows (Linux + macOS builds)
  • Default port: 3751
  • parking_lot::Mutex for SQLite connection (Send+Sync compatible)
Admin UI + OpenRPC + Full Management Interface Branch: development (merged to main) Deleted branch: main_billing_audio (fully merged into development) What was done Admin UI (accessible at GET /) - Two-column sidebar layout: stats sidebar (25%) + tabbed main content (75%) - Sidebar: live server status, request stats, provider list, MCP status (auto-refreshes every 10s) - Chat tab: test the broker from the browser with streaming responses, custom model autocomplete dropdown, temperature/max tokens/system prompt controls, multi-turn conversation - Models tab: full CRUD editor — add, edit, delete models with a modal form, manage backends per model, save config to disk (YAML) - MCP tab: view connected MCP servers, aggregated tools list, refresh tools - API Keys tab: create and disable API keys (SQLite-backed) - Metrics tab: per-IP request/error counts - Logs tab: real-time operation logs with 2s polling, filter by operation/status/model, dynamic log level control - API Docs tab: accordion-style interactive docs for all 24 JSON-RPC methods - SVG favicon (inline data URI, no extra file serving) Backend / JSON-RPC 2.0 (POST /rpc) - 24 RPC methods across 6 groups: - Server: info, health, config.get - Models: models.list, models.config, models.get, models.add, models.update, models.delete, models.save - MCP: mcp.list_servers, mcp.list_tools, mcp.refresh, mcp.health - API Keys: apikeys.list, apikeys.create, apikeys.disable - Metrics: metrics.get, metrics.detailed - Logs: logs.get, logs.clear, logs.stream, logs.set_level, logs.get_level - OpenRPC spec served at GET /openrpc.json - Operation logging for chat, embedding, TTS, STT requests (in-memory circular buffer, 500 entries) - Dynamic tracing log level via reload::Layer Infrastructure - Build system: buildenv.sh, scripts/build_lib.sh, updated Makefile - Forgejo CI workflows (Linux + macOS builds) - Default port: 3751 - parking_lot::Mutex for SQLite connection (Send+Sync compatible)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_aibroker#2
No description provided.