Naia
Table of Contents
  1. 1Video Manual
  2. 2Naia OS Live USB
  3. 3Installation
  4. 3.1Naia OS Installation (ISO)
  5. 3.2Linux App Installation
  6. 4Getting Started
  7. 4.1Naia Model Pricing
  8. 4.2naia-0.9-omni-24g Realtime Multimodal Module
  9. 4.3Live Demo
  10. 4.4Naia Model Download
  11. 4.5Naia Model — Developer Guide
  12. 4.6Naia Model Online (planned)
  13. 5Main Screen
  14. 6Chat
  15. 6.1Personal Radio DJ & Exhibition Guide
  16. 7Conversation History
  17. 8Work Progress
  18. 9Skills
  19. 10Channels
  20. 11Agents
  21. 12Diagnostics
  22. 13Workspace
  23. 14Browser
  24. 15Panel Management
  25. 16Voice Chat
  26. 17Settings
  27. 18Tool Details
  28. 19Naia Account
  29. 20Troubleshooting
  30. 21Open Source Usage & Contribution

4.4. Naia Model Download

Naia is an open-source project built on "owning your own AI on your own computer." Instead of handing your conversations to a big-tech cloud, you download the model and run it directly on your own GPU. The model is not limited to Naia OS (the shell) — it's usable generally through an OpenAI-compatible API: any OpenAI SDK, tool, or app works by just changing the endpoint, and you can build new apps on top of it. A license to use the Naia model is offered to individual subscribers (enterprise / multi-seat → contact us), and is activated with a subscription key. Subscription fees go toward improving the Naia open-source project and running the service.

  • Ownership — the model lives on your device. It keeps working even with no internet during the subscription period.
  • Privacy — voice and conversations are processed locally and never leave your machine.
  • Flat rate — no per-token or hourly billing: $10 / month (individual). Revenue funds Naia open-source operation and improvement.
  • Free to use — not limited to naia-os (the shell). It exposes an OpenAI-compatible API, so any OpenAI SDK / tool / app connects by just changing the endpoint, and you can build new apps on top of it. (Developer details → 4.5 Model details (dev))
  • Safety — The model is powerful enough to be misused (e.g. for voice phishing), so we apply voice-watermarking technology for traceability, letting you use it with peace of mind.

The model you'll download is naia-0.9-omni-24g (multilingual real-time voice conversation). Try the 30-second free demo first. If you don't have a GPU, online use (4.6) is also planned once the GPU pool is expanded.

Recommended spec: one 24GB-VRAM GPU (RTX 3090 / 4090, etc.). Prerequisites: NVIDIA driver + podman (or docker) + nvidia-container-toolkit (CDI), ~30GB free disk.

Proceed right below — ① Download → ② Issue subscription key & run → ③ Release & reinstall (switch device).

1. Download

Public image — just pull it. (Licensing is enforced by the token in step 2, not by the download.)

podman pull ghcr.io/nextain/naia-0.9-omni-24g:latest
2. Issue subscription key & run

One click issues a token and builds the run command with it. Please log in first.

Log in

On boot the container uses this token for subscription check + activating this device + decryption (active subscription only). Validity = subscription period, 1 subscription = 1 active device.

First boot takes a few minutes (model loading). Check readiness:

curl -s http://127.0.0.1:8892/health

Active device

None yet. Activates automatically when the container connects with the token above.

Restart / pause (same device)

To briefly stop/start on the SAME device, the command below is enough — the cert persists in the volume, so it reboots offline (no gateway) as the same device (no re-issue, no 409). Don't use step 3 (release) unless you're switching devices or ending the subscription.

podman restart naia-omni

First boot/restart takes a few minutes (model loading) — wait until the health check (step 2) shows ready:true. Connection failures (refused/1006) before that are normal.

3. Release & reinstall (switch device)

To switch devices or reinstall, run the command below — (1) release inside the container (reported to the server, active device freed), (2) remove the container, (3) remove the license volume (clears the released marker = reinstall-ready). Then issue & run again with a new subscription key in step 2.

If you delete the container without releasing (or lose the device), the server's active device is not freed, so new activation is blocked until the subscription period ends (auto-freed at expiry). Release only frees the active-device slot — to finish switching, run step 2 (issue & run) again on the new device.

podman exec naia-omni bash /app/release.sh
podman rm -f naia-omni
podman volume rm naia-omni-license

Connect from naia-os (or any app)

