Skip to content
Nuvyntra Labs

Platform integration

Platform integration

Download the exact Release zip, create an empty project, then create / open / close, collections, documents, and an encryption password.

Overview

Step-by-step guides for each host that can open a NuvexaDB .nvx file. Start here, download the zip that matches your OS and CPU, then open the guide for that language.

Public downloads: github.com/nuvyntralabs/NuvexaDB/releases

The current published tag is [v1.0.6](https://github.com/nuvyntralabs/NuvexaDB/releases/tag/v1.0.6). Later tags keep the same zip names. Pick the asset whose suffix matches your machine (osx-arm64, win-x64, linux-x64, …). Do not download every zip.

nuget.org and language package registries are not the install path yet. You add the file from the Release zip (or a CI artifact with the same name).

Guides

HostGuideRelease zip to start with
.NET / .NET MAUIdotnet.mdNuvexaDB-NuGet.zip
Java / Kotlin (desktop)java-kotlin.mdNuvexaDB-Java-<rid>.zip and NuvexaDB-Native-<rid>.zip
Androidandroid.mdNuvexaDB-Android.zip
Swift (macOS / iOS)swift.mdNuvexaDB-Swift-osx-arm64.zip + native zip (macOS) or NuvexaDB-Native-iOS.zip (iOS)
Flutter / Dartflutter.mdNuvexaDB-Flutter-<rid>.zip and the native zip for that host
React Nativereact-native.mdNuvexaDB-React-Native-<rid>.zip plus Android / iOS native packs
Pythonpython.mdNuvexaDB-Python-<rid>.zip and NuvexaDB-Native-<rid>.zip
Node.jsnodejs.mdNuvexaDB-Node-<rid>.zip and NuvexaDB-Native-<rid>.zip
Gogo.mdNuvexaDB-Go-<rid>.zip and NuvexaDB-Native-<rid>.zip
C++cpp.mdNuvexaDB-Cpp-<rid>.zip and NuvexaDB-Native-<rid>.zip

<rid> is the runtime identifier in the file name. Match it to the table below.

MAUI apps that want Room-style CRUD (host picks NuvexaDB or SQLite) can use Plugin.Maui.LocalStore on top of this engine. QueryAsync can run NQL when the backend is Nuvexa. Stay on Nuventra.NuvexaDB when you need Data Studio or NuvexaDatabase.

Native library file names

Language SDKs (except managed .NET) load the Native AOT C ABI. The library file name inside NuvexaDB-Native-*.zip is:

Your machineDownload this zipLibrary file inside the zip
macOS Apple SiliconNuvexaDB-Native-osx-arm64.ziplibnuvexa.dylib
macOS IntelNuvexaDB-Native-osx-x64.ziplibnuvexa.dylib
Windows x64NuvexaDB-Native-win-x64.zipnuvexa.dll
Windows ARM64NuvexaDB-Native-win-arm64.zipnuvexa.dll
Linux x64NuvexaDB-Native-linux-x64.ziplibnuvexa.so
Linux ARM64NuvexaDB-Native-linux-arm64.ziplibnuvexa.so
Android arm64NuvexaDB-Native-android-arm64.ziplibnuvexa.so
iOS device + simulatorNuvexaDB-Native-iOS.zipNuvexa.xcframework (and nuvexa.h)

On v1.0.6 those are the native zips that shipped, including Windows ARM64 and Linux ARM64.

Set NUVEXA_NATIVE_LIB to the full path of that library file (Python, Node, Flutter desktop, JVM fallback). Set NUVEXA_NATIVE_DIR to the folder that contains it (Swift, Go, C++).

Each guide covers

  1. Which Release zip and inner file to download
  2. An empty project
  3. Adding the downloaded package
  4. Create / open / close a .nvx`create` always writes format 2 (format 1 is deprecated and still opens)
  5. Deleting the database file
  6. Collection create / list / rename / drop
  7. Document insert / read / replace / delete
  8. Password choice for an encrypted file

NQL db.<collection>.update / delete needs engine 1.0.2 or later. On 1.0.1 use replace and delete_by_id (or the .NET collection methods).

Encrypted databases — choose a password

Opening an encrypted .nvx without the key fails closed. The engine derives a key-encryption key with Argon2; the file key is AES-256-GCM. Treat the string you pass as EncryptionKey / key as a secret.

Do

  • Use a long random secret or a passphrase of several words (not 1234, not the app name).
  • Generate it once (for example 32 random bytes, then Base64) and store it in the OS keychain, Android Keystore, or iOS Keychain — never in source control or a checked-in config file.
  • Prompt the user when the host is a desktop IDE; the library itself does not show a dialog.
  • Rotate with ChangeEncryptionKey / changeEncryptionKey / change_encryption_key when the account password changes. Close other processes first.
  • Keep a backup of the .nvx before you rekey.

Do not

  • Embed a default key in the binary “for now.”
  • Log the key, put it in crash reports, or send it to analytics.
  • Share one key across unrelated products.
  • Open the same path from two processes at once.

A local demo may use a throwaway string. Production must not.

Related: Language bindings, NQL, File format.

Discussion

Comment on NuvexaDB. The thread lives on this component's GitHub repository (nuvyntralabs/NuvexaDB). Sign in with GitHub — Giscus uses Discussions, Utterances uses Issues.