{"id":25528870,"url":"https://github.com/zjn-zjn/ice","last_synced_at":"2026-04-01T16:51:14.328Z","repository":{"id":37665872,"uuid":"375017412","full_name":"zjn-zjn/ice","owner":"zjn-zjn","description":"Rule engine/process engine, committed to solving flexible and complex hard-coded problems, for complex/flexibly changing business, provide a new abstract orchestration solution that is lightweight, high-performance and provides visual operation pages. Java规则引擎-ice，针对复杂/灵活变动业务，提供一个新的抽象编排解决方案，轻量级，高性能并提供可视化操作页面","archived":false,"fork":false,"pushed_at":"2026-03-29T04:48:25.000Z","size":21063,"stargazers_count":661,"open_issues_count":1,"forks_count":132,"subscribers_count":11,"default_branch":"master","last_synced_at":"2026-03-29T07:32:25.254Z","etag":null,"topics":["business-rules","business-rules-engine","flow-control","flow-engine","java","rule-engine","rule-processor","rules","rules-engine"],"latest_commit_sha":null,"homepage":"https://waitmoon.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zjn-zjn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-06-08T13:23:12.000Z","updated_at":"2026-03-29T04:48:26.000Z","dependencies_parsed_at":"2025-01-04T02:37:56.269Z","dependency_job_id":"7d87419e-5ef0-4f7e-b7e0-0678b41b3430","html_url":"https://github.com/zjn-zjn/ice","commit_stats":null,"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"purl":"pkg:github/zjn-zjn/ice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjn-zjn%2Fice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjn-zjn%2Fice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjn-zjn%2Fice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjn-zjn%2Fice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zjn-zjn","download_url":"https://codeload.github.com/zjn-zjn/ice/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjn-zjn%2Fice/sbom","scorecard":{"id":1242558,"data":{"date":"2026-01-19","repo":{"name":"github.com/zjn-zjn/ice","commit":"0a80b310c4f7fb1d8c3142ca072c3333c6fb5f90"},"scorecard":{"version":"v5.4.1-0.20260109214540-85483c21ffbb","commit":"85483c21ffbb0f125cf1d16aa53f283d574f4ca5"},"score":4.2,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/7 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/docker-publish.yml:1","Warn: no topLevel permission defined: .github/workflows/python-publish.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#license"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/docker-publish.yml:12"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/zjn-zjn/ice/docker-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/zjn-zjn/ice/docker-publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/zjn-zjn/ice/docker-publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/zjn-zjn/ice/docker-publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/zjn-zjn/ice/docker-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/zjn-zjn/ice/python-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/zjn-zjn/ice/python-publish.yml/master?enable=pin","Warn: containerImage not pinned by hash: server/ice-server/Dockerfile:2: pin your Docker image by updating eclipse-temurin:8-jre to eclipse-temurin:8-jre@sha256:8200c25936cd9d3d22369fcca147325f77033df95c2e5a2108ca7220693d4a1b","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:25","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:26","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"47 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: https://osv.dev/GHSA-vmq6-5m68-f53m","Warn: Project is vulnerable to: https://osv.dev/GHSA-25qh-j22f-pwp8","Warn: Project is vulnerable to: https://osv.dev/GHSA-6v67-2wr5-gvf4","Warn: Project is vulnerable to: https://osv.dev/GHSA-pr98-23f8-jwxv","Warn: Project is vulnerable to: https://osv.dev/GHSA-qqpg-mvqg-649v","Warn: Project is vulnerable to: https://osv.dev/GHSA-rc42-6c7j-7h5r","Warn: Project is vulnerable to: https://osv.dev/GHSA-4gc7-5j7h-4qph","Warn: Project is vulnerable to: https://osv.dev/GHSA-4wp7-92pw-q264","Warn: Project is vulnerable to: https://osv.dev/GHSA-jmp9-x22r-554x","Warn: Project is vulnerable to: https://osv.dev/GHSA-9cmq-m9j5-mvww","Warn: Project is vulnerable to: https://osv.dev/GHSA-gm62-rw4g-vrc4","Warn: Project is vulnerable to: https://osv.dev/GHSA-h46c-h94j-95f3","Warn: Project is vulnerable to: https://osv.dev/GHSA-pfh2-hfmq-phg5","Warn: Project is vulnerable to: https://osv.dev/GHSA-27hp-xhwr-wr2m","Warn: Project is vulnerable to: https://osv.dev/GHSA-3p2h-wqq4-wf4h","Warn: Project is vulnerable to: https://osv.dev/GHSA-42wg-hm62-jcwg","Warn: Project is vulnerable to: https://osv.dev/GHSA-5j33-cvvr-w245","Warn: Project is vulnerable to: https://osv.dev/GHSA-7w75-32cg-r6g2","Warn: Project is vulnerable to: https://osv.dev/GHSA-83qj-6fr2-vhqg","Warn: Project is vulnerable to: https://osv.dev/GHSA-ff77-26x5-69cr","Warn: Project is vulnerable to: https://osv.dev/GHSA-gqp3-2cvr-x8m3","Warn: Project is vulnerable to: https://osv.dev/GHSA-h2fw-rfh5-95r3","Warn: Project is vulnerable to: https://osv.dev/GHSA-h3gc-qfqq-6h8f","Warn: Project is vulnerable to: https://osv.dev/GHSA-hgrr-935x-pq79","Warn: Project is vulnerable to: https://osv.dev/GHSA-vfww-5hm6-hx2j","Warn: Project is vulnerable to: https://osv.dev/GHSA-wc4r-xq3c-5cf3","Warn: Project is vulnerable to: https://osv.dev/GHSA-wm9w-rjj3-j356","Warn: Project is vulnerable to: https://osv.dev/GHSA-wmwf-9ccg-fff5","Warn: Project is vulnerable to: https://osv.dev/GHSA-v682-8vv8-vpwr","Warn: Project is vulnerable to: https://osv.dev/GHSA-2rmj-mq67-h97g","Warn: Project is vulnerable to: https://osv.dev/GHSA-2wrp-6fg6-hmc5","Warn: Project is vulnerable to: https://osv.dev/GHSA-4wrc-f8pq-fpqp","Warn: Project is vulnerable to: https://osv.dev/GHSA-ccgv-vj62-xf9h","Warn: Project is vulnerable to: https://osv.dev/GHSA-hgjh-9rj2-g67j","Warn: Project is vulnerable to: https://osv.dev/GHSA-cx7f-g6mp-7hqm","Warn: Project is vulnerable to: https://osv.dev/GHSA-g5vr-rgqm-vf78","Warn: Project is vulnerable to: https://osv.dev/GHSA-r936-gwx5-v52f","Warn: Project is vulnerable to: https://osv.dev/GHSA-w3c8-7r8f-9jp8","Warn: Project is vulnerable to: https://osv.dev/GHSA-chfm-68vv-pvw5","Warn: Project is vulnerable to: https://osv.dev/GHSA-3mc7-4q67-w48m","Warn: Project is vulnerable to: https://osv.dev/GHSA-98wm-3w3q-mw94","Warn: Project is vulnerable to: https://osv.dev/GHSA-9w3m-gqgf-c4p9","Warn: Project is vulnerable to: https://osv.dev/GHSA-c4r9-r8fh-9vj2","Warn: Project is vulnerable to: https://osv.dev/GHSA-hhhw-99gj-p3c3","Warn: Project is vulnerable to: https://osv.dev/GHSA-mjmj-j48q-9wg2","Warn: Project is vulnerable to: https://osv.dev/GHSA-w37g-rhq8-7m4j","Warn: Project is vulnerable to: https://osv.dev/GHSA-6r3c-xf4w-jxjm"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2026-01-28T01:33:02.787Z","repository_id":37665872,"created_at":"2026-01-28T01:33:02.788Z","updated_at":"2026-01-28T01:33:02.788Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["business-rules","business-rules-engine","flow-control","flow-engine","java","rule-engine","rule-processor","rules","rules-engine"],"created_at":"2025-02-19T23:23:53.749Z","updated_at":"2026-04-01T16:51:14.323Z","avatar_url":"https://github.com/zjn-zjn.png","language":"Go","funding_links":[],"categories":["规则引擎"],"sub_categories":["语音合成"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg width=\"140\" alt=\"Ice\" src=\"https://waitmoon.com/images/hero.svg\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eIce\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  A lightweight visual rule engine for flexible business orchestration\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.apache.org/licenses/LICENSE-2.0.html\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-Apache%202-blue.svg\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://central.sonatype.com/artifact/com.waitmoon.ice/ice\"\u003e\u003cimg src=\"https://img.shields.io/maven-central/v/com.waitmoon.ice/ice.svg\" alt=\"Maven Central\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pkg.go.dev/github.com/zjn-zjn/ice/sdks/go\"\u003e\u003cimg src=\"https://pkg.go.dev/badge/github.com/zjn-zjn/ice/sdks/go.svg\" alt=\"Go Reference\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/ice-rules/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/ice-rules.svg\" alt=\"PyPI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/waitmoon/ice-server\"\u003e\u003cimg src=\"https://img.shields.io/docker/pulls/waitmoon/ice-server\" alt=\"Docker Pulls\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://waitmoon.com/en/\"\u003eDocumentation\u003c/a\u003e · \n  \u003ca href=\"https://eg.waitmoon.com\"\u003eLive Demo\u003c/a\u003e · \n  \u003ca href=\"https://waitmoon.com/en/guide/getting-started.html\"\u003eGetting Started\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"./README_zh.md\"\u003e中文\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Features\n\n- **Visual Configuration** — Web-based tree editor for rule orchestration\n- **Zero Dependencies** — No database or middleware required, file-based storage\n- **Multi-Language SDKs** — Java, Go, and Python with full feature parity\n- **Hot Reload** — Configuration changes take effect in seconds\n- **High Performance** — Pure in-memory execution with millisecond latency\n\n## Why Ice?\n\n| | Ice | Traditional Rule Engines |\n|---|---|---|\n| **Learning Curve** | 5 minutes to get started | Need to learn DSL syntax |\n| **Deployment** | Docker one-click deploy | Requires database/middleware |\n| **Configuration** | Visual web UI | Text/code-based |\n| **Performance** | In-memory, millisecond latency | Compilation overhead |\n| **Hot Reload** | Seconds, no restart | Often requires restart |\n\n## Use Cases\n\n| Scenario | Description |\n|----------|-------------|\n| **Marketing Campaigns** | Coupons, discounts, promotions, flash sales |\n| **Risk Control** | Credit assessment, anti-fraud, real-time decisions |\n| **Dynamic Pricing** | Price strategies, discount rules, tiered pricing |\n| **Access Control** | Permission management, feature flags, A/B testing |\n| **Process Orchestration** | Approval workflows, order processing, state machines |\n\n## Installation\n\n### Server\n\n```bash\ndocker run -d --name ice-server -p 8121:8121 \\\n  -v ./ice-data:/app/ice-data waitmoon/ice-server:latest\n```\n\n### Client SDKs\n\n\u003cdetails open\u003e\n\u003csummary\u003e\u003cb\u003eJava\u003c/b\u003e · \u003ca href=\"https://waitmoon.com/en/guide/getting-started.html\"\u003eDocumentation\u003c/a\u003e\u003c/summary\u003e\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.waitmoon.ice\u003c/groupId\u003e\n  \u003cartifactId\u003eice-core\u003c/artifactId\u003e\n  \u003cversion\u003e4.0.5\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n```java\nIceFileClient client = new IceFileClient(1, \"./ice-data\", \"com.your.package\");\nclient.start();\n\nIceRoam roam = IceRoam.create();\nroam.setId(1L);\nroam.put(\"uid\", 12345);\nIce.syncProcess(roam);\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eGo\u003c/b\u003e · \u003ca href=\"https://waitmoon.com/en/guide/go-sdk.html\"\u003eDocumentation\u003c/a\u003e\u003c/summary\u003e\n\n```bash\ngo get github.com/zjn-zjn/ice/sdks/go\n```\n\nUsage:\n\n```go\nimport ice \"github.com/zjn-zjn/ice/sdks/go\"\n\nfunc main() {\n    client, _ := ice.NewClient(1, \"./ice-data\")\n    client.Start()\n    defer client.Destroy()\n\n    roam := ice.NewRoam()\n    roam.SetId(1)\n    roam.Put(\"uid\", 12345)\n    ice.SyncProcess(context.Background(), roam)\n}\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003ePython\u003c/b\u003e · \u003ca href=\"https://waitmoon.com/en/guide/python-sdk.html\"\u003eDocumentation\u003c/a\u003e\u003c/summary\u003e\n\n```bash\npip install ice-rules\n```\n\nUsage:\n\n```python\nimport ice\n\nclient = ice.FileClient(app=1, storage_path=\"./ice-data\")\nclient.start()\n\nroam = ice.Roam.create()\nroam.set_id(1)\nroam.put(\"uid\", 12345)\nice.sync_process(roam)\n```\n\n\u003c/details\u003e\n\n## Architecture\n\n```\n┌──────────────────────────────────────────────────────────┐\n│                  Shared Storage (ice-data/)              │\n│    ┌────────┐   ┌────────┐   ┌────────┐   ┌──────────┐   │\n│    │ apps/  │   │ bases/ │   │ confs/ │   │ versions/│   │\n│    └────────┘   └────────┘   └────────┘   └──────────┘   │\n└──────────────────────────────────────────────────────────┘\n         ▲                                    ▲\n         │ Write                              │ Read (Poll)\n         │                                    │\n┌────────┴────────┐                ┌──────────┴──────────┐\n│   Ice Server    │                │     Ice Client      │\n│                 │                │                     │\n│  • Web UI       │                │  • Version polling  │\n│  • Rule editor  │                │  • Hot reload       │\n│  • Publishing   │                │  • In-memory exec   │\n└─────────────────┘                └─────────────────────┘\n```\n\n## Documentation\n\n- [Getting Started](https://waitmoon.com/en/guide/getting-started.html)\n- [Architecture Design](https://waitmoon.com/en/advanced/architecture.html)\n- [Configuration Guide](https://waitmoon.com/en/guide/detail.html)\n- [FAQ](https://waitmoon.com/en/guide/qa.html)\n\n## Community\n\n- [GitHub Issues](https://github.com/zjn-zjn/ice/issues) — Bug reports and feature requests\n- [GitHub Discussions](https://github.com/zjn-zjn/ice/discussions) — Questions and discussions\n\n## License\n\n[Apache License 2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzjn-zjn%2Fice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzjn-zjn%2Fice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzjn-zjn%2Fice/lists"}