Kasanari is an open-source REST catalog service for Apache Iceberg, Apache Paimon, and Lance. It provides a unified API gateway so query engines and clients can share catalog metadata across platforms without being tied to a single catalog implementation.
📖 Documentation · Quickstart · Examples
Use Kasanari as a full catalog implementation or as a proxy in front of an existing catalog:
- Multi-engine interoperability — expose Iceberg, Paimon, and Lance catalogs over REST from one service
- Catalog migration — move to REST once, then swap the backing implementation without changing client code
- Engine compatibility — let engines that only speak REST use JDBC, Hive, Hadoop, or other upstream catalogs
Each catalog runs in one of two modes:
| Mode | Description |
|---|---|
INTERNAL |
Kasanari owns metadata lifecycle and storage |
PROXY |
Kasanari forwards requests to an upstream catalog while keeping a unified API and security layer |
Multiple INTERNAL or PROXY catalogs of the same type can be registered side by side.
| Catalog | Version |
|---|---|
| Apache Iceberg | 1.11.0 |
| Apache Paimon | 1.4.2 |
| Lance | 0.7.2 |
Proxy backends include JDBC, Hive, Hadoop, filesystem, and REST implementations — see the catalog docs for details.
- Unified REST APIs for Iceberg, Paimon, and Lance catalog operations
- Management API to register, update, and list catalogs at runtime
- Pluggable authentication —
none, LDAP, OIDC, or custom SPI providers - Pluggable authorization — allow-all, Casbin RBAC, or custom SPI providers
- Instrumentation SPI for audit and logging hooks on catalog requests
- Runnable examples for Trino, StarRocks, Spark, auth, and observability setups
Prerequisites: Docker, Docker Compose, curl, and jq.
- Follow the Quickstart guide to bring up PostgreSQL, MinIO, and Kasanari.
- Register Iceberg, Paimon, and Lance catalogs via the Management API.
- Point your engine at the REST endpoints (see Examples).
Or pull a published image from Docker Hub:
docker pull nryanov/kasanari:latest
docker run -p 9090:9090 nryanov/kasanari:latestFor contributors or when you need a custom image. Requirements: JDK 21, Gradle.
# Build a local container image (default tag: local/kasanari:<version>)
./scripts/build-container-images.sh
# Cross-platform image build
QUARKUS_JIB_PLATFORMS=linux/amd64 ./scripts/build-container-images.sh
QUARKUS_JIB_PLATFORMS=linux/arm64/v8 ./scripts/build-container-images.sh| Topic | Link |
|---|---|
| Getting started | Quickstart |
| Catalog configuration | Iceberg · Paimon · Lance |
| Management API | API reference |
| Security | Authentication & authorization |
| Observability | Metrics & tracing |
| Examples | Runnable examples |
Licensed under the Apache License 2.0.