https://github.com/livekit/server-sdk-ruby
LiveKit Server SDK for Ruby
https://github.com/livekit/server-sdk-ruby
Last synced: 11 months ago
JSON representation
LiveKit Server SDK for Ruby
- Host: GitHub
- URL: https://github.com/livekit/server-sdk-ruby
- Owner: livekit
- License: apache-2.0
- Created: 2021-08-17T22:57:08.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-07-21T18:18:59.000Z (11 months ago)
- Last Synced: 2025-07-21T20:24:55.994Z (11 months ago)
- Language: Ruby
- Size: 1.22 MB
- Stars: 32
- Watchers: 18
- Forks: 22
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README

# LiveKit Server API for Ruby
Use this SDK to interact with LiveKit server APIs and create access tokens from your Ruby backend.
This library is designed to work with Ruby 2.6.0 and above.
## Installation
Add this line to your application's Gemfile:
### Gemfile
```ruby
gem 'livekit-server-sdk'
```
and then `bundle install`.
### Install system-wide
```shell
gem install livekit-server-sdk
```
## Usage
### Creating Access Tokens
Creating a token for participant to join a room.
```ruby
require 'livekit'
token = LiveKit::AccessToken.new(api_key: 'yourkey', api_secret: 'yoursecret')
token.identity = 'participant-identity'
token.name = 'participant-name'
token.video_grant = LiveKit::VideoGrant.new(roomJoin: true, room: 'room-name')
token.attributes = { "mykey" => "myvalue" }
puts token.to_jwt
```
By default, a token expires after 6 hours. You may override this by passing in `ttl` when creating the token. `ttl` is expressed in seconds.
### Setting Permissions with Access Tokens
It's possible to customize the permissions of each participant. See more details at [access tokens guide](https://docs.livekit.io/guides/access-tokens#room-permissions).
### Room Service
`RoomServiceClient` is a Twirp-based client that provides management APIs to LiveKit. You can connect it to your LiveKit endpoint. See [service apis](https://docs.livekit.io/guides/server-api) for a list of available APIs.
```ruby
require 'livekit'
client = LiveKit::RoomServiceClient.new('https://my.livekit.instance',
api_key: 'yourkey', api_secret: 'yoursecret')
name = 'myroom'
client.list_rooms
client.list_participants(room: name)
client.mute_published_track(room: name, identity: 'participant',
track_sid: 'track-id', muted: true)
client.remove_participant(room: name, identity: 'participant')
client.delete_room(room: name)
```
### Egress Service
`EgressServiceClient` is a ruby client to EgressService. Refer to [docs](https://docs.livekit.io/guides/egress) for more usage examples
```ruby
require 'livekit'
# starting a room composite to S3
egressClient = LiveKit::EgressServiceClient.new(
"https://your-url",
api_key: 'key',
api_secret: 'secret'
);
info = egressClient.start_room_composite_egress(
'room-name',
LiveKit::Proto::EncodedFileOutput.new(
file_type: LiveKit::Proto::EncodedFileType::MP4,
filepath: "my-recording.mp4",
s3: LiveKit::Proto::S3Upload.new(
access_key: 'access-key',
secret: 'secret',
region: 'bucket-region',
bucket: 'bucket'
)
)
)
puts info
# starting a track composite to RTMP
urls = Google::Protobuf::RepeatedField.new(:string, ['rtmp://url1', 'rtmps://url2'])
info = egressClient.start_track_composite_egress(
'room-name',
LiveKit::Proto::StreamOutput.new(
protocol: LiveKit::Proto::StreamProtocol::RTMP,
urls: urls
),
audio_track_id: 'TR_XXXXXXXXXXXX',
video_track_id: 'TR_XXXXXXXXXXXX'
)
puts info
```
### Environment Variables
You may store credentials in environment variables. If api-key or api-secret is not passed in when creating a `RoomServiceClient` or `AccessToken`, the values in the following env vars will be used:
- `LIVEKIT_API_KEY`
- `LIVEKIT_API_SECRET`
## License
The gem is available as open source under the terms of Apache 2.0 License.
LiveKit Ecosystem
LiveKit SDKsBrowser · iOS/macOS/visionOS · Android · Flutter · React Native · Rust · Node.js · Python · Unity · Unity (WebGL) · ESP32
Server APIsNode.js · Golang · Ruby · Java/Kotlin · Python · Rust · PHP (community) · .NET (community)
UI ComponentsReact · Android Compose · SwiftUI · Flutter
Agents FrameworksPython · Node.js · Playground
ServicesLiveKit server · Egress · Ingress · SIP
ResourcesDocs · Example apps · Cloud · Self-hosting · CLI