---
name: "pw-cli"
section: "1"
platform: "linux"
package: "pipewire"
version: "1:1.6.10-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/pw-cli"
---

# pw-cli(1)

The PipeWire Command Line Interface

## NAME

pw-cli - The PipeWire Command Line Interface

## SYNOPSIS

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

## 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

**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

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

**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

**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

**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

**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

**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

**destroy** *object-id*

*Destroy a global object.*

## 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

**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

**send-command** *object-id*

*Send a command to an object.*

## AUTHORS

*The PipeWire Developers \<https://gitlab.freedesktop.org/pipewire/pipewire/issues\>; PipeWire is available from \<https://pipewire.org\>*

## SEE ALSO

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