# obsws-cli [![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) A command line interface for OBS Websocket v5 For an outline of past/future changes refer to: [CHANGELOG](CHANGELOG.md) ----- ## Table of Contents - [Installation](#installation) - [Configuration](#configuration) - [Commands](#root-typer) - [License](#license) ## Requirements - Python 3.10 or greater - [OBS Studio 28+][obs-studio] ## Installation ##### *with uv* ```console uv tool install . ``` ##### *with pipx* ```console pipx install . ``` The CLI should now be discoverable as `obsws-cli` ## Configuration #### Flags Pass `--host`, `--port` and `--password` as flags to the root command, for example: ```console obsws-cli --host=localhost --port=4455 --password= --help ``` #### Environment Variables Store and load environment variables from: - A `.env` file in the cwd - `user home directory / .config / obsws-cli / obsws.env` ```env OBS_HOST=localhost OBS_PORT=4455 OBS_PASSWORD= ``` Flags can be used to override environment variables. ## Root Typer - version: Get the OBS Client and WebSocket versions. ```console obsws-cli version ``` ## Sub Typers #### Scene - list: List all scenes. ```console obsws-cli scene list ``` - current: Get the current program scene. ```console obsws-cli scene current ``` - switch: Switch to a scene. - args: ```console obsws-cli scene switch LIVE ``` #### Scene Item - list: List all items in a scene. - args: ```console obsws-cli sceneitem list LIVE ``` - show: Show an item in a scene. - flags: *optional* - --parent: Parent group name - args: ```console obsws-cli sceneitem show START "Colour Source" ``` - hide: Hide an item in a scene. - flags: *optional* - --parent: Parent group name - args: ```console obsws-cli sceneitem hide START "Colour Source" ``` - toggle: Toggle an item in a scene. - flags: *optional* - --parent: Parent group name - args: ```console obsws-cli sceneitem toggle --parent=test_group START "Colour Source 3" ``` - visible: Check if an item in a scene is visible. - flags: *optional* - --parent: Parent group name - args: ```console obsws-cli sceneitem visible --parent=test_group START "Colour Source 4" ``` - transform: Set the transform of an item in a scene. - flags: *optional* - --position-x: X position of the item in the scene - --position-y: Y position of the item in the scene - --scale-x: X scale of the item in the scene - --scale-y: Y scale of the item in the scene ```console obsws-cli sceneitem transform --position-x=556.0 --scale-x=0.7946954965591431 --scale-y=0.7948529124259949 LIVE "Window Capture" ``` #### Scene Collections - list: List all scene collections. ```console obsws-cli scenecollection list ``` - current: Get the current scene collection. ```console obsws-cli scenecollection current ``` - switch: Switch to a scene collection. - args: ```console obsws-cli scenecollection switch test-collection ``` - create: Create a new scene collection. - args: ```console obsws-cli scenecollection create test-collection ``` #### Group - list: List groups in a scene. - args: ```console obsws-cli group list START ``` - show: Show a group in a scene. - args: ```console obsws-cli group show START "test_group" ``` - hide: Hide a group in a scene. - args: ```console obsws-cli group hide START "test_group" ``` - toggle: Toggle a group in a scene. - args: ```console obsws-cli group toggle START "test_group" ``` - status: Get the status of a group in a scene. - args: ```console obsws-cli group status START "test_group" ``` #### Input - list: List all inputs. - flags: *optional* - --input: Filter by input type. - --output: Filter by output type. - --colour: Filter by colour source type. ```console obsws-cli input list obsws-cli input list --input --colour ``` - mute: Mute an input. - args: ```console obsws-cli input mute "Mic/Aux" ``` - unmute: Unmute an input. - args: ```console obsws-cli input unmute "Mic/Aux" ``` - toggle: Toggle an input. ```console obsws-cli input toggle "Mic/Aux" ``` #### Record - start: Start recording. ```console obsws-cli record start ``` - stop: Stop recording. ```console obsws-cli record stop ``` - status: Get recording status. ```console obsws-cli record status ``` - toggle: Toggle recording. ```console obsws-cli record toggle ``` - resume: Resume recording. ```console obsws-cli record resume ``` - pause: Pause recording. ```console obsws-cli record pause ``` #### Stream - start: Start streaming. ```console obsws-cli stream start ``` - stop: Stop streaming. ```console obsws-cli stream stop ``` - status: Get streaming status. ```console obsws-cli stream status ``` - toggle: Toggle streaming. ```console obsws-cli stream toggle ``` #### Profile - list: List profiles. ```console obsws-cli profile list ``` - current: Get the current profile. ```console obsws-cli profile current ``` - switch: Switch to a profile. - args: ```console obsws-cli profile switch test-profile ``` - create: Create a new profile. - args: ```console obsws-cli profile create test-profile ``` - remove: Remove a profile. - args: ```console obsws-cli profile remove test-profile ``` #### Replay Buffer - start: Start the replay buffer. ```console obsws-cli replaybuffer start ``` - stop: Stop the replay buffer. ```console obsws-cli replaybuffer stop ``` - status: Get the status of the replay buffer. ```console obsws-cli replaybuffer status ``` - save: Save the replay buffer. ```console obsws-cli replaybuffer save ``` #### Studio Mode - enable: Enable studio mode. ```console obsws-cli studiomode enable ``` - disable: Disable studio mode. ```console obsws-cli studiomode disable ``` - toggle: Toggle studio mode. ```console obsws-cli studiomode toggle ``` - status: Get the status of studio mode. ```console obsws-cli studiomode status ``` #### Virtual Cam - start: Start virtual camera. ```console obsws-cli virtualcam start ``` - stop: Stop virtual camera. ```console obsws-cli virtualcam stop ``` - toggle: Toggle virtual camera. ```console obsws-cli virtualcam toggle ``` - status: Get the status of the virtual camera. ```console obsws-cli virtualcam status ``` ## License `obsws-cli` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license. [obs-studio]: https://obsproject.com/