Point naia-os's gateway/backend URL at the running container. Give just the base URL — the path (/v1/realtime) and default model are applied automatically:

  • Same PC: ws://127.0.0.1:8892 — it's local, so plaintext is fine.
  • Another device (remote): connect through a TLS entry point (see Tailscale below). When you give naia-os a hostname, it connects with automatic encryption (wss) for security — but the container's 8892 is plaintext (ws), so hitting 8892 directly over TLS fails (SSL/Websocket error). That's why for remote you use an address with TLS in front (e.g. https://<host>:8443).

The subscription key is used only once, at run time (activation) — for the subscription check and license issuance. Once activated, the container self-verifies the license locally, so clients like naia-os just need to connect to the URL above — 127.0.0.1 (plaintext) on the same PC, or Tailscale (TLS) from another device. There is no separate connection key.

To use it from code (OpenAI-compatible chat / TTS / STT / embeddings / realtime API) → see 4.5 Model details (dev).

Remote access — Tailscale (recommended)

The easiest way to securely reach your home GPU from naia-os on another laptop/phone:

  1. Install Tailscale on both devices and sign in with the same account.
  2. On the GPU PC, set up a TLS entry point once (Tailscale auto-issues and terminates the certificate):
    tailscale serve --bg --https=8443 http://127.0.0.1:8892
    
  3. Set naia-os's backend URL to https://<machine-name>.<tailnet>.ts.net:8443 (path and model auto-applied). Find the machine address with tailscale status.

This way Tailscale takes the TLS and forwards to plaintext 8892, so naia-os's encrypted (wss) connection works correctly. No port forwarding or public IP needed — from home or anywhere.

⚠️ ws://<tailscale-ip>:8892 direct connection does NOT work from naia-os — naia-os upgrades a hostname to wss (TLS), but 8892 is plaintext. Use the --https entry point (:8443) above. (If you have your own code that only uses plaintext ws, a direct tailnet-IP connection is still possible.)

Other remote options (alternatives)

MethodNotes
WireGuardSelf-hosted VPN. The manual version of Tailscale (exchange keys yourself).
Cloudflare Tunnel (cloudflared)Public domain + automatic TLS, no port forwarding.
SSH tunnelssh -L 8892:127.0.0.1:8892 user@gpu-pc — 1:1, simple.
Same LANInside your router, just ws://<lan-ip>:8892.
ngrok / frpTemporary public tunnel (demos/tests).

The wrapper is plain ws. When exposing it to a public network, always put a tunnel/VPN's TLS + auth in front. Tailscale / WireGuard / SSH are encrypted by themselves.

License details

  • Validity = subscription period — the license is valid for the subscription period. It runs offline during that period; internet is only needed at renewal. When it expires the container shuts down automatically — renew and reactivate (step 2) to keep using it.
  • 1 subscription = 1 active device — only one device is active at a time, and while a device is active you cannot issue a new subscription key (normally just one key).
  • Switch device = release (step 3 above) + reactivate on the new device — releasing in the old device's container is reported to the server automatically and frees the active device. Then issue & run again on the new device (step 2). Release alone only frees the slot.
  • Deleting the container without releasing does NOT free the active device — if you remove the container with podman rm (or lose the device), the release isn't reported to the server, so the active device stays and new activation is blocked until the subscription period ends (auto-freed at expiry). Always run the step-3 release before deleting the container.
  • Stop auto-renewal (web) — disabling a subscription key's renewal on the web doesn't void it immediately; it stops renewing, so the active device falls off at the subscription period end (no re-issue until then). To free the active device now, use the container release. Use only if the key leaked.
  • An individual subscription may be used to monetize your own creative work (e.g. VTubing). Enterprise / multi-seat / kiosk / exhibition / resale / product embedding are by separate agreement.
  • Generated audio carries an identifying watermark — the output speech embeds a traceable identifying signal, so misuse such as impersonation, non-consensual voice synthesis, deepfakes or fraud can be traced back to its source. Such illegal or deceptive use is prohibited and may result in subscription termination and legal liability.

Change the conversation model (from 0.91)

Naia comes with a built-in AI to talk with. From 0.91 onward you can swap this conversation AI for a different one. The voice (speaking/listening) and your subscription stay as they are; you only swap out the part that handles the conversation.

  • The default conversation model is a built-in open-weight LLM. It's lightweight and handles multiple languages. You can try something else and revert to the default at any time.
  • Models that are too large won't load. Even with a 24GB graphics card, the speaking/listening features always use around 10GB. So a newly loaded conversation AI is capped at roughly 14GB. Anything larger won't be applied.
  • Conversation won't break even if something goes wrong. If loading a new model fails, it automatically falls back to the model you were using.
  • Individual subscribers have nothing extra to download. Your own subscription alone is enough to make the switch.

The concrete steps to switch it yourself are in the developer guide. We're working on making it so you just pick a model on screen and tap to switch.

Update to a new version (from 0.91)

When a new version comes out, just pull the new image and start it again. Your subscription, device registration, default model, and voice settings are all preserved, and there's no need to re-authenticate. (On the first run of a new version it automatically re-authenticates over the internet, so you need an internet connection when updating.)

# 1) Pull the latest version
podman pull ghcr.io/nextain/naia-0.9-omni-24g:latest

# 2) Clean up only the container (leave the license volume as is)
podman stop naia-omni && podman rm naia-omni

# 3) Re-run the exact run command you used for the first install
#    (mounting the same license volume preserves subscription/device activation)
  • To pin a specific version, write the version like :0.91 instead of :latest. If a new version has a problem, you can roll back the same way by pulling an earlier version tag.
  • ⚠️ Don't press "release device" just to update. Release device is a feature only for switching from your current computer to a different one. If you press it by mistake while trying to update, you'll have to re-authenticate from scratch. As long as you leave the license volume as is, the update happens without any release.

Upcoming models

  • naia-0.9-coding-24g (24GB, coding/agents) — planned
  • naia-0.9-omni-48g (48GB, larger omni) — planned
  • Naia-OS bundled extension — planned as an offline extension that drops straight into the naia-os app. It will auto-detect your GPU, pick the matching model (tier), download and install it in one step (no command line).

All will be offered under the same $10 / month subscription (individual). B2B adoption by separate agreement.