{"id":750,"date":"2025-11-29T07:09:23","date_gmt":"2025-11-29T07:09:23","guid":{"rendered":"https:\/\/greyhatlabs.io\/?p=750"},"modified":"2025-11-29T07:09:23","modified_gmt":"2025-11-29T07:09:23","slug":"orchestrator-online-our-mvp-demo-flows-are-live","status":"publish","type":"post","link":"https:\/\/greyhatlabs.io\/index.php\/2025\/11\/29\/orchestrator-online-our-mvp-demo-flows-are-live\/","title":{"rendered":"Orchestrator Online: Our MVP Demo Flows Are Live"},"content":{"rendered":"<p>Sprint 5 was a big one for us. We didn\u2019t just wire up a few endpoints \u2014 we turned on the entire core of the platform and made it demoable end-to-end.<\/p>\n<p>We now have a live MVP experience that runs real signals through the system, with a small UI on top so anyone can see what\u2019s happening without reading a line of code.<\/p>\n<p>\u2e3b<\/p>\n<p>Three Flows, One Pipeline<\/p>\n<p>The new Platform Demo Flows page drives everything through the orchestrator and the real services behind it:<br \/>\n\t1.\tTransaction Normalization<br \/>\n\t\u2022\tYou enter a transaction ID and amount.<br \/>\n\t\u2022\tThe orchestrator calls our schema engine (ASLF) to normalize the event.<br \/>\n\t\u2022\tThe normalized data is ingested into KGF, then evaluated by RLIE.<br \/>\n\t2.\tAccess Policy Evaluation<br \/>\n\t\u2022\tYou provide a user and resource (for example, alice \/ doc-1).<br \/>\n\t\u2022\tASLF normalizes the access event.<br \/>\n\t\u2022\tRLIE evaluates it against current signals and returns a decision-style result.<br \/>\n\t3.\tFreeform Text<br \/>\n\t\u2022\tYou send in arbitrary text (e.g., \u201chello world\u201d).<br \/>\n\t\u2022\tThe platform runs it through the same ASLF \u2192 KGF \u2192 RLIE path, exercising the text side of the pipeline.<\/p>\n<p>All of this is orchestrated via the job worker and queues \u2014 the same path we\u2019ll use for real workloads, not a separate \u201cdemo only\u201d system.<\/p>\n<p>\u2e3b<\/p>\n<p>Live Platform Stats, Not Just Pretty JSON<\/p>\n<p>On the right side of the demo page there\u2019s a Live Platform Stats panel driven by RLIE\u2019s adaptive learning state.<\/p>\n<p>When you click Refresh stats, the UI calls a small debug endpoint in RLIE via the orchestrator, and shows:<br \/>\n\t\u2022\tTotal RLIE ingests (how many events the model has seen)<br \/>\n\t\u2022\tTop source services<br \/>\n\t\u2022\tTop task names<br \/>\n\t\u2022\tLast updated timestamp<\/p>\n<p>As you run more flows, these numbers change. It\u2019s a simple way to show that the platform isn\u2019t just responding to requests \u2014 it\u2019s accumulating experience over time.<\/p>\n<p>\u2e3b<\/p>\n<p>Under the Hood: Real Services, Real Signals<\/p>\n<p>A few important details:<br \/>\n\t\u2022\tReal ASLF normalization<br \/>\n\t\u2022\tThe orchestrator calls the actual \/schemas\/normalize endpoint in the schema engine, authenticated with an API key.<br \/>\n\t\u2022\tReal KGF ingestion<br \/>\n\t\u2022\tNormalized events are ingested into KGF, which returns real ingest\/result IDs.<br \/>\n\t\u2022\tReal RLIE evaluation<br \/>\n\t\u2022\tRLIE consumes those ingests, updates its adaptive stats, and returns genuine evaluation output (not hard-coded responses).<\/p>\n<p>The same flows used in the demo are backed by the same code paths we\u2019ll use for production workloads.<\/p>\n<p>\u2e3b<\/p>\n<p>Observability and Load Testing<\/p>\n<p>To make this usable for engineers (and future SREs), we also tightened up observability:<br \/>\n\t\u2022\tStructured JSON logs from the orchestrator, worker, and job queue<br \/>\n\t\u2022\tInclude component, event name, flowId, jobId, durationMs, backend, mode, and error details.<br \/>\n\t\u2022\tLightweight load test harness<br \/>\n\t\u2022\tA small script can fire concurrent demo jobs through the orchestrator.<br \/>\n\t\u2022\tEarly runs (20 jobs, concurrency 5) successfully exercised the full stack with good latency and no backlog.<\/p>\n<p>This gives us a quick way to validate changes and spot regressions as we keep evolving the platform.<\/p>\n<p>\u2e3b<\/p>\n<p>Why This Matters<\/p>\n<p>With Sprint 5 complete, we now have:<br \/>\n\t\u2022\tA real pipeline from ASLF \u2192 KGF \u2192 RLIE<br \/>\n\t\u2022\tA job-based orchestrator coordinating multi-step flows<br \/>\n\t\u2022\tA simple demo UI anyone can use to see it in action<br \/>\n\t\u2022\tLive stats that show the platform learning over time<br \/>\n\t\u2022\tTests and tooling to prove it all works under load<\/p>\n<p>In other words: the core of the platform is not just \u201cbuilt\u201d \u2014 it\u2019s running, observable, and demo-ready.<\/p>\n<p>Next up, we\u2019ll be focusing on packaging, deployment, and integration hardening as we move from MVP prototype toward something investors and partners can poke at directly.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sprint 5 was a big one for us. We didn\u2019t just wire up a few endpoints \u2014 we turned on the entire core of the platform and made it demoable end-to-end. We now have a live MVP experience that runs real signals through the system, with a small UI on top so anyone can see [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":754,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-750","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/greyhatlabs.io\/index.php\/wp-json\/wp\/v2\/posts\/750","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/greyhatlabs.io\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/greyhatlabs.io\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/greyhatlabs.io\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/greyhatlabs.io\/index.php\/wp-json\/wp\/v2\/comments?post=750"}],"version-history":[{"count":1,"href":"https:\/\/greyhatlabs.io\/index.php\/wp-json\/wp\/v2\/posts\/750\/revisions"}],"predecessor-version":[{"id":751,"href":"https:\/\/greyhatlabs.io\/index.php\/wp-json\/wp\/v2\/posts\/750\/revisions\/751"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/greyhatlabs.io\/index.php\/wp-json\/wp\/v2\/media\/754"}],"wp:attachment":[{"href":"https:\/\/greyhatlabs.io\/index.php\/wp-json\/wp\/v2\/media?parent=750"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/greyhatlabs.io\/index.php\/wp-json\/wp\/v2\/categories?post=750"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/greyhatlabs.io\/index.php\/wp-json\/wp\/v2\/tags?post=750"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}