Skip to main content
Open source · MIT licence · Self-hostable

Feature flags and remote config.
Made for developers.

The open source alternative to Cloud Remote Config like Firebase and AWS Config. Toggle feature flags, update mobile apps without app store releases, and control your application behaviour in real time — from your own infrastructure.

GET /v1/config/my-app/production
{
  "checkout_v2":   true,
  "dark_mode":     false,
  "banner_text":   "Summer sale — 20% off",
  "max_upload_mb": 50,
  "maintenance":   false
}

Built for real developer workflows

A CDN for configuration which allows globally distributed applications to fetch their config with low latency. Perfect for feature flags, mobile app configuration, A/B testing, and any scenario where you want to change application behaviour in real time without redeploying.

Feature Flags

Ship code with features hidden behind a flag. Enable them per environment from the dashboard — zero redeploy, zero risk. Gradual rollouts, beta previews, instant rollback.

Mobile Remote Config

Update iOS, Android, React Native, and Flutter apps without submitting a new build. Change copy, toggle UI, adjust limits, or kill a broken feature — instantly, from the dashboard.

Kill Switches

Something's broken in production? Flip a flag and disable the feature in seconds. No hotfix, no incident-driven deploy, no stress.

Multi-environment Config

Separate config for dev, staging, and production — isolated by API key. The same app code behaves differently per environment without changing a single line.

Secure by Default

HTTPS on every request. Per-project, per-environment API keys. Self-host on your own infrastructure for complete data sovereignty.

Any Language, No SDK

One GET request returns all your config as JSON. Works with JavaScript, Python, Go, Ruby, Swift, Kotlin, Rust — anything that can make an HTTP call.

How it works

Three steps to add remote config and feature flags to any app

1

Create a project

Self-host Nona with Docker or use the hosted service. Create a project and define your environments — production, staging, development.

2

Add your flags and config

Set key-value pairs in the dashboard: checkout_v2 = false, banner_text = "Hello". Changes take effect immediately.

3

Fetch in your app

One GET request. All config returned as JSON. Update values anytime from the dashboard — no rebuild, no redeploy, no app store submission.

JavaScript · React Native · Node.js
import { createClient } from 'nona-client'

const nona = createClient({
  apiKey: process.env.NONA_API_KEY
})

const config = await nona.get('my-app', 'production')

if (config.checkout_v2) {
  // show new checkout UI
}
curl · any platform
curl https://api.nonaconfig.com/v1/config/my-app/production \
  -H "X-API-Key: $NONA_API_KEY"
C# · .NET
var client = new NonaClient(apiKey);
var config = await client.GetAsync("my-app", "production");

if (config.GetBool("checkout_v2"))
{
    // show new checkout UI
}

The open source Firebase Remote Config alternative

Same remote configuration and feature flag capabilities. No Google account. No lock-in. Migrate in minutes.

FeatureNonaFirebase
Open source (MIT licence)
Self-hostable
No Google account required
Works without a mobile SDK
REST API — any language
.NET / NuGet client
Migration tool from Firebase
Free forever
No vendor lock-in
Feature flags
Real-time config updates
Multiple environments

Already on Firebase Remote Config? The Nona CLI can migrate your parameters automatically.

Frequently asked questions

Nona is an open source remote configuration and feature flag service. Store key-value pairs in the dashboard, fetch them at runtime via a single REST API call. Update feature flags, mobile app config, and application settings instantly — no redeployment required.

Get started with Nona

Open source. Self-hostable. Free forever.

npm install nona-clientchoco install nona-cli