Skip to main content
Open source · Self-hostable · Apache 2.0

Open source remote config and feature flags.
You run it yourself.

Nona is an open source remote config and feature flag service for teams that want control over managed convenience. Self-host it with Docker, fetch config from any platform, and keep the infrastructure in your own hands.

If you want a globally managed service with minimal ops, Firebase is the stronger fit. Nona is for teams that want an open source system they can inspect, self-host, and own.

Start with the documentation for setup, SDKs, feature flags, and migration guides.

Built in public for teams that want remote config without platform lock-in. Read why we open sourced Nona.

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

Nona is for teams that want a straightforward runtime config system they can run themselves. It is intentionally simpler than a fully managed feature-management platform.

Feature Flags

Ship code with features hidden behind a flag. Enable or disable them per environment from the dashboard without a redeploy.

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 when control matters more than convenience.

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.

Shareable Parameter Links

Generate a temporary, no-login link to view or edit a single parameter — scoped to one value, expiring, revocable, and audited. Hand a value to a teammate or client without giving them an account. Learn more →

Who Nona is for

The product makes more sense when the tradeoff is explicit.

Use Nona if...

  • You want an open source tool you can inspect and modify.
  • You are comfortable running Docker and owning the infrastructure.
  • You want plain HTTP portability across web, mobile, and backend apps.
  • You want a practical migration path away from Firebase Remote Config.

Do not use Nona if...

  • You want globally managed infrastructure with minimal ops.
  • You want a vendor to own uptime, incident response, and support.
  • You need a broader feature-management platform with advanced targeting and experimentation.
  • You do not want to think about hosting, backups, or deployment at all.

How it works

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

1

Create a project

Self-host Nona with Docker. 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
}

A different tradeoff from Firebase Remote Config

Firebase is stronger if you want a managed global service. Nona is stronger if you want an open source system you can self-host, inspect, and control.

FeatureNonaFirebase
Open source (Apache 2.0 licence)
Self-hostable
Managed global infrastructure
Vendor-operated reliability and support
No Google account required
Works without a mobile SDK
REST API — any language
.NET / NuGet client
Migration tool from Firebase
No vendor lock-in
Shareable parameter links (no account)
Feature flags
Mobile remote config
Multiple environments

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

Why Nona exists

We built Nona because remote config should be boring infrastructure

Too many teams have to choose between moving fast and keeping control. We wanted a remote config system that stays simple: self-hostable, inspectable, portable across languages, and practical to migrate to from Firebase Remote Config.

The long version covers the product decisions, the open source reasoning, and the mission behind the project.

In the article

  • Why vendor lock-in is the wrong default for runtime configuration
  • How open source shaped the product architecture from the start
  • What we are trying to make easier for mobile and backend teams
Read the story

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.

Start self-hosting Nona

Open source. Self-hosted by design.

npm install nona-clientchoco install nona-cli