44 < meta charset ="UTF-8 ">
55 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
66 < title > SoloFlow — Open Source AI Workflow Orchestration Engine</ title >
7- < meta name ="description " content ="SoloFlow is an open-source AI workflow orchestration engine with cognitive memory, discipline-aware routing, and DAG+FSM hybrid architecture. Lightweight (~0.27MB dist), 15 MCP tools, minimal runtime deps (jose, yaml, better-sqlite3) . ">
7+ < meta name ="description " content ="SoloFlow is an open-source AI workflow orchestration engine with cognitive memory, discipline-aware routing, and DAG+FSM hybrid architecture. Lightweight, zero runtime dependencies, pure Python . ">
88 < meta name ="robots " content ="index, follow ">
99 < link rel ="canonical " href ="https://soloflow.pmparker.net/ ">
1010
1111 <!-- Open Graph / Social Sharing -->
1212 < meta property ="og:type " content ="website ">
1313 < meta property ="og:title " content ="SoloFlow — Open Source AI Workflow Orchestration Engine ">
14- < meta property ="og:description " content ="Open-source AI workflow orchestration with cognitive memory, discipline-aware routing, and DAG+FSM hybrid. 15 MCP tools, ~469KB bundle, cognitive memory, OpenClaw plugin . ">
14+ < meta property ="og:description " content ="Open-source AI workflow orchestration with cognitive memory, discipline-aware routing, and DAG+FSM hybrid. Zero dependencies, pure Python . ">
1515 < meta property ="og:url " content ="https://soloflow.pmparker.net/ ">
1616 < meta property ="og:site_name " content ="SoloFlow ">
1717 < meta property ="og:locale " content ="en_US ">
5858 "url" : "https://github.com/SonicBotMan"
5959 } ,
6060 "codeRepository" : "https://github.com/SonicBotMan/SoloFlow" ,
61- "programmingLanguage" : "TypeScript " ,
62- "keywords" : "AI workflow, orchestration, cognitive memory, LangChain alternative, open source, MCP tools, DAG, FSM "
61+ "programmingLanguage" : "Python " ,
62+ "keywords" : "AI workflow, orchestration, cognitive memory, DAG, FSM, Hermes, Python "
6363 }
6464 </ script >
6565</ head >
@@ -224,8 +224,8 @@ <h1 class="hero-title reveal" id="hero-title" data-i18n="hero.title">
224224 </ div >
225225 < div class ="stat-divider "> </ div >
226226 < div class ="stat ">
227- < span class ="stat-value " data-target ="0 "> 0</ span >
228- < span class ="stat-label " data-i18n ="hero.stats.deps "> Open Source </ span >
227+ < span class ="stat-value " data-target ="130 "> 0</ span >
228+ < span class ="stat-label " data-i18n ="hero.stats.deps "> GitHub Stars </ span >
229229 </ div >
230230 </ div >
231231 </ div >
@@ -463,7 +463,7 @@ <h3 data-i18n="features.architecture.title">DAG + FSM Hybrid Architecture</h3>
463463 < text x ="220 " y ="65 " text-anchor ="middle " fill ="#FBBF24 " font-size ="10 " font-family ="var(--font-mono) "> ✦ SKILL</ text >
464464 < text x ="220 " y ="82 " text-anchor ="middle " fill ="rgba(255,255,255,0.6) " font-size ="8 " font-family ="var(--font-mono) "> Auto-packaged</ text >
465465 < text x ="220 " y ="96 " text-anchor ="middle " fill ="rgba(255,255,255,0.4) " font-size ="8 " font-family ="var(--font-mono) "> Versioned · Reusable</ text >
466- < text x ="220 " y ="115 " text-anchor ="middle " fill ="rgba(255,255,255,0.3) " font-size ="8 " font-family ="var(--font-mono) "> → MCP tool exposed </ text >
466+ < text x ="220 " y ="115 " text-anchor ="middle " fill ="rgba(255,255,255,0.3) " font-size ="8 " font-family ="var(--font-mono) "> → Hermes skill installed </ text >
467467 </ g >
468468 </ svg >
469469 </ div >
@@ -472,7 +472,7 @@ <h3 data-i18n="features.architecture.title">DAG + FSM Hybrid Architecture</h3>
472472 < h3 data-i18n ="features.evolution.title "> Skill Auto-Evolution</ h3 >
473473 < p data-i18n ="features.evolution.desc "> Stop reinventing workflows. SoloFlow detects repeated patterns across your agent runs and automatically packages them into versioned, reusable skills — which can be exposed as MCP tools for other agents to consume. Your workflows literally improve themselves.</ p >
474474 < div class ="feature-formula glass-chip ">
475- < code > pattern → detect → package → skill → MCP tool </ code >
475+ < code > pattern → detect → package → skill</ code >
476476 </ div >
477477 </ div >
478478 </ div >
@@ -500,26 +500,26 @@ <h2 class="section-title" id="architecture-title" data-i18n="architecture.title"
500500 <!-- Layer 1: MCP Interface -->
501501 < g class ="arch-layer " transform ="translate(0,10) ">
502502 < rect x ="40 " y ="10 " width ="820 " height ="70 " rx ="10 " fill ="rgba(110,231,183,0.04) " stroke ="rgba(110,231,183,0.2) " stroke-width ="1 " stroke-dasharray ="4 2 "/>
503- < text x ="60 " y ="35 " fill ="#6EE7B7 " font-size ="12 " font-family ="var(--font-mono) " font-weight ="600 "> MCP TOOL LAYER</ text >
503+ < text x ="60 " y ="35 " fill ="#6EE7B7 " font-size ="12 " font-family ="var(--font-mono) " font-weight ="600 "> HERMES PLUGIN LAYER</ text >
504504 < g transform ="translate(60,45) ">
505505 < rect width ="120 " height ="28 " rx ="6 " fill ="rgba(110,231,183,0.1) " stroke ="rgba(110,231,183,0.3) " stroke-width ="0.8 "/>
506- < text x ="60 " y ="18 " text-anchor ="middle " fill ="#6EE7B7 " font-size ="9 " font-family ="var(--font-mono) "> soloflow_run </ text >
506+ < text x ="60 " y ="18 " text-anchor ="middle " fill ="#6EE7B7 " font-size ="9 " font-family ="var(--font-mono) "> /soloflow begin </ text >
507507 </ g >
508508 < g transform ="translate(200,45) ">
509509 < rect width ="130 " height ="28 " rx ="6 " fill ="rgba(110,231,183,0.1) " stroke ="rgba(110,231,183,0.3) " stroke-width ="0.8 "/>
510- < text x ="65 " y ="18 " text-anchor ="middle " fill ="#6EE7B7 " font-size ="9 " font-family ="var(--font-mono) "> soloflow_status </ text >
510+ < text x ="65 " y ="18 " text-anchor ="middle " fill ="#6EE7B7 " font-size ="9 " font-family ="var(--font-mono) "> /soloflow status </ text >
511511 </ g >
512512 < g transform ="translate(350,45) ">
513513 < rect width ="120 " height ="28 " rx ="6 " fill ="rgba(110,231,183,0.1) " stroke ="rgba(110,231,183,0.3) " stroke-width ="0.8 "/>
514- < text x ="60 " y ="18 " text-anchor ="middle " fill ="#6EE7B7 " font-size ="9 " font-family ="var(--font-mono) "> soloflow_list </ text >
514+ < text x ="60 " y ="18 " text-anchor ="middle " fill ="#6EE7B7 " font-size ="9 " font-family ="var(--font-mono) "> /soloflow list </ text >
515515 </ g >
516516 < g transform ="translate(490,45) ">
517517 < rect width ="130 " height ="28 " rx ="6 " fill ="rgba(110,231,183,0.1) " stroke ="rgba(110,231,183,0.3) " stroke-width ="0.8 "/>
518- < text x ="65 " y ="18 " text-anchor ="middle " fill ="#6EE7B7 " font-size ="9 " font-family ="var(--font-mono) "> soloflow_cancel </ text >
518+ < text x ="65 " y ="18 " text-anchor ="middle " fill ="#6EE7B7 " font-size ="9 " font-family ="var(--font-mono) "> /soloflow end </ text >
519519 </ g >
520520 < g transform ="translate(640,45) ">
521521 < rect width ="130 " height ="28 " rx ="6 " fill ="rgba(110,231,183,0.1) " stroke ="rgba(110,231,183,0.3) " stroke-width ="0.8 "/>
522- < text x ="65 " y ="18 " text-anchor ="middle " fill ="#6EE7B7 " font-size ="9 " font-family ="var(--font-mono) "> soloflow_create </ text >
522+ < text x ="65 " y ="18 " text-anchor ="middle " fill ="#6EE7B7 " font-size ="9 " font-family ="var(--font-mono) "> /soloflow propose </ text >
523523 </ g >
524524 </ g >
525525
@@ -609,7 +609,7 @@ <h2 class="section-title" id="architecture-title" data-i18n="architecture.title"
609609 < text x ="60 " y ="35 " fill ="rgba(255,255,255,0.5) " font-size ="12 " font-family ="var(--font-mono) " font-weight ="600 "> RUNTIME</ text >
610610 < g transform ="translate(60,42) ">
611611 < rect width ="90 " height ="24 " rx ="4 " fill ="rgba(255,255,255,0.04) " stroke ="rgba(255,255,255,0.1) " stroke-width ="0.5 "/>
612- < text x ="45 " y ="16 " text-anchor ="middle " fill ="rgba(255,255,255,0.4) " font-size ="9 " font-family ="var(--font-mono) "> TypeScript </ text >
612+ < text x ="45 " y ="16 " text-anchor ="middle " fill ="rgba(255,255,255,0.4) " font-size ="9 " font-family ="var(--font-mono) "> Python </ text >
613613 </ g >
614614 < g transform ="translate(165,42) ">
615615 < rect width ="70 " height ="24 " rx ="4 " fill ="rgba(255,255,255,0.04) " stroke ="rgba(255,255,255,0.1) " stroke-width ="0.5 "/>
@@ -854,7 +854,7 @@ <h2 class="section-title" id="comparison-title" data-i18n="comparison.title">How
854854 < td class ="check "> < svg width ="18 " height ="18 " viewBox ="0 0 24 24 " fill ="none " stroke ="currentColor " stroke-width ="2.5 " aria-hidden ="true "> < polyline points ="20 6 9 17 4 12 "/> </ svg > </ td >
855855 </ tr >
856856 < tr >
857- < td data-i18n ="comparison.features.mcp "> MCP Tool Interface</ td >
857+ < td data-i18n ="comparison.features.mcp "> Hermes Plugin Interface</ td >
858858 < td class ="check highlight "> < svg width ="18 " height ="18 " viewBox ="0 0 24 24 " fill ="none " stroke ="currentColor " stroke-width ="2.5 " aria-hidden ="true "> < polyline points ="20 6 9 17 4 12 "/> </ svg > </ td >
859859 < td class ="cross "> ✕</ td >
860860 < td class ="cross "> ✕</ td >
@@ -882,7 +882,7 @@ <h2 class="section-title" id="comparison-title" data-i18n="comparison.title">How
882882 < div class ="metrics-grid ">
883883 < div class ="metric-card glass-card reveal " style ="--delay:0 ">
884884 < div class ="metric-value " data-target ="68 " data-suffix =""> 0</ div >
885- < div class ="metric-label " data-i18n ="metrics.tests.label "> TypeScript Tests</ div >
885+ < div class ="metric-label " data-i18n ="metrics.tests.label "> Python Tests</ div >
886886 < div class ="metric-desc " data-i18n ="metrics.tests.desc "> All passing, strict mode</ div >
887887 < div class ="metric-bar "> < div class ="metric-fill " style ="--fill:100% "> </ div > </ div >
888888 </ div >
0 commit comments