Raven Docs

Installing from source

How to use Raven's SDKs today, before they're published to npm and PyPI.

None of Raven's SDKs are published to a package registry yet. Every npm install @corvidhq/... and pip install command in these docs shows what installation will look like once they are. Raven's source isn't public — this page is for a checkout your Raven contact has already given you access to, not something to clone from a public URL.

Do not pip install raven-sdk. That name already belongs to an unrelated project on PyPI — the checkout's own package is named raven-sdk too, but it will need to be renamed before it can be published; don't assume the local name is what ends up on PyPI.

1. Build the checkout

cd <your Raven checkout>
pnpm install
pnpm --filter "./packages/*" run build

The build step matters: every package's package.json points at dist/, so a package that hasn't been built resolves to nothing and you get a confusing "cannot find module" rather than a useful error.

JavaScript / TypeScript

pnpm, npm, and yarn all understand a filesystem path as a dependency version:

{
  "dependencies": {
    "@corvidhq/rtc": "file:../Raven/packages/sdk",
    "@corvidhq/chat": "file:../Raven/packages/chat-sdk",
    "@corvidhq/client": "file:../Raven/packages/client",
    "@corvidhq/react": "file:../Raven/packages/react-sdk",
    "@corvidhq/react-native": "file:../Raven/packages/react-native-sdk",
    "@corvidhq/server": "file:../Raven/packages/server-sdk"
  }
}

Adjust the relative paths to wherever you cloned Raven, then npm install (or pnpm install). Imports then work exactly as the docs show them:

import { createRTCClient } from '@corvidhq/rtc';
PackagePath in the repo
@corvidhq/rtcpackages/sdk
@corvidhq/chatpackages/chat-sdk
@corvidhq/clientpackages/client
@corvidhq/reactpackages/react-sdk
@corvidhq/react-nativepackages/react-native-sdk
@corvidhq/serverpackages/server-sdk
@corvidhq/clipackages/cli

The CLI

cd Raven/packages/cli
npm link          # puts `raven` on your PATH
raven --version

Or run it without linking:

node /path/to/Raven/packages/cli/dist/index.js --version

Python

pip install -e /path/to/Raven/sdks/python

The -e (editable) install points at your checkout, so pulling new commits updates the package without reinstalling. Then:

from raven import Raven

Flutter

Flutter reads git dependencies directly — no clone or build step needed:

dependencies:
  raven_rtc:
    path: ../path/to/your-checkout/sdks/flutter/raven_rtc
  raven_chat:
    path: ../path/to/your-checkout/sdks/flutter/raven_chat

A path dependency, not a git one — Raven's source isn't a public repository to point flutter pub get at.

3. Run Raven itself

The SDKs need a Raven control plane to talk to. To run one locally:

cp .env.example .env
pnpm infra:up       # Redis, the media server, TURN, the API
pnpm infra:verify   # confirms everything is healthy
pnpm db:migrate     # apply migrations to your Postgres
pnpm db:seed        # optional: a demo developer, project, key, and room

.env needs a DATABASE_URL and DIRECT_URL before any of this works — Postgres is not part of the compose stack. Any Postgres will do; Raven's own deployment uses managed Postgres on Supabase, whose free tier gives you both connection strings in a couple of minutes.

The API is then at http://localhost:4100, with interactive docs at /docs. Point your SDK's apiUrl/endpoint there. See Quickstart for what to do next.

When this page goes away

Once the packages are published to a registry, every install command in these docs becomes literally correct and this page is deleted. Until then, treat any npm install @corvidhq/... you see as aspirational — this page is the one that reflects reality.