pw-cli(1) General Commands Manual pw-cli(1)

# [NAME](#NAME)

pw-cli - The PipeWire Command Line Interface

# [SYNOPSIS](#SYNOPSIS)

**pw-cli** \[*command*]

# [DESCRIPTION](#DESCRIPTION)

Interact with a PipeWire instance.

When a command is given, **pw-cli** will execute the command and exit

When no command is given, **pw-cli** starts an interactive session with the default PipeWire instance *pipewire-0*.

Connections to other, remote instances can be made. The current instance name is displayed at the prompt.

Note that **pw-cli** also creates a local PipeWire instance. Some commands operate on the current (remote) instance and some on the local instance, such as module loading.

Use the 'help' command to list the available commands.

# [GENERAL COMMANDS](#GENERAL_COMMANDS)

**help | h**

Show a quick help on the commands available. It also lists the aliases for many commands.

**quit | q**

Exit from **pw-cli**

**list-vars**

List all currently known variables and their type. Some commands create objects that are identified with a variable.

# [MODULE MANAGEMENT](#MODULE_MANAGEMENT)

Modules are loaded and unloaded in the local instance, thus the pw-cli binary itself and can add functionality or objects to the local instance. It is not possible in PipeWire to load modules in another instance.

**load-module name \[arguments...]**

Load a module specified by its name and arguments in the local instance. For most modules it is OK to be loaded more than once.

This command returns a module variable that can be used to unload the module.

The local module is *not* visible in the remote instance. It is not possible in PipeWire to load modules in a remote instance.

**unload-module module-var**

Unload a module, specified by its variable.

# [OBJECT INTROSPECTION](#OBJECT_INTROSPECTION)

**list-objects**

List the objects of the current instance.

Objects are listed with their *id*, *type* and *version*.

**info id | all**

Get information about a specific object or *all* objects.

Requesting info about an object will also notify you of changes.

# [WORKING WITH REMOTES](#WORKING_WITH_REMOTES)

**connect \[remote-name]**

Connect to a remote instance and make this the new current instance.

If no remote name is specified, a connection is made to the default remote instance, usually *pipewire-0*.

The special remote name called *internal* can be used to connect to the local **pw-cli** PipeWire instance.

This command returns a remote var that can be used to disconnect or switch remotes.

**disconnect \[remote-var]**

Disconnect from a *remote instance*.

If no remote name is specified, the current instance is disconnected.

**list-remotes**

List all *remote instances*.

**switch-remote \[remote-var]**

Make the specified *remote* the current instance.

If no remote name is specified, the first instance is made current.

# [NODE MANAGEMENT](#NODE_MANAGEMENT)

**create-node factory-name \[properties...]**

Create a node from a factory in the current instance.

Properties are key=value pairs separated by whitespace.

This command returns a *node variable*.

**export-node node-id \[remote-var]**

Export a node from the local instance to the specified instance. When no instance is specified, the node will be exported to the current instance.

# [DEVICE MANAGEMENT](#DEVICE_MANAGEMENT)

**create-device factory-name \[properties...]**

Create a device from a factory in the current instance.

Properties are key=value pairs separated by whitespace.

This command returns a *device variable*.

# [LINK MANAGEMENT](#LINK_MANAGEMENT)

**create-link node-id port-id node-id port-id \[properties...]**

Create a link between 2 nodes and ports.

Port *ids* and Node *ids* can be set to - to automatically select a node or a port.

Port *ids* can be * to automatically link matching ports ids in the nodes.

Properties are key=value pairs separated by whitespace.

This command returns one or more *link variables*.

# [GLOBALS MANAGEMENT](#GLOBALS_MANAGEMENT)

**destroy object-id**

Destroy a global object.

# [PARAMETER MANAGEMENT](#PARAMETER_MANAGEMENT)

**enum-params object-id param-id**

Enumerate params of an object.

*param-id* can also be given as the param short name.

**set-param object-id param-id param-json**

Set param of an object.

*param-id* can also be given as the param short name.

# [PERMISSION MANAGEMENT](#PERMISSION_MANAGEMENT)

**permissions client-id object-id permission**

Set permissions for a client.

*object-id* can be *-1* to set the default permissions.

**get-permissions client-id**

Get permissions of a client.

# [COMMAND MANAGEMENT](#COMMAND_MANAGEMENT)

**send-command object-id**

Send a command to an object.

# [AUTHORS](#AUTHORS)

The PipeWire Developers &lt;https://gitlab.freedesktop.org/pipewire/pipewire/issues&gt;; PipeWire is available from &lt;https://pipewire.org&gt;

# [SEE ALSO](#SEE_ALSO)

[**pipewire(1)**](/man/os/pipewire/pipewire.1), [**pw-mon(1)**](/man/os/pipewire/pw-mon.1),

1.6.11 PipeWire

---

Document: pw-cli(1) from pipewire 1.6.11-r2 (Chainguard OS)
Source: https://gitlab.freedesktop.org/pipewire/pipewire
