Offline caching
Download tracks for true offline playback, with on-device decryption for soft-DRM streams.
Nuages is a fast, native SoundCloud client with offline caching, live lyrics, an equalizer and BPM detection — built on a hardened auth API that never ships your developer secrets to a device.
A native experience across every platform — no web wrapper, no compromises.
Download tracks for true offline playback, with on-device decryption for soft-DRM streams.
Synced, line-by-line lyrics pulled from LRCLIB, timed to the exact second of playback.
A real-time parametric EQ with presets, plus automatic tempo detection on every track.
OAuth + PKCE with the developer secret kept server-side. Your credentials never leave the VPS, You only get the session.
One .NET MAUI codebase, four native UIs — media sessions, system integrations and all.
GPU-accelerated carousels, virtualized lists and content-visibility — 60fps everywhere.
Nuages used to embed the SoundCloud developer client_id and
client_secret in the app. Anyone who unpacked a build could read them.
Not anymore.
The client calls POST /api/v1/auth/start with a shared API key.
The server generates the PKCE pair + CSRF state and returns the authorize URL.
Code→token and refresh calls hit the API, which holds the secret — never the device.
The app listens on 127.0.0.1; nginx terminates TLS in front.
ProtectSystem=strict, NoNewPrivileges, syscall filtering.
In-memory sessions, one-shot consumption, automatic pruning.
Credentials live in /etc/nuagesapi/nuagesapi.env, never in the repo.
Every endpoint lives under /api/v1. Auth routes require an
X-Api-Key header; /health is open for probes.
/api/v1/health
open
Liveness probe used by nginx / systemd. Returns { "status": "ok" }.
/api/v1/auth/start
X-Api-Key
Generates the PKCE pair + state server-side, returns the authorize URL.
/api/v1/auth/exchange
X-Api-Key
Validates the session/state, exchanges the code for tokens.
/api/v1/auth/refresh
X-Api-Key
Exchanges a refresh token for a fresh access token.
/api/v1/auth/signout
X-Api-Key
Best-effort revocation of an access token.
curl https://nuages.ruuka.xyz/api/v1/health
Native builds for every desktop and mobile platform.
No app store, no installer to babysit. Nuages installs to a per-user folder and updates silently in the background — no clicks, no prompts, no admin rights.
Nuages_Alpha_Win.zip anywhere.Nuages.exe -install once (or install-windows.ps1).%LOCALAPPDATA%\Programs\Nuages, adds Start Menu + Desktop shortcuts, and launches.Uninstall from Settings › Apps, or Nuages.exe -uninstall.
./install-macos.sh (or drag Nuages.app to Applications).--user installs to ~/Applications without sudo.
./install-linux.sh (add --system for /opt).nuages.Creates a desktop entry & the nuages:// handler.
The install logic is built into the app itself, so there is no separate installer binary and nothing to run as administrator.
Nuages.exe -install%LOCALAPPDATA%\Programs\Nuages, creates
Start Menu and Desktop shortcuts, registers the nuages://
handler, adds an Add/Remove Programs entry, then launches the
installed copy and exits.
Nuages.exe -uninstallnuages://webtoken/…
The leading prefix is trimmed before matching, so -install,
--install, /install and install are all
equivalent. An unrecognised argument is ignored and the app starts normally.
install-windows.ps1 and uninstall-windows.ps1 ship in
the zip as wrappers, since you can’t pass an argument by double-clicking.
On each launch Nuages checks this API for a newer build. If there is one
it downloads it quietly in the background and installs it the next time you
open the app — replacing itself in place and relaunching. No separate
updater, no notification you have to act on. The current version is always
the one served at /api/v1/app/version.