Skip to Content
DocsRuntime & DeploymentRuntime Dashboard

Runtime Dashboard

The Runtime Dashboard is the tester UI that ships with Runtime 0.9.7.0. Use it to ping the endpoint, pick a campaign, call POST /invocations, accept an offer with POST /response, and open the MCP, ontology, and campaign-test surfaces without writing cURL.

Runtime Dashboard — campaigns, invoke, and ranked offers

Hosted demo: https://medemo.ecosystem.ai . Point the dashboard Runtime URL at a running Java runtime (default scoring port 8091; local run_local.sh often uses 8099). The separate Vite app in ecosystem-runtime/frontend serves the same UI on :3000 during development and proxies API calls to the runtime.

What it is for

SurfaceWhat you do
System HealthPing the runtime; refresh campaign configs
CampaignsSelect an active campaign (predictor name)
Test InvocationBuild a closed-loop request and Invoke
ResultsRanked final_result rows; Accept writes /response
MCPJSON-RPC POST /mcp, Ontology Explorer, prompts
TestingProperties-driven Cucumber / BDD campaign tests
ConfigRuntime URL and dashboard settings

This is an operator / developer console. Production traffic should still call /invocations and /response from your channel (app, web, call center) with params as a JSON string.

Debug explanations

Turn Debug on (Workbench Test defaults it on) so /invocations returns debug.explanations: short operator-facing titles, what happened, and what to do. The dashboard Results panel and Workbench Debug analysis tab both render that list. Typical codes include MONGO_LOOKUP_NULL, EMPTY_OFFERS_CONTEXT, CONTEXT_DEFAULTED (API omitted both contextual variables, so scoring used the first options-store cell), and SCORED_OFFERS.

Closed loop from the UI

  1. Choose a campaign, customer, channel, and number of offers.
  2. Invoke sends POST /invocations. The request preview at the bottom of the form is the payload your app should send.
  3. Ranked offers appear with score, price, and arm reward.
  4. Accept on a row sends POST /response with that row’s uuid and offer_name. That is the learning feedback — never /responses.
{ "campaign": "online_recommender_twotower", "subcampaign": "online_recommender_twotower", "customer": "none", "channel": "app", "numberoffers": "2", "userid": "ecosystem", "params": "{}" }

params must stay a string ("{}" or a JSON-encoded object). Nested JSON objects in params are rejected.

Last updated on