
# node

<!---MARKER_GEN_START-->
Manage Swarm nodes

### Subcommands

| Name                         | Description                                                       |
|:-----------------------------|:------------------------------------------------------------------|
| [`demote`](node_demote.md)   | Demote one or more nodes from manager in the swarm                |
| [`inspect`](node_inspect.md) | Display detailed information on one or more nodes                 |
| [`ls`](node_ls.md)           | List nodes in the swarm                                           |
| [`promote`](node_promote.md) | Promote one or more nodes to manager in the swarm                 |
| [`ps`](node_ps.md)           | List tasks running on one or more nodes, defaults to current node |
| [`rm`](node_rm.md)           | Remove one or more nodes from the swarm                           |
| [`update`](node_update.md)   | Update a node                                                     |



<!---MARKER_GEN_END-->

## Description

Manage nodes.

