# MatrixRTC SDK (EXPERIMENTAL) `@element-hq/matrixrtc-sdk` is the call model under Element Call, on its own: MatrixRTC memberships and transports, LiveKit connections, publishing, E2EE keys and the media of every member, as observables. It has no UI. Element Call's own `CallViewModel` is meant to become one consumer of it; the design is in [`sdk-plan.md`](../sdk-plan.md). **Status:** interface only. `createRtcSession` returns an object that does nothing. The development harness and its e2e test exist so the implementation can be built against them. ## Using it ```ts import { constant, createRtcSession, E2eeType, MatrixRTCMode, ObservableScope, } from "@element-hq/matrixrtc-sdk"; const scope = new ObservableScope(); const session = createRtcSession( scope, client, // a matrix-js-sdk MatrixClient, logged in and syncing room, // the matrix-js-sdk Room to hold the session in { microphoneEnabled$: constant(true), cameraEnabled$: constant(true), audioInputDeviceId$: constant(undefined), videoInputDeviceId$: constant(undefined), videoProcessor$: constant(undefined), }, { encryptionSystem: { kind: E2eeType.PER_PARTICIPANT }, matrixRTCMode: MatrixRTCMode.Compatibility, }, ); session.join(); session.remoteMembers$.subscribe((members) => { // each member has displayName$, media$ and more; a media track is rendered // by handing it a