Skip to main content

Control Plane Overview

muonroi-control-plane is the private operator service for managed rule delivery, providing RESTful APIs, MCP tools, SignalR real-time updates, and a React dashboard for ruleset lifecycle management.

Architecture

Control Plane consists of three layers:

  1. Backend API — ASP.NET 8 Minimal API hosting 40+ endpoints across 12 route groups
  2. MCP Server — 31 tools for external integrations and CI/CD pipelines
  3. React Dashboard — 13 pages for operator workflows (ruleset editor, canary rollouts, audit trails, tenant management)

All changes broadcast via SignalR to connected clients for real-time synchronization.

Base Routes

REST endpoints live under /api/v1/control-plane and /api/v1/rule-catalog.

Public bootstrap endpoint:

  • GET /api/v1/info — Returns control-plane runtime metadata (version, activationProof for UI license bootstrap)

31 MCP Tools by Category

Ruleset Management (7 tools)

ToolPurposeAuth
muonroi_ruleset_listList all workflows with versions and statusesBearer JWT or API Key
muonroi_ruleset_get_versionsGet version history for a workflowBearer JWT or API Key
muonroi_ruleset_saveSave new ruleset version (validate + auto-increment)Bearer JWT or API Key
muonroi_ruleset_validateValidate ruleset JSON without savingBearer JWT or API Key
muonroi_ruleset_dry_runExecute ruleset with test inputs, return tracesBearer JWT or API Key
muonroi_ruleset_exportExport ruleset JSON (active or specific version)Bearer JWT or API Key
muonroi_ruleset_activateActivate a specific version globallyBearer JWT or API Key

Approval Workflow (4 tools)

ToolPurposeRole
muonroi_approval_submitSubmit version for approval (draft → pending)Admin
muonroi_approval_approveApprove pending version (maker ≠ checker)Approver
muonroi_approval_rejectReject version with reasonApprover
muonroi_ruleset_pending_approvalsList all pending approvals across workflowsApprover/Admin

Canary Rollouts (4 tools)

ToolPurposeUse Case
muonroi_canary_startStart canary for selected tenants or %Staged rollout
muonroi_canary_listList active canaries (filter by workflow)Monitor rollouts
muonroi_canary_promotePromote canary to full rolloutGo live after validation
muonroi_canary_rollbackRollback with reason and revert affected tenantsEmergency recovery

Decision Tables (6 tools)

ToolPurposeUse Case
muonroi_decision_table_listList all decision tablesBrowse catalog
muonroi_decision_table_getGet current decision table definitionView table
muonroi_decision_table_get_versionGet specific version (v1, v2, etc.)Version history
muonroi_decision_table_get_versionsPaginated version list (50 per page default)Compare versions
muonroi_decision_table_diff_versionsCompare two versions (v1 → v2)Audit changes
muonroi_decision_table_evaluateTest decision table with input factsDry-run logic

Tenant Management (5 tools)

ToolPurposeAuth
muonroi_tenant_listList all managed tenantsBearer JWT or API Key
muonroi_tenant_get_rulesetsGet workflow assignments for tenantBearer JWT or API Key
muonroi_tenant_get_quotaGet tenant quota overridesBearer JWT or API Key
muonroi_tenant_set_quotaUpsert tenant quota (max requests/day, workflows, rules)Bearer JWT or API Key
muonroi_tenant_assign_rulesetAssign workflow version to tenantBearer JWT or API Key

Tenant Isolation (1 tool)

ToolPurposeRequires
muonroi_tenant_request_isolation_modeRequest data isolation mode (SharedDb → SeparateSchema → DbPerTenant)Admin approval

Audit (3 tools)

ToolPurposeAccess
muonroi_audit_get_allGet all audit entries (paginated)Bearer JWT or API Key
muonroi_audit_get_workflowFilter audit by workflow nameBearer JWT or API Key
muonroi_audit_get_tenantFilter audit by tenant IDBearer JWT or API Key

Connectors (4 tools)

ToolPurposeUse Case
muonroi_connector_catalogList available connector types (HTTP, gRPC, message-bus, etc.)Browse options
muonroi_connector_listList configured connectorsManage integrations
muonroi_connector_getGet connector config by IDView details
muonroi_connector_testTest connector connectivityValidate setup

Proliferation Engine (5 tools)

ToolPurposePhase
muonroi_proliferation_triggerTrigger scenario generation for workflowAnalysis
muonroi_proliferation_scenariosList generated scenarios with focus areasReview
muonroi_proliferation_resultGet detailed result for scenario executionResults
muonroi_proliferation_statsGet proliferation stats (coverage, regression)Metrics
muonroi_proliferation_lineageGet rule lineage and impact graphDependencies

FEEL Expression (1 tool)

ToolPurposeEditor
muonroi_feel_autocompleteFEEL autocomplete (suggest variables, functions at cursor)IDE-style suggestions

13 Dashboard Pages

PageRoutePurpose
Rules List/rulesBrowse workflows, search, filter by status (draft/pending/active)
Rule Editor/rules/{workflow}/{version}Edit ruleset JSON, syntax highlight, validate on save
Decision Tables/decision-tablesList all decision tables with versions
Table Editor/decision-tables/{tableId}Edit hit policy, conditions, outputs; undo/redo (50 actions)
Canary Dashboard/canaryMonitor active canaries, view timeline and tenant distribution
Canary Details/canary/{rolloutId}Drill into metrics, rollback or promote
Approval Queue/approvalsList pending approvals, approve/reject with reason
Audit Trail/auditView all changes across workflows, filter by date/user/action
Audit (Workflow)/audit?workflow={name}Filter audit to specific workflow
Audit (Tenant)/audit?tenantId={id}Filter audit to specific tenant
Tenant Management/tenantsList tenants, view quota, assign rulesets
Tenant Details/tenants/{tenantId}Set quota limits, request isolation mode, view audit
Rule Catalog/rule-catalogBrowse available rule types, search by category

Key Features

Make-Checker Approval Workflow

Enforce separation of duties:

  1. Admin submits version for approval (draft → pending)
  2. Approver (different person) approves or rejects
  3. On approval, version becomes available for canary or full activation

See Ruleset Approval Workflow.

Canary Rollouts

Stage deployments with confidence:

  1. Start canary for 10% of tenants or specific tenant IDs
  2. Monitor performance and error rates
  3. Promote to full rollout or rollback with reason

See Canary Rollout Guide.

Hot-Reload via SignalR

Real-time synchronization across all connected clients:

  • /hubs/ruleset-changes — Workflow modifications, activations, canary events
  • /hubs/auth-rule-changes — Authorization rule updates

See SignalR Hot-Reload.

Tenant-Aware Versioning

Each tenant can run different versions simultaneously:

  • Assign workflow version to tenant via tenant_assign_ruleset
  • Canary targets specific tenants for gradual rollout
  • Quota enforcement per tenant (max requests/day, concurrent rules, workflows)

Audit Trail

Full immutable log of all changes:

  • Who made the change (actor, IP, timestamp)
  • What changed (workflow, version, field diffs)
  • Why (commit message or reason for approval/rejection)
  • Where (source: API, dashboard, MCP tool)

API Examples

List All Workflows

curl -X GET https://cp.truyentm.xyz/api/v1/control-plane/rulesets \
-H "Authorization: Bearer $TOKEN"

Response:

[
{
"workflowName": "claim-approval",
"activeVersion": 5,
"versions": [
{ "version": 5, "status": "active", "createdAt": "2026-03-20T10:00:00Z" },
{ "version": 4, "status": "approved", "createdAt": "2026-03-19T14:30:00Z" }
]
}
]

Save and Auto-Activate Ruleset

curl -X POST https://cp.truyentm.xyz/api/v1/control-plane/rulesets/claim-approval \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"rules": [
{
"id": "rule-1",
"condition": "input.amount > 1000",
"output": { "requiresReview": true }
}
],
"activateAfterSave": true,
"detail": "Add high-value claim threshold"
}'

Dry-Run with Test Input

curl -X POST https://cp.truyentm.xyz/api/v1/control-plane/rulesets/claim-approval/dry-run \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"inputs": {
"amount": 5000,
"claimType": "medical"
}
}'

Response includes execution trace, condition evaluations, and output values.

Start Canary Rollout

curl -X POST https://cp.truyentm.xyz/api/v1/control-plane/rulesets/claim-approval/canary \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"version": 5,
"targetPercentage": 10,
"actor": "[email protected]"
}'

Submit for Approval

curl -X POST https://cp.truyentm.xyz/api/v1/control-plane/rulesets/claim-approval/5/submit \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "actor": "[email protected]" }'

Get Tenant Quota

curl -X GET https://cp.truyentm.xyz/api/v1/control-plane/tenants/tenant-123/quota \
-H "Authorization: Bearer $TOKEN"

Response:

{
"tenantId": "tenant-123",
"maxRequestsPerDay": 100000,
"maxWorkflows": 50,
"maxConcurrentRules": 1000
}

Assign Workflow Version to Tenant

curl -X POST https://cp.truyentm.xyz/api/v1/control-plane/tenants/tenant-456/rulesets \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"workflowName": "claim-approval",
"version": 4
}'

MCP Tool Integration

Use MCP tools for CI/CD pipelines, external orchestration, or integrations:

# List all workflows
curl -X POST https://cp.truyentm.xyz/sse/tools/muonroi_ruleset_list \
-H "Content-Type: application/json" \
-d '{"$schema": "mcp://muonroi/ruleset_list"}'

# Dry-run a ruleset
curl -X POST https://cp.truyentm.xyz/sse/tools/muonroi_ruleset_dry_run \
-H "Content-Type: application/json" \
-d '{
"workflowName": "claim-approval",
"inputs": { "amount": 5000, "claimType": "medical" }
}'

# Approve a pending version
curl -X POST https://cp.truyentm.xyz/sse/tools/muonroi_approval_approve \
-H "Content-Type: application/json" \
-d '{
"workflowName": "claim-approval",
"version": 5,
"actor": "[email protected]"
}'

# Get audit trail for workflow
curl -X POST https://cp.truyentm.xyz/sse/tools/muonroi_audit_get_workflow \
-H "Content-Type: application/json" \
-d '{
"workflowName": "claim-approval",
"pageSize": 20
}'


Deployment

Control Plane is deployed at https://cp.truyentm.xyz:

  • Backend API: Port 8080 (internal)
  • PostgreSQL: muonroi_rules database
  • Redis: Hot-reload cache (optional)
  • SignalR: WebSocket at /hubs/*

See CLAUDE.md for VPS details.