Skip to main content

Liteset vs Apache Superset 6.0.0

A feature-by-feature comparison of the two backends. Liteset is a drop-in replacement at the wire level — the user-visible behaviour is intentionally identical. Differences are confined to the runtime architecture.

At a glance

Apache Superset 6.0.0Liteset
Web frameworkFlask 2.x (WSGI)Litestar 2.x (ASGI)
App serverGunicorn (gevent / sync)Uvicorn + uvloop
Concurrency modelPre-forked workers × threadsSingle event loop
ORMSQLAlchemy 1.4 (sync)SQLAlchemy 2.0 (async)
Metadata DB driverpsycopg2 / mysqlclientasyncpg / asyncmy / aiosqlite
DB engine specsSync BaseEngineSpecNative async (Postgres, MySQL, ClickHouse, Trino) + sync fallback
SerializationMarshmallow + Pydantic v1msgspec
Configurationsuperset_config.py (Python module)pydantic-settings (with superset_config.py compatibility)
Auth / RBACFlask-AppBuilderAsyncSecurityManager (FAB port)
Background jobsCeleryCelery (unchanged)
WebSocketExternal Node.js superset-websocketNative Litestar WebSocket
OpenAPIflask-appbuilder specLitestar auto-generated, served at /swagger/v1
MigrationsAlembic (psycopg2)Alembic (psycopg2 — kept sync for migrations)

Compatibility matrix

What stays identical between the two:

  • ✅ Metadata DB schema — same Alembic revisions
  • ✅ REST API — same routes, same response shapes (dual camelCase/snake_case lookup)
  • ✅ Session cookies — Flask-signed cookies decoded natively
  • ✅ CSRF tokens (X-CSRFToken)
  • ✅ Rison-encoded query parameters
  • ✅ SPA frontend bundle (no changes required)
  • ✅ Celery tasks (alerts, reports, thumbnails, async queries)
  • ✅ Feature flags
  • ✅ SIP-40 error envelopes
  • ✅ Per-DB engine spec capabilities

What is expected to change:

  • 🔁 Logs — Liteset emits structured JSON via structlog
  • 🔁 OpenAPI URL — /swagger/v1 is auto-generated
  • 🔁 Process model — one Uvicorn process replaces N Gunicorn workers
  • 🔁 Resource footprint — see the Results page

When to choose which

Stick with Apache Superset 6.0.0 if:

  • You are running Superset in production today and there is no specific scaling pain
  • You depend on third-party Flask middlewares that have no ASGI equivalent
  • You need the long-term-support guarantees of an Apache project

Try Liteset if:

  • You hit the worker-count ceiling on a single VM
  • You can trade a few percent more RAM for much higher throughput and lower tail latency under concurrent load
  • You want to consolidate the WebSocket service back into the main backend
  • You are working on or studying async Python at scale
tip

Liteset is an academic port. For production installations the recommendation remains apache/superset.