finds.dev← search

// the find

bytedance/arishem

★ 472 · Go · Apache-2.0 · updated Mar 2025

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.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →