finds.dev← search

// the find

zalando/zally

★ 944 · Kotlin · MIT · updated Feb 2026

A minimalistic, simple-to-use API linter

Zally is an OpenAPI 2/3 linter that runs as a server with a Go CLI and web UI on top. It ships with Zalando's RESTful API guidelines baked in as the default ruleset, and lets you write custom rules in Kotlin against a Spring Boot plugin API. Best fit for teams that have adopted Zalando's guidelines or want a server-side linting service rather than a local CLI tool.

The rule extension model is genuinely well-designed — you implement a Kotlin class, annotate it with @Rule and @Check, and the server picks it up automatically via Spring's component scan. The x-zally-ignore extension in specs is a practical escape hatch that doesn't require config file gymnastics. The CLI is written in Go and is properly self-contained, not a wrapper script. The split between zally-rule-api and zally-core means your custom rule JARs don't drag in the whole server as a dependency.

944 stars after what looks like ~8 years of existence is slow growth — Spectral has eaten most of this market by running locally without a server. The server-required architecture is a real adoption tax: you need a running JVM service (plus a database, per docker-compose) just to lint a spec in CI, whereas competitors are single binaries. The default ruleset is Zalando-specific and opinionated in ways that don't transfer — no-version-in-URI and x-audience headers are sensible at Zalando but will generate noise for any team not following those guidelines. Last meaningful activity appears sparse; the build badge references the Riptide repo, not Zally itself, which is an oversight that suggests the project doesn't get close attention.

View on GitHub → Homepage ↗

// 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 →