{"adoption": {"forks": 524, "observed_at": "2026-08-28T04:08:23.855137+00:00", "stars": 3836}, "canonical_url": "https://ross.abutalabs.com/products/liteflow", "card": {"archived": false, "artifact_type": "framework", "description": "Lightweight, fast, stable, programmable component-based rule engine — where AI Agents orchestrate just like ordinary components. Uniquely designed DSL: component reuse, sync/async & dynamic orchestration, multi-language scripting, nested rules, hot deployment and smooth refresh. If you can orchestrate LiteFlow, you can orchestrate AI.", "domain": ["developer-tools", "backend"], "enriched": true, "function": ["workflow-automation", "agent-framework", "middleware", "plugin-system"], "health_score": 77, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["dromara/liteflow"], "name": "dromara/liteflow", "platform": ["jvm", "cross-platform"], "pushed_at": "2026-07-31T08:59:59+00:00", "repo": "dromara/liteflow", "stars": 3836, "tags": ["rule-engine", "orchestration", "dsl", "hot-reload", "component-based", "spring-boot", "ai-agent-orchestration", "scripting", "ai-agents", "automation", "spring"], "topics": ["component", "dsl", "flow-engine", "hot-reload", "java-rule-engine", "rule-engine", "java-rule", "ai-agent", "ai-agents"], "urls": [], "use_cases": ["orchestrate complex business flows with reusable components", "build AI agent workflows alongside regular business logic", "hot-reload business rules without restarting the application", "mix synchronous and asynchronous steps in a rule chain", "load rules from Nacos, Zookeeper, Redis or a database", "embed scripting languages inside rule definitions"], "what_it_is": "LiteFlow is a lightweight, programmable component-based rule engine for Java that orchestrates complex business logic via DSL rules (XML/JSON/YML) with hot reload and multi-language scripting. Since v2.16.0 it treats AI Agents as first-class components that can be orchestrated alongside ordinary business nodes.", "when_to_avoid": ["you need a non-JVM runtime", "you want a visual drag-and-drop workflow UI rather than DSL rules", "your orchestration needs are simple enough for plain code or a BPM engine"], "when_to_choose": ["you need a fast, stable rule/orchestration engine on the JVM", "you want AI agents orchestrated like ordinary components", "you need dynamic rule updates with hot deployment under high concurrency", "your stack is Spring Boot or plain Java from JDK8 to JDK25"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/liteflow", "repo": "dromara/liteflow", "role": "main", "score": 75}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:23.855137+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:26:16.585737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64ec7363a22e80d539fde666e4f23f947f30b14341f102bec273697bfac0cdf3", "fetched_at": "2026-08-28T04:08:23.855137+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dromara/liteflow"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:23.855137+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:26:16.585737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64ec7363a22e80d539fde666e4f23f947f30b14341f102bec273697bfac0cdf3", "fetched_at": "2026-08-28T04:08:23.855137+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dromara/liteflow"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:26:16.585737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64ec7363a22e80d539fde666e4f23f947f30b14341f102bec273697bfac0cdf3", "fetched_at": "2026-08-28T04:08:23.855137+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dromara/liteflow"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:23.855137+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:23.855137+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:23.855137+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:26:16.585737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64ec7363a22e80d539fde666e4f23f947f30b14341f102bec273697bfac0cdf3", "fetched_at": "2026-08-28T04:08:23.855137+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dromara/liteflow"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:23.855137+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:23.855137+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:26:16.585737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64ec7363a22e80d539fde666e4f23f947f30b14341f102bec273697bfac0cdf3", "fetched_at": "2026-08-28T04:08:23.855137+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dromara/liteflow"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:23.855137+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:23.855137+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:23.855137+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:26:16.585737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64ec7363a22e80d539fde666e4f23f947f30b14341f102bec273697bfac0cdf3", "fetched_at": "2026-08-28T04:08:23.855137+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dromara/liteflow"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:23.855137+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:23.855137+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:26:16.585737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64ec7363a22e80d539fde666e4f23f947f30b14341f102bec273697bfac0cdf3", "fetched_at": "2026-08-28T04:08:23.855137+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dromara/liteflow"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:26:16.585737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64ec7363a22e80d539fde666e4f23f947f30b14341f102bec273697bfac0cdf3", "fetched_at": "2026-08-28T04:08:23.855137+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dromara/liteflow"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:26:16.585737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64ec7363a22e80d539fde666e4f23f947f30b14341f102bec273697bfac0cdf3", "fetched_at": "2026-08-28T04:08:23.855137+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dromara/liteflow"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:26:16.585737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64ec7363a22e80d539fde666e4f23f947f30b14341f102bec273697bfac0cdf3", "fetched_at": "2026-08-28T04:08:23.855137+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dromara/liteflow"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 95, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2352, "days_push": 33, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 75, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}