# Where Are Apache Superset Configuration Files Located? A Complete Guide

> Locate Apache Superset configuration files within the Python backend repository, primarily superset_config.py and .env files. Access your complete guide for efficient management.

- Repository: [Superset/superset](https://github.com/superset-sh/superset)
- Tags: how-to-guide
- Published: 2026-03-08

---

**Apache Superset configuration files are located in the Python backend repository (not the TypeScript frontend), primarily as [`superset_config.py`](https://github.com/superset-sh/superset/blob/main/superset_config.py) on your PYTHONPATH or as environment variables in `.env` files, while the `superset-sh/superset` monorepo only contains UI-specific environment templates.**

The `superset-sh/superset` repository is a TypeScript-based frontend and tooling layer for the Superset ecosystem. It does not contain the core Apache Superset Python server, so you will not find the traditional [`superset_config.py`](https://github.com/superset-sh/superset/blob/main/superset_config.py) file inside this codebase. To locate and edit Apache Superset configuration files, you must work with the backend Python repository or the environment-specific files that the UI layer consumes.

## Understanding the Repository Structure

The `superset-sh/superset` monorepo focuses exclusively on the user interface and desktop client. It is built with Next.js, Electron, and tRPC, and it communicates with a separate Apache Superset backend instance. Because this repository contains no Python server code, the comprehensive configuration system that controls database connections, feature flags, and security settings resides entirely in the backend repository at `apache/superset`.

## Locating Apache Superset Configuration Files in the Backend

When working with the actual Apache Superset application, you interact with two primary configuration mechanisms that live outside the `superset-sh/superset` repository.

### The Primary Configuration File: superset_config.py

The main Apache Superset configuration file is a Python module named [`superset_config.py`](https://github.com/superset-sh/superset/blob/main/superset_config.py). You must place this file on Python’s `PYTHONPATH`, typically in the root directory of your Superset backend installation or within a dedicated `config/` directory. This file controls all core Superset settings, including `SQLALCHEMY_DATABASE_URI`, `APP_NAME`, feature flags, and authentication backends.

### Environment Variables and .env Files

For runtime secrets and deployment-specific values, Apache Superset reads environment variables. You typically define these in a `.env` file located in the root of the backend repository, or export them directly in your shell. Common variables include `SUPERSET_ENV`, `REDIS_HOST`, and database credentials. The backend repository usually provides an `.env.example` file as a template.

## Configuration Files in the superset-sh/superset Monorepo

While this repository does not contain the backend configuration, it does include several files that configure the UI tooling and desktop client.

### UI Environment Templates

The file `/.env.example` serves as a template for environment variables used by the UI tooling. It defines API URLs, authentication tokens, and other values that the Next.js applications and Electron desktop client need to communicate with a Superset backend instance.

### Desktop Client Configuration

The [`/.mcp.json`](https://github.com/superset-sh/superset/blob/main//.mcp.json) file contains Multi-Client Project (MCP) descriptors that define how the desktop client discovers and connects to local services. This JSON configuration controls the integration between the Electron app and local development servers.

### Workspace Setup Utilities

When you create a new workspace through the desktop client, the utility at [`apps/desktop/src/lib/trpc/routers/workspaces/utils/setup.ts`](https://github.com/superset-sh/superset/blob/main/apps/desktop/src/lib/trpc/routers/workspaces/utils/setup.ts) copies an existing Superset configuration into the new worktree. This function, referenced in [`apps/desktop/src/lib/trpc/routers/workspaces/utils/workspace-init.ts`](https://github.com/superset-sh/superset/blob/main/apps/desktop/src/lib/trpc/routers/workspaces/utils/workspace-init.ts), bridges the UI layer with the Python backend by ensuring that [`superset_config.py`](https://github.com/superset-sh/superset/blob/main/superset_config.py) is present in newly initialized workspaces.

## Minimal superset_config.py Example

If you are configuring the Apache Superset backend, place a file named [`superset_config.py`](https://github.com/superset-sh/superset/blob/main/superset_config.py) on your `PYTHONPATH` with contents similar to the following:

```python

# superset_config.py

# Place this file on PYTHONPATH (e.g., the root of the Superset repo)

# -------------------------------------------------

# Core application settings

# -------------------------------------------------

APP_NAME = "Superset"
APP_ICON = "/static/assets/images/superset-logo.png"

# -------------------------------------------------

# Database connection

# -------------------------------------------------

SQLALCHEMY_DATABASE_URI = "postgresql+psycopg2://superset:YOUR_PASSWORD@localhost/superset"

# -------------------------------------------------

# Feature flags (examples)

# -------------------------------------------------

FEATURE_FLAGS = {
    "ENABLE_TEMPLATE_PROCESSING": True,
    "ALWAYS_FILTER_MAIN_CHARTS": False,
}

# -------------------------------------------------

# Security & auth

# -------------------------------------------------

SECRET_KEY = "replace‑with‑a‑strong‑random‑value"
WTF_CSRF_ENABLED = True

# -------------------------------------------------

# Logging

# -------------------------------------------------

LOG_LEVEL = "INFO"

```

After placing this file in the root of your Apache Superset backend repository and starting the server with `superset run`, the UI launched from the `superset-sh/superset` monorepo will automatically connect to the configured backend.

## Summary

- **Apache Superset configuration files** reside in the Python backend repository (`apache/superset`), not in the TypeScript frontend monorepo (`superset-sh/superset`).
- The primary configuration file is **[`superset_config.py`](https://github.com/superset-sh/superset/blob/main/superset_config.py)**, which must be placed on the `PYTHONPATH` and controls database connections, feature flags, and security settings.
- **Environment variables** in `.env` files handle runtime secrets and deployment-specific values for the backend.
- The `superset-sh/superset` repository contains only UI-specific configuration templates (`.env.example`, [`.mcp.json`](https://github.com/superset-sh/superset/blob/main/.mcp.json)) and workspace setup utilities that bridge to the backend configuration.

## Frequently Asked Questions

### Where is superset_config.py located?

You must create and place [`superset_config.py`](https://github.com/superset-sh/superset/blob/main/superset_config.py) on Python’s `PYTHONPATH`, typically in the root directory of the Apache Superset backend repository or within a dedicated `config/` folder. The `superset-sh/superset` monorepo does not contain this file because it is a TypeScript frontend that communicates with a separate Python backend.

### Does the superset-sh/superset repository contain Python configuration files?

No. The `superset-sh/superset` repository is a TypeScript-based monorepo containing Next.js and Electron applications. It does not ship with the Apache Superset Python server or its [`superset_config.py`](https://github.com/superset-sh/superset/blob/main/superset_config.py) file. This repository only contains UI-specific environment templates like `.env.example` and MCP configuration files.

### How do I configure Superset without modifying Python files?

You can configure Apache Superset using environment variables defined in a `.env` file or exported directly in your shell. Variables such as `SUPERSET_ENV`, `SQLALCHEMY_DATABASE_URI`, `REDIS_HOST`, and `SECRET_KEY` can be set without touching [`superset_config.py`](https://github.com/superset-sh/superset/blob/main/superset_config.py). However, for complex configurations like feature flags or custom authentication backends, you still need the Python configuration file.

### What is the difference between .env and superset_config.py?

`.env` files store runtime environment variables as simple key-value pairs, ideal for secrets and deployment-specific values that change between environments. [`superset_config.py`](https://github.com/superset-sh/superset/blob/main/superset_config.py) is a Python module that defines complex logic, data structures (like dictionaries for feature flags), and application settings that require Python syntax. The backend reads both, with environment variables often taking precedence for specific overrides.