// the find
bytedance/arishem
A high performance and lightweight rule engine written by Golang.
Arishem is a JSON-native rule engine from ByteDance's customer service platform, designed to externalize business logic so non-engineers can configure rules through a UI. Rules are expressed as nested JSON condition trees evaluated against runtime fact data. It's a solid fit if you need a rule engine that maps naturally to a visual editor and your team is already on Go.
The JSON-as-DSL approach is genuinely smart — because rules are valid JSON, you get serialization, storage, and UI binding for free without a custom parser layer. The ~29µs benchmark for a 495-node AST is credible and the benchmark code is actually in the repo, not just claimed. The concurrent feature-fetching model (async goroutines per network data source with batched execution) is well thought out for rules that need to call external services. The observer/callback system for debugging rule hits and misses solves a real operational headache that most rule engines ignore.
The README and almost all documentation is in Chinese, which will be a wall for most non-Chinese developers — the English doc exists but is sparse. The project last pushed in March 2025 and has 472 stars with essentially no external contributors, so it's effectively ByteDance-internal tooling that was open-sourced; you'd be adopting an orphaned dependency. The `Initialize()` call at startup is a global init with no instance isolation, which makes it painful to test or run multiple engine configurations in the same process. Type coercion is implicit and right-value-wins, which is a footgun — silent numeric/string coercions in production rules will cause bugs that are hard to trace.