The platform used to have two names: Raven inside the code (package names, class names, the CLI) and Livqeno on the website, the docs and some SDKs. Both are now Livqeno.
This is a rename only. The API, the wire protocols, the tokens and how everything behaves are the same. For most apps the migration is: install the new package names, change your imports, and rename a few environment variables. The old names keep working for now, so you can do it one step at a time.
Package names
npm
| Before | After |
|---|---|
@ravenkash/rtc | @livqeno/rtc |
@ravenkash/chat | @livqeno/chat |
@ravenkash/client | @livqeno/live (new name, not just a new scope) |
@ravenkash/react | @livqeno/react |
@ravenkash/react-native | @livqeno/react-native |
@ravenkash/server | @livqeno/server |
@ravenkash/cli | @livqeno/cli |
Version numbers carry over, so keep the same version ranges.
@ravenkash/effects was removed, not renamed — see
Effects removed for what to use
instead.
Other languages
| Ecosystem | Before | After |
|---|---|---|
| Flutter (pub) | raven_rtc, raven_chat, raven_live | livqeno_rtc, livqeno_chat, livqeno_live |
| Flutter import | import 'package:raven_rtc/raven_rtc.dart'; | import 'package:livqeno_rtc/livqeno_rtc.dart'; |
| Python (PyPI) | pip install livqeno-sdk, import raven | pip install swalvo, import swalvo |
| Python client | raven.Raven(...), raven.AsyncRaven(...) | swalvo.Swalvo(...), swalvo.AsyncSwalvo(...) |
| Go | github.com/atulsinghhhh/Raven/sdks/go/livqeno, package livqeno | github.com/atulsinghhhh/swalvo-sdks/sdks/go/swalvo, package swalvo |
| Java (Maven) | com.livqeno:livqeno-server, package com.livqeno.server | com.swalvo:swalvo-server, package com.swalvo.server |
| PHP (Composer) | livqeno/livqeno-php, namespace Livqeno\ | swalvo/swalvo-php, namespace Swalvo\ |
| iOS (Swift Package) | LivqenoRTC | SwalvoRTC |
| Android (Gradle) | io.livqeno:livqeno-rtc, package io.livqeno.rtc | io.swalvo:swalvo-rtc, package io.swalvo.rtc |
The Go module still lives in the atulsinghhhh/swalvo-sdks repository. Only the
package directory and package name changed.
Symbol renames
Public names that started with Raven or Livqeno now start with Swalvo.
| Before | After |
|---|---|
Raven, RavenError, isRavenError, RavenClientOptions, RavenHttpClient (server) | Swalvo, SwalvoError, isSwalvoError, SwalvoClientOptions, SwalvoHttpClient |
RavenRoom, RavenChat, RavenLiveStream, RavenVideo, RavenAudio (React) | SwalvoRoom, SwalvoChat, SwalvoLiveStream, SwalvoVideo, SwalvoAudio |
useRaven, useRavenClient, useRavenError, UseRavenResult | useSwalvo, useSwalvoClient, useSwalvoError, UseSwalvoResult |
RavenRoomProps, RavenSnapshot, RavenConnectionState, … | SwalvoRoomProps, SwalvoSnapshot, SwalvoConnectionState, … |
RavenChatError, isRavenChatError, toRavenChatError (chat) | SwalvoChatError, isSwalvoChatError, toSwalvoChatError |
RavenVideoView, RavenTrackKind (Flutter, React Native) | SwalvoVideoView, SwalvoTrackKind |
Livqeno, LivqenoException (Java, PHP) | Swalvo, SwalvoException |
LivqenoRTC (iOS) | SwalvoRTC |
In TypeScript, Dart and Python the old names are still exported as
deprecated aliases of the new ones, so existing code compiles once it points
at the new package, and instanceof works with either name. Python also
keeps a raven import shim (with a deprecation warning). The aliases will be
removed in a future major version. In Go, Java, PHP, Swift and Kotlin the
package coordinates changed, so update the imports when you switch.
Docs and examples now name the client variable swalvo
(const swalvo = new Swalvo({...})). That's only a convention.
Environment variables
| Before | After |
|---|---|
RAVEN_API_KEY, LIVQENO_API_KEY | SWALVO_API_KEY |
RAVEN_API_URL, LIVQENO_API_URL | SWALVO_API_URL |
RAVEN_WEBHOOK_SECRET, LIVQENO_WEBHOOK_SECRET | SWALVO_WEBHOOK_SECRET |
RAVEN_ENV, LIVQENO_ENV | SWALVO_ENV |
RAVEN_PUBLIC_API_URL | SWALVO_PUBLIC_API_URL |
RAVEN_TOKEN (CLI) | SWALVO_TOKEN |
RAVEN_CONFIG_DIR (CLI) | SWALVO_CONFIG_DIR |
RAVEN_DASHBOARD_URL (CLI) | SWALVO_DASHBOARD_URL |
The CLI, and the Go and Java SDKs (for SWALVO_ENV), check SWALVO_*
first, then RAVEN_*, then LIVQENO_*. Using an old name prints one
deprecation warning per process and never fails.
The TypeScript server SDK reads no environment variables itself, so rename
them where your own code reads them:
new Swalvo({ apiKey: process.env.SWALVO_API_KEY }).
Webhook headers
See Webhooks for the delivery format.
Every delivery now carries the signature and metadata under the new names, and still under the old ones:
| New (read this) | Legacy (still sent) |
|---|---|
Swalvo-Signature | Raven-Signature |
Swalvo-Event-Id | Raven-Event-Id |
Swalvo-Event-Type | Raven-Event-Type |
Both carry the same value. The SDK verifiers read swalvo-signature first,
then raven-signature (in TypeScript, verifyWebhook also accepts the
whole headers object). If you read the header yourself:
const signature = req.header('swalvo-signature') ?? req.header('raven-signature');The signing scheme (t=<unix>,v1=<hmac-sha256> over
"<timestamp>.<raw body>") and your webhook secrets are unchanged.
React CSS classes and custom properties (breaking)
The class names and CSS custom properties that @livqeno/react puts on its
components changed prefix:
| Before | After |
|---|---|
.raven-video, .raven-chat, .raven-participant-tile, .raven-button, … | .swalvo-video, .swalvo-chat, .swalvo-participant-tile, .swalvo-button, … |
--raven-primary, --raven-bg, --raven-radius, … | --swalvo-primary, --swalvo-bg, --swalvo-radius, … |
data-raven-speaking, data-raven-connection-quality | data-swalvo-speaking, data-swalvo-connection-quality |
There are no aliases for these. If your stylesheets target .raven-*
selectors, override --raven-* variables, or select on data-raven-*
attributes, search for raven- in your CSS and rename it. If you only use
the components with their default look, there is nothing to do.
CLI
- The command is now
swalvo(swalvo login,swalvo init, …), from@livqeno/cli. The oldravencommand still works but prints a deprecation notice. - Settings live in
~/.swalvo/. Any file not there yet is read from~/.raven/, so you stay logged in. Nothing is moved or deleted. swalvo initwritesswalvo.json; an existingraven.jsonis still read.- In CI, set
SWALVO_TOKENinstead ofRAVEN_TOKEN.
Domains
Public hostnames move from livqeno.com to livqeno.com:
| Before | After |
|---|---|
https://api.livqeno.com | https://api.livqeno.com |
https://app.livqeno.com (dashboard) | https://app.livqeno.com |
https://docs.livqeno.com | https://docs.livqeno.com |
turn.livqeno.com, ingest.livqeno.com, rtmp.livqeno.com, hls.livqeno.com, … | turn.livqeno.com, ingest.livqeno.com, rtmp.livqeno.com, hls.livqeno.com, … |
security@livqeno.com, support@… | security@livqeno.com, support@… |
If you set the API URL yourself (SWALVO_API_URL or a baseUrl option),
update it. If you allow-list our hostnames in a Content Security Policy or
a firewall, add the livqeno.com ones. Until livqeno.com is live, keep the
livqeno.com entries as well.
What did not change
- Error codes keep their
RAVEN_prefix (RAVEN_ROOM_NOT_FOUND, …). Your code matches on them, so they will not be renamed. - The REST API: paths, bodies and pagination are identical.
- Tokens: same JWTs and claims (
aud: raven-rtc,aud: raven-chat). Tokens minted before the rename stay valid until they expire. - API keys and webhook secrets: nothing to rotate.
- Wire protocols: signaling and chat WebSocket protocols, subprotocol names and data-channel labels are unchanged, so old and new SDKs can share a room.
- End-to-end encryption: key derivation labels are unchanged, so old and new clients can join the same encrypted call.
- On-device storage: offline outbox keys are unchanged.
- Behaviour: rooms, chat, live streaming and limits work as before.
Checklist
- Swap the packages. Replace every
@ravenkash/*dependency with the matching@swalvo/*one (@ravenkash/client→@livqeno/live). For other languages, use the table above. - Update imports. Change the import paths. With the deprecated aliases in place this is enough to get the build green.
- Rename the symbols. Replace
Raven*,useRaven*andLivqeno*withSwalvo*anduseSwalvo*. - Rename environment variables to
SWALVO_*in every environment (local.env, CI, staging, production). - Webhooks. If you read the signature header yourself, read
swalvo-signaturefirst,raven-signaturesecond. - CSS. Rename any
.raven-*selectors,--raven-*variables anddata-raven-*attribute selectors toswalvo. - CLI. Install
@livqeno/cli, useswalvoin scripts, and setSWALVO_TOKENin CI. - Hostnames. Update any hard-coded
livqeno.comURLs and CSP or firewall allow-lists. - Leave error code handling alone.
RAVEN_*codes stay as they are. - Check for warnings. Run your app and look for deprecation warnings about old environment variable names or aliases. When there are none, you're done.