Overall Implementation Coverage: ~85% of OBS WebSocket v5 specification
The obs-cmd tool provides comprehensive coverage of OBS functionality with particular strength in scene management, outputs, inputs, and UI features. The modular architecture using Rust and the obws library provides a solid foundation for automation workflows. Recent additions have significantly improved input management capabilities, addressing previous critical gaps.
- GetVersion - Full implementation showing OBS/WebSocket version info, platform, and available requests
- TriggerHotkeyByName - Complete hotkey triggering by name
- Profile Management: GetProfileList, SetCurrentProfile, CreateProfile, RemoveProfile
- Video Settings: GetVideoSettings, SetVideoSettings (resolution, FPS control)
- Stream Service: GetStreamServiceSettings, SetStreamServiceSettings (RTMP configuration)
- Recording Directory: GetRecordDirectory, SetRecordDirectory
- Scene Collections: GetSceneCollectionList, SetCurrentSceneCollection, CreateSceneCollection (fully implemented)
- Basic Scene Operations: GetSceneList, GetCurrentProgramScene, SetCurrentProgramScene, CreateScene, RemoveScene, SetSceneName
- Transition Management: GetSceneTransitionList, GetCurrentSceneTransition, SetCurrentSceneTransition, SetCurrentSceneTransitionDuration, TriggerStudioModeTransition
- Studio Mode Control: GetStudioModeEnabled, SetStudioModeEnabled (enable/disable/toggle)
- Preview Scene Control: GetCurrentPreviewScene, SetCurrentPreviewScene (studio mode only)
- Basic Operations: GetSceneItemList, CreateSceneItem, RemoveSceneItem, DuplicateSceneItem
- Visibility Control: GetSceneItemEnabled, SetSceneItemEnabled (show/hide/toggle)
- Lock Control: GetSceneItemLocked, SetSceneItemLocked (lock/unlock)
- Transform Control: GetSceneItemTransform, SetSceneItemTransform (position, scale, rotation, crop)
- Order Control: GetSceneItemIndex, SetSceneItemIndex (Z-order management)
- Blend Mode Control: GetSceneItemBlendMode, SetSceneItemBlendMode
- Group Support: Handles nested sources using "Group/SourceName" syntax
- Streaming: GetStreamStatus, StartStream, StopStream, ToggleStream (full streaming control)
- Recording: GetRecordStatus, StartRecord, StopRecord, ToggleRecord
- Recording Advanced: PauseRecord, ResumeRecord, ToggleRecordPause, CreateRecordChapter (Hybrid MP4 support)
- Virtual Camera: GetVirtualCamStatus, StartVirtualCam, StopVirtualCam, ToggleVirtualCam
- Replay Buffer: GetReplayBufferStatus, StartReplayBuffer, StopReplayBuffer, ToggleReplayBuffer, SaveReplayBuffer, GetLastReplayBufferReplay
Missing Features:
- Stream caption support (SendStreamCaption)
- Media Control: GetMediaInputStatus, SetMediaInputCursor, TriggerMediaInputAction (Play, Pause, Stop, Restart)
- Missing: OffsetMediaInputCursor (cursor position offset functionality)
- Studio Mode: GetStudioModeEnabled, SetStudioModeEnabled
- Monitor Management: GetMonitorList
- Projectors: OpenVideoMixProjector (fullscreen), OpenSourceProjector (source-specific)
- Implemented: SaveSourceScreenshot (with format, compression, dimension options)
- Missing Core Functionality:
- GetSourceActive (source active/show state)
- GetInputList (list all inputs/sources)
- GetInputKindList (available input types)
- CreateInput (create new sources)
- RemoveInput (remove sources)
- SetInputName (rename sources)
- GetInputSettings / SetInputSettings (source configuration)
- GetInputDefaultSettings (default settings for input types)
- GetInputMute / SetInputMute / ToggleInputMute (audio mute control)
- GetInputVolume / SetInputVolume (audio volume control)
- Advanced Input Control: Audio balance, sync offset, monitor type, audio tracks, deinterlacing
- Input properties access (GetInputPropertiesListPropertyItems, PressInputPropertiesButton)
- Implemented: SetSourceFilterEnabled (enable/disable/toggle filters)
- Missing Core Functionality:
- GetSourceFilterList (list filters on source)
- GetSourceFilterKindList (available filter types)
- GetSourceFilterDefaultSettings (default filter settings)
- CreateSourceFilter (create new filters)
- RemoveSourceFilter (remove filters)
- SetSourceFilterName (rename filters)
- GetSourceFilter (get filter info)
- SetSourceFilterIndex (reorder filters)
- SetSourceFilterSettings (configure filter settings)
Missing Dedicated Transition Requests:
- GetTransitionKindList (list available transition types)
- SetCurrentSceneTransitionSettings (configure transition settings)
- GetCurrentSceneTransitionCursor (get transition cursor position)
- SetTBarPosition (control T-bar position)
Note: Basic transition switching is handled through the Scenes module, but dedicated transition configuration requests are missing
Implemented: Basic streaming control (start/stop/toggle/status) Missing Features:
- SendStreamCaption (CEA-608 caption support)
Major Improvements Implemented:
- Input Management: GetInputList, CreateInput, RemoveInput, SetInputName
- Input Settings: GetInputSettings, SetInputSettings, GetInputDefaultSettings
- Audio Controls: GetInputMute/SetInputMute/ToggleInputMute, GetInputVolume/SetInputVolume
- Advanced Audio: Audio balance, sync offset, monitor type, audio tracks configuration
- Input Discovery: GetInputKindList, GetSpecialInputs
Current Status: Full input management suite implemented (experimental status)
Missing Features:
- SplitRecordFile (manual recording file splitting)
- Modular Architecture: Clean separation of concerns with trait-based handlers
- Error Handling: Comprehensive error types using thiserror
- Connection Management: Robust retry logic and health checks
- CLI Design: Intuitive subcommand structure with clap derive macros
- Advanced Features: Studio mode, scene item transforms, recording chapters
- Output Coverage: Complete streaming, recording, virtual camera, replay buffer
- Input Management: Comprehensive input CRUD operations with full audio control
- Filter Management (High) - Full filter lifecycle: create, remove, configure, reorder
- Transition System (Medium) - Dedicated transition configuration and control
- Media Control (Medium) - Complete seeking and position control
- Stream Features (Low) - Caption support and advanced streaming features
- Input Property Access (Low) - Advanced input properties and deinterlacing controls
- Expand Filter System - Add comprehensive filter management
- Dedicated Transition Control - Implement missing transition-specific requests
- Enhanced Media Control - Add cursor offset functionality
- Advanced Recording Features - Implement manual file splitting
- Stream Caption Support - Add SendStreamCaption request
- Complete Input Property Access - Implement advanced input properties controls
- Add Comprehensive Tests - Unit tests for all handler modules
- Documentation Updates - Update AGENTS.md with architectural decisions
- Error Recovery - Implement retry logic for failed requests
- Batch Operations - Support for WebSocket request batching
- Event Subscription - Allow configurable event subscriptions
obs-cmd provides a comprehensive foundation for OBS automation with excellent coverage of core functionality. The modular Rust architecture handles complex operations well, with particular strengths in scene management, input management, and output control. Recent additions have addressed the major gaps in input management, making it a robust tool for OBS automation workflows.