Viewing

1. LiveKit Meet (Browser)

Quickest way to test.

  1. Generate an operator token:

    ./scripts/generate_token.py \
      --api-key YOUR_API_KEY \
      --api-secret YOUR_SECRET \
      --room robot-room \
      --identity operator-001 \
      --role operator
    
  2. Go to meet.livekit.io

  3. Enter:

    • URL: wss://your-livekit-server.com

    • Token: (paste the token)

  4. Click Connect

2. LiveKit CLI

For debugging or headless testing.

livekit-cli join-room \
  --url wss://your-livekit-server.com \
  --api-key YOUR_API_KEY \
  --api-secret YOUR_SECRET \
  --room robot-room \
  --identity viewer

3. Custom Web App

Use the LiveKit JavaScript SDK.

import { Room } from 'livekit-client';

const room = new Room();
await room.connect('wss://your-livekit-server.com', token);

room.on('trackSubscribed', (track, publication, participant) => {
  if (track.kind === 'video') {
    const element = track.attach();
    document.getElementById('video-container').appendChild(element);
  }
});

Install:

npm install livekit-client

Token Roles

Role

Can Publish

Can Subscribe

Use Case

robot

Yes

Yes

asimov-manager

operator

Audio only

Yes

Viewing + teleop

Generate tokens with scripts/generate_token.py:

# Robot token (long-lived)
./scripts/generate_token.py --role robot --ttl 8760

# Operator token (short-lived)
./scripts/generate_token.py --role operator --ttl 24