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.
{
"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
Create a project
Self-host Nona with Docker or use the hosted service. Create a project and define your environments — production, staging, development.
Add your flags and config
Set key-value pairs in the dashboard: checkout_v2 = false, banner_text = "Hello". Changes take effect immediately.
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.
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 https://api.nonaconfig.com/v1/config/my-app/production \
-H "X-API-Key: $NONA_API_KEY"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.
Already on Firebase Remote Config? The Nona CLI can migrate your parameters automatically.
Available everywhere
Official packages for every major ecosystem
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