[package] name = "butterfly-agent" version = "0.2.0" edition = "2021" description = "Butterfly Desktop Agent — captures display from a VM, encodes as H.264/JPEG, streams via WebSocket, receives and executes remote control commands" [features] default = ["h264"] h264 = ["openh264"] [dependencies] # Async runtime tokio = { version = "1", features = ["full"] } # WebSocket client tokio-tungstenite = { version = "0.24", features = ["connect"] } futures-util = "0.3" # Screen capture (DXGI on Windows, X11 on Linux, CoreGraphics on macOS) scrap = "0.5" # Input simulation (SendInput on Windows, XTest on Linux, CGEvent on macOS) enigo = "0.2" # Image encoding (JPEG fallback) image = "0.25" # H.264 encoding (Cisco OpenH264 — software, cross-platform, ~5-15ms encode) openh264 = { version = "0.6", optional = true } # Conditional compilation cfg-if = "1" # Serialization serde = { version = "1", features = ["derive"] } serde_json = "1" # CLI argument parsing clap = { version = "4", features = ["derive"] } # Logging log = "0.4" env_logger = "0.11" # UUID for agent identification uuid = { version = "1", features = ["v4"] } # Error handling anyhow = "1" # HTTP client (for REST API session creation) reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] } [profile.release] opt-level = 3 lto = true codegen-units = 1