EcliPanel uses a feature flag system to enable or disable major capabilities across the entire panel without requiring a code deployment or server restart. Flags are stored as a single JSON object under theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/thenoname-gurl/EcliPanel/llms.txt
Use this file to discover all available pages before exploring further.
panelFeatureToggles key in the PanelSetting table. At runtime, every relevant API request checks the flag state before proceeding; disabled features return an immediate 503 response. This makes flags suitable for emergency shutoffs, gradual rollouts during maintenance, and environment-specific configuration (e.g., disabling billing on a staging instance).
How flags work
When a request arrives the backend middleware insrc/routes/index.ts checks the request path against a set of feature-to-prefix mappings. If the matching flag is disabled, the middleware short-circuits the request before it reaches any handler:
/api/organisations/*/dns/*. OAuth well-known endpoints (.well-known/oauth-authorization-server) are also gated on the oauth flag.
Disabled feature response
Any request to a path covered by a disabled flag receives:Toggling flags
Flags are read and written through the admin settings API. You need theadmin:settings permission.
PanelSetting rows. Look for the panelFeatureToggles key:
PATCH /api/admin/settings with the updated panelFeatureToggles value:
Flag state is cached per-request from the database. There is no in-memory cache to clear — a change via the API takes effect on the very next request.
Flag reference
The following flags are recognized by EcliPanel. All default totrue (enabled).
| Flag | Default | What it controls |
|---|---|---|
registration | true | New user sign-up via POST /api/users/register. Disabling this prevents new accounts without affecting existing users. |
billing | true | Orders (/api/orders), admin orders (/api/admin/orders), and plans (/api/plans). Disabling hides billing UI and blocks plan purchases. |
ai | true | AI chat (/api/ai/chat), AI Studio (/api/ai/studio), and model completions. Disabling removes AI sections from the nav. |
dns | true | Organisation DNS zone management (/api/organisations/:id/dns/*). Disabling removes DNS controls from organisation settings. |
ticketing | true | User and admin ticket endpoints (/api/tickets, /api/admin/tickets). Disabling prevents ticket creation and staff replies. |
applications | true | Application forms and submissions for users, admins, and public endpoints. Disabling prevents form submissions. |
oauth | true | OAuth login via GitHub and HackClub, plus the OAuth well-known discovery endpoint. Disabling forces password/passkey-only login. |
tunnels | true | EcliTunnel allocation and device management. Disabling removes tunnel controls from the nav for all users. |
registration
registration
Covers
POST /api/users/register. When disabled, the registration page can still be rendered by the frontend but form submission fails with a 503. Use this during maintenance windows or to run a closed-access deployment where accounts are created only by administrators via the CLI or direct database insertion.billing
billing
Covers all of
/api/orders, /api/admin/orders, and /api/plans. The billing flag also controls whether the Billing nav item is shown to users (the frontend reads /api/public/features). Disable this on instances that use a flat resource allocation model instead of a subscription system.ai
ai
Covers all endpoints under
/api/ai, including chat completions, Studio, and the OpenAI-compatible proxy at /api/ai/openai/v1/*. AI model management in the Staff Portal (/api/admin/ai/models) is not blocked by this flag — only user-facing AI consumption endpoints are gated.dns
dns
Covers any request path matching
/api/organisations/:id/dns/*. Organisation DNS zones are managed via Wings node DNS integration. Disabling this flag is appropriate when your deployment does not include a DNS backend or when the DNS infrastructure is undergoing maintenance.ticketing
ticketing
Covers
/api/tickets and /api/admin/tickets. When disabled, users cannot open new tickets and staff cannot reply through the portal. Existing ticket data is preserved; the flag only blocks API access.applications
applications
Covers
/api/applications, /api/admin/applications, and /api/public/applications. Application forms include staff applications, beta program sign-ups, and other structured intake flows. Disabling prevents form submissions but not form listings, so the frontend can still display “Applications are currently closed.”oauth
oauth
Covers
/api/oauth and the .well-known/oauth-authorization-server discovery document. Disabling this flag removes GitHub and HackClub login options. Users who registered solely via OAuth and have no password set will be unable to log in; ensure those users set a password before disabling OAuth.tunnels
tunnels
Controls EcliTunnel allocations and device management. Tunnel endpoints (
/api/tunnel/*) are not listed in the middleware’s checks array — the flag is enforced at the nav-config level: the frontend reads /api/public/features and hides the Tunnels nav item when the flag is false. Staff can still reach the Tunnels admin tab regardless of this flag.Additional toggles
ThefeatureToggles.ts defaults object includes several additional flags beyond the eight exposed in the FeatureFlag frontend type:
| Key | Default | Purpose |
|---|---|---|
tempEmailFilter | true | Blocks disposable/temporary email addresses at registration. |
captcha | true | Enables CAPTCHA on login and registration forms. |
captchaInvisible | false | Uses an invisible CAPTCHA variant instead of a visible challenge. |
dedicatedIps | true | Allows users to request dedicated IP addresses for servers. |
panelFeatureToggles settings key. They are not surfaced as frontend FeatureFlag types but are recognized by the backend’s isFeatureEnabled utility.