Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 17 additions & 36 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 13 additions & 8 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ version = "0.1.0"
edition = "2024"

[dependencies]
async-trait = "0.1"
eframe = { version = "0.37.0", features = ["default_fonts", "wgpu", "persistence"] }
egui = "0.37.0"
egui-wgpu = "0.37.0"
Expand All @@ -18,18 +19,22 @@ tokio = { version = "1", features = ["full", "parking_lot"] }
# egui-wgpu 0.37 requires wgpu ^30.0; "30.0" resolves to a compatible 30.0.x.
wgpu = "30.0"
winit = { version = "0.30.13", features = [ "android-native-activity" ] }
livekit = { version = "0.10.0", features = ["rustls-tls-native-roots"] }
livekit-api = { version = "0.10.0", default-features = false, features = ["access-token"] }
livekit-token-source = { version = "0.1.4", features = ["rustls-tls-native-roots"] }
livekit-capture = { version = "0.1.8", default-features = false, features = ["source-pattern", "source-clock"] }
# livekit = { version = "0.10.0", features = ["rustls-tls-native-roots"] }
# livekit-api = { version = "0.10.0", default-features = false, features = ["access-token"] }
# livekit-token-source = { version = "0.1.4", features = ["rustls-tls-native-roots"] }
# livekit-capture = { version = "0.1.8", default-features = false, features = ["source-pattern", "source-clock"] }
# livekit-protocol = "0.8.2"
# livekit-session = { version = "0.1.0", features = ["rustls-tls-native-roots"] }

# Building against a local rust-sdks checkout (see "Building against a local
# rust-sdks" in README.md). To build against the released crates instead,
# uncomment out the three lines below and comment the ones above:
# livekit = { path = "../rust-sdks/livekit", features = ["rustls-tls-native-roots"] }
# livekit-api = { path = "../rust-sdks/livekit-api", default-features = false, features = ["access-token"] }
# livekit-token-source = { path = "../rust-sdks/livekit-token-source", features = ["rustls-tls-native-roots"] }
# livekit-capture = { path = "../rust-sdks/livekit-capture", default-features = false, features = ["source-pattern", "source-clock"] }
livekit = { path = "../rust-sdks/livekit", features = ["rustls-tls-native-roots"] }
livekit-api = { path = "../rust-sdks/livekit-api", default-features = false, features = ["access-token"] }
livekit-token-source = { path = "../rust-sdks/livekit-token-source", features = ["rustls-tls-native-roots"] }
livekit-capture = { path = "../rust-sdks/livekit-capture", default-features = false, features = ["source-pattern", "source-clock"] }
livekit-protocol = { path = "../rust-sdks/livekit-protocol" }
livekit-session = { path = "../rust-sdks/livekit-session", features = ["rustls-tls-native-roots"] }

[package.metadata.bundle]
name = "LiveKit Client"
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ An example of building a cross-platform, GUI application using the [LiveKit Rust
- [x] Simulate fault scenarios (e.g., reconnect, migration, etc.)
- [x] Send/receive remote procedure calls (RPC)
- [x] Send/receive data streams
- [x] Connect to an agent through a session ([livekit-session](https://github.com/livekit/rust-sdks/tree/main/livekit-session)): text chat, voice, live transcripts, and avatar video
- [x] Dispatch a named agent, optionally targeting one of its deployments, into the room you join (API key and TokenSource methods)

## Building

Expand All @@ -45,6 +47,7 @@ To build against a local checkout of the [LiveKit Rust SDK](https://github.com/l
livekit-api = { path = "../rust-sdks/livekit-api", default-features = false, features = ["access-token"] }
```
These are plain `path` dependencies, so cargo re-resolves automatically — no `cargo update` needed.
`livekit-session` is not published yet, so for now it is always a `path` dependency and the app needs a local `rust-sdks` checkout that includes it.
3. `cargo run` — and rust-analyzer — now build against the local sources.

To return to the published crates, reverse step 2: uncomment the two version lines and comment the `path` lines back out.
1 change: 1 addition & 0 deletions cspell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ words:
- tsid
- unmultiplied
- unorm
- upserted
- videotexture
- viewports
- webrtc
Expand Down
9 changes: 9 additions & 0 deletions src/agent/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
//! The agent feature: a window driving a `livekit_session::Session`, with the
//! agent's state, the conversation feed, and its avatar. Depends on the
//! reusable toolkit in [`crate::ui`] and reuses the participants panel and
//! status bar from [`crate::room`].

pub mod service;
pub mod window;

pub use window::AgentWindow;
Loading
Loading