Package: zenoh
Version: 1.2.1
Architecture: amd64
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 41
Depends: zenoh-plugin-rest (=1.2.1), zenoh-plugin-storage-manager (=1.2.1), zenohd (=1.2.1)
Filename: 1.2.1/zenoh_1.2.1_amd64.deb
Size: 17460
MD5sum: cb9b1cb575a966cb4947ea62996a1705
SHA1: 6db8d4e813f34f1a7d622cd6128c87367e2cd6d3
SHA256: 6f2cce8171c936648698c99a181f0a4ef3d3588c443848a716c9a74c8ac3a6e2
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: Zenoh: The Zero Overhead Pub/Sub/Query Protocol.
 <img
 src="https://raw.githubusercontent.com/eclipse-zenoh/zenoh/master/zenoh-dragon.png"
 height="150">
 .
 [![CI](https://github.com/eclipse-zenoh/zenoh/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/eclipse-zenoh/zenoh/actions?query=workflow%3ACI+branch%3Amain++)
 [![Documentation
 Status](https://readthedocs.org/projects/zenoh-rust/badge/?version=latest)](https://zenoh-rust.readthedocs.io/en/latest/?badge=latest)
 [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions)
 [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/2GJ958VuHs)
 [![License](https://img.shields.io/badge/License-EPL%202.0-blue)](https://choosealicense.com/licenses/epl-2.0/)
 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
 .
 # Eclipse Zenoh
 .
 The Eclipse Zenoh: Zero Overhead Pub/sub, Store/Query and Compute.
 .
 Zenoh (pronounce _/zeno/_) unifies data in motion, data at rest and
 computations. It carefully blends traditional pub/sub with geo-distributed
 storages, queries and computations, while retaining a level of time and space
 efficiency that is well beyond any of the mainstream stacks.
 .
 Check the website [zenoh.io](http://zenoh.io) and the
 [roadmap](https://github.com/eclipse-zenoh/roadmap) for more detailed
 information.
 .
 -------------------------------
 .
 ## Getting Started
 .
 Zenoh is extremely easy to learn, the best place to master the fundamentals is
 our [getting started guide](https://zenoh.io/docs/getting-started/first-app/).
 .
 -------------------------------
 .
 ## How to install it
 .
 To install the latest release of the Zenoh router (`zenohd`) and its default
 plugins (REST API plugin and Storages Manager plugin) you can do as follows:
 .
 ### Manual installation (all platforms)
 .
 All release packages can be downloaded from
 [https://download.eclipse.org/zenoh/zenoh/latest/](https://download.eclipse.org/zenoh/zenoh/latest/).
 .
 Each subdirectory has the name of the Rust target. See the platforms each
 target corresponds to on
 [https://doc.rust-lang.org/stable/rustc/platform-support.html](https://doc.rust-lang.org/stable/rustc/platform-support.html).
 .
 Choose your platform and download the `.zip` file.
 Unzip it where you want, and run the extracted `zenohd` binary.
 .
 ### Linux Debian
 .
 Add Eclipse Zenoh private repository to the sources list, and install the
 `zenoh` package:
 .
 ```bash
 echo "deb [trusted=yes] https://download.eclipse.org/zenoh/debian-repo/ /" |
 sudo tee -a /etc/apt/sources.list.d/zenoh.list > /dev/null
 sudo apt update
 sudo apt install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 ### MacOS
 .
 Tap our brew package repository and install the `zenoh` formula:
 .
 ```bash
 brew tap eclipse-zenoh/homebrew-zenoh
 brew install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 -------------------------------
 .
 ## Rust API
 .
 * [Docs.rs for Zenoh](https://docs.rs/zenoh/latest/zenoh/)
 .
 -------------------------------
 .
 ## How to build it
 .
 > [!WARNING]
 > Zenoh and its ecosystem are under active development. When you build from
 git, make sure you also build from git any other Zenoh repository you plan to
 use (e.g. binding, plugin, backend, etc.). It may happen that some changes in
 git are not compatible with the most recent packaged Zenoh release (e.g. deb,
 docker, pip). We put particular effort in maintaining compatibility between the
 various git repositories in the Zenoh project.
 .
 Install [Cargo and
 Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html). Zenoh
 can be successfully compiled with Rust stable (>= 1.75.0), so no special
 configuration is required from your side. If you already have the Rust
 toolchain installed, make sure it is up-to-date with:
 .
 ```bash
 rustup update
 ```
 .
 To build Zenoh, just type the following command after having followed the
 previous instructions:
 .
 ```bash
 cargo build --release --all-targets
 ```
 .
 Zenoh's router is built as `target/release/zenohd`. All the examples are built
 into the `target/release/examples` directory. They can all work in
 peer-to-peer, or interconnected via the zenoh router.
 .
 -------------------------------
 .
 ## Quick tests of your build
 .
 ### Peer-to-peer tests
 .
 * **pub/sub**
   * run: `./target/release/examples/z_sub`
   * in another shell run: `./target/release/examples/z_put`
   * the subscriber should receive the publication.
 .
 * **get/queryable**
   * run: `./target/release/examples/z_queryable`
   * in another shell run: `./target/release/examples/z_get`
   * the queryable should display the log in its listener, and the get should
 receive the queryable result.
 .
 ### Routed tests
 .
 > [!NOTE]
 > **Windows users**: to properly execute the commands below in PowerShell you
 need to escape `"` characters as `\"`.
 .
 * **put / store / get**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell run:
 .
     ```sh
     ./target/release/examples/z_put`
     ```
 .
   * then run
 .
     ```sh
     ./target/release/examples/z_get
     ```
 .
   * the get should receive the stored publication.
 .
 * **REST API using `curl` tool**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, do a publication via the REST API:
 .
     ```sh
     curl -X PUT -d '"Hello World!"' http://localhost:8000/demo/example/test
     ```
 .
   * get it back via the REST API:
 .
     ```sh
     curl http://localhost:8000/demo/example/test
     ```
 .
 * **router admin space via the REST API**
   * run the Zenoh router with permission to perform config changes via the
 admin space, and with a memory storage:
 .
     ```sh
     ./target/release/zenohd --rest-http-port=8000 --adminspace-permissions=rw
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, get info of the zenoh router via the zenoh admin space
 (you may use `jq` for pretty json formatting):
 .
     ```sh
     curl -s http://localhost:8000/@/local/router | jq
     ```
 .
   * get the volumes of the router (only memory by default):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/volumes/*' | jq
     ```
 .
   * get the storages of the local router (the memory storage configured at
 startup on '/demo/example/**' should be present):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
   * add another memory storage on `/demo/mystore/**`:
 .
     ```sh
     curl -X PUT -H 'content-type:application/json' -d
 '{"key_expr":"demo/mystore/**","volume":"memory"}'
 http://localhost:8000/@/local/router/config/plugins/storage_manager/storages/mystore
     ```
 .
   * check it has been created:
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
 ### Configuration options
 .
 A Zenoh configuration file can be provided via CLI to all Zenoh examples and
 the Zenoh router.
 .
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file and
 the available options.
 .
 See other examples of Zenoh usage in [examples/](examples)
 .
 > [!NOTE]
 > **Zenoh Runtime Configuration**: Starting from version 0.11.0-rc, Zenoh
 allows for configuring the number of worker threads and other advanced options
 of the runtime. For guidance on utilizing it, please refer to the
 [doc](https://docs.rs/zenoh-runtime/latest/zenoh_runtime/enum.ZRuntime.html).
 .
 -------------------------------
 .
 ## Zenoh router command line arguments
 .
 `zenohd` accepts the following arguments:
 .
 * `--adminspace-permissions <[r|w|rw|none]>`: Configure the read and/or write
 permissions on the admin space. Default is read only.
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file. All
 properties of this configuration are optional, so you may not need such a large
 configuration for your use-case.
 * `--cfg <KEY>:<VALUE>`: allows you to change specific parts of the
 configuration right after it has been constructed. VALUE must be a valid JSON5
 value, and key must be a path through the configuration file, where each
 element is separated by a `/`. When inserting in parts of the config that are
 arrays, you may use indexes, or may use `+` to indicate that you want to append
 your value to the array. `--cfg` passed values will always override any
 previously existing value for their key in the configuration.
 * `-l, --listen <ENDPOINT>...`: An endpoint on which this router will listen
 for incoming sessions.
   Repeat this option to open several listeners. By default, `tcp/[::]:7447` is
 used. The following endpoints are currently supported:
   * TCP: `tcp/<host_name_or_IPv4_or_IPv6>:<port>`
   * UDP: `udp/<host_name_or_IPv4_or_IPv6>:<port>`
   * [TCP+TLS](https://zenoh.io/docs/manual/tls/): `tls/<host_name>:<port>`
   * [QUIC](https://zenoh.io/docs/manual/quic/): `quic/<host_name>:<port>`
 * `-e, --connect <ENDPOINT>...`: An endpoint this router will try to connect
 to. Repeat this option to connect to several peers or routers.
 * `--no-multicast-scouting`: By default zenohd replies to multicast scouting
 messages for being discovered by peers and clients.
   This option disables this feature.
 * `-i, --id <hex_string>`: The identifier (as an hexadecimal string - e.g.:
 A0B23...) that zenohd must use.
    **WARNING**: this identifier must be unique in the system! If not set, a
 random unsigned 128bit integer will be used.
 * `--no-timestamp`: By default zenohd adds a HLC-generated Timestamp to each
 routed Data if there isn't already one.
   This option disables this feature.
 * `-P, --plugin [<PLUGIN_NAME> | <PLUGIN_NAME>:<LIBRARY_PATH>]...`: A
 [plugin](https://zenoh.io/docs/manual/plugins/) that must be loaded. Accepted
 values:
   * a plugin name; zenohd will search for a library named
 `libzenoh_plugin_<name>.so` on Unix, `libzenoh_plugin_<PLUGIN_NAME>.dylib` on
 MacOS or `zenoh_plugin_<PLUGIN_NAME>.dll` on Windows.
   * `"<PLUGIN_NAME>:<LIBRARY_PATH>"`; the plugin will be loaded from library
 file at `<LIBRARY_PATH>`.
 .
   Repeat this option to load several plugins.
 * `--plugin-search-dir <DIRECTORY>...`: A directory where to search for
 [plugins](https://zenoh.io/docs/manual/plugins/) libraries to load.
   Repeat this option to specify several search directories'. By default, the
 plugins libraries will be searched in:
   `'/usr/local/lib:/usr/lib:~/.zenoh/lib:.'`
 * `--rest-http-port <rest-http-port>`: Configures the [REST
 plugin](https://zenoh.io/docs/manual/plugin-http/)'s HTTP port. Accepted
 values:
   * a port number
   * a string with format `<local_ip>:<port_number>` (to bind the HTTP server to
 a specific interface)
   * `"None"` to deactivate the REST plugin
 .
   If not specified, the REST plugin will be active on any interface (`[::]`)
 and port `8000`.
 .
 -------------------------------
 .
 ## Plugins
 .
 > [!WARNING]
 > As Rust doesn't have a stable ABI, the plugins should be
 built with the exact same Rust version as `zenohd`, and using for `zenoh`
 dependency the same version (or commit number) as `zenohd` with the same
 set of features. A plugin compiled with different Rust version or with
 different set of `zenoh` crate features will be rejected when `zenohd` attempts
 to load it. Otherwise, incompatibilities in memory mapping of structures shared
 between `zenohd` and the library could lead to a `"SIGSEGV"` crash.
 .
 By default the Zenoh router is delivered or built with 2 plugins. These may be
 configured through a configuration file, or through individual changes to the
 configuration via the `--cfg` CLI option or via zenoh puts on individual parts
 of the configuration.
 .
 > [!WARNING]
 > Since `v0.6`, `zenohd` no longer loads every available plugin at startup.
 Instead, only configured plugins are loaded (after processing `--cfg` and
 `--plugin` options). Once `zenohd` is running, plugins can be hot-loaded and,
 if they support it, reconfigured at runtime by editing their configuration
 through the adminspace.
 .
 **[REST plugin](https://zenoh.io/docs/manual/plugin-http/)** (exposing a REST
 API):
 This plugin converts GET and PUT REST requests into Zenoh gets and puts
 respectively.
 .
 Note that to activate the REST plugin on `zenohd` the CLI argument should be
 passed: `--rest-http-port=8000` (or any other port of your choice).
 .
 **[Storages plugin](https://zenoh.io/docs/manual/plugin-storage-manager/)**
 (managing [backends and
 storages](https://zenoh.io/docs/manual/plugin-storage-manager/#backends-and-volumes))
 This plugin allows you to easily define storages. These will store key-value
 pairs they subscribed to, and send the most recent ones when queried. Check out
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) for info on how to configure them.
 .
 -------------------------------
 .
 ## Troubleshooting
 .
 In case of troubles, please first check on [this
 page](https://zenoh.io/docs/getting-started/troubleshooting/) if the trouble
 and cause are already known.
 Otherwise, you can ask a question on the [zenoh Discord
 server](https://discord.gg/vSDSpqnbkm), or [create an
 issue](https://github.com/eclipse-zenoh/zenoh/issues).

Package: zenoh
Version: 1.2.1
Architecture: armhf
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 41
Depends: zenoh-plugin-rest (=1.2.1), zenoh-plugin-storage-manager (=1.2.1), zenohd (=1.2.1)
Filename: 1.2.1/zenoh_1.2.1_armhf.deb
Size: 17460
MD5sum: 06f119582d6ef6f58f67f8eeea01cb7b
SHA1: 9c54983c578d15cd13324091029666daa8d1ef95
SHA256: 071782a27f75863dcb89506d96050e2b62e37be10320399f53c3053db1714919
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: Zenoh: The Zero Overhead Pub/Sub/Query Protocol.
 <img
 src="https://raw.githubusercontent.com/eclipse-zenoh/zenoh/master/zenoh-dragon.png"
 height="150">
 .
 [![CI](https://github.com/eclipse-zenoh/zenoh/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/eclipse-zenoh/zenoh/actions?query=workflow%3ACI+branch%3Amain++)
 [![Documentation
 Status](https://readthedocs.org/projects/zenoh-rust/badge/?version=latest)](https://zenoh-rust.readthedocs.io/en/latest/?badge=latest)
 [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions)
 [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/2GJ958VuHs)
 [![License](https://img.shields.io/badge/License-EPL%202.0-blue)](https://choosealicense.com/licenses/epl-2.0/)
 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
 .
 # Eclipse Zenoh
 .
 The Eclipse Zenoh: Zero Overhead Pub/sub, Store/Query and Compute.
 .
 Zenoh (pronounce _/zeno/_) unifies data in motion, data at rest and
 computations. It carefully blends traditional pub/sub with geo-distributed
 storages, queries and computations, while retaining a level of time and space
 efficiency that is well beyond any of the mainstream stacks.
 .
 Check the website [zenoh.io](http://zenoh.io) and the
 [roadmap](https://github.com/eclipse-zenoh/roadmap) for more detailed
 information.
 .
 -------------------------------
 .
 ## Getting Started
 .
 Zenoh is extremely easy to learn, the best place to master the fundamentals is
 our [getting started guide](https://zenoh.io/docs/getting-started/first-app/).
 .
 -------------------------------
 .
 ## How to install it
 .
 To install the latest release of the Zenoh router (`zenohd`) and its default
 plugins (REST API plugin and Storages Manager plugin) you can do as follows:
 .
 ### Manual installation (all platforms)
 .
 All release packages can be downloaded from
 [https://download.eclipse.org/zenoh/zenoh/latest/](https://download.eclipse.org/zenoh/zenoh/latest/).
 .
 Each subdirectory has the name of the Rust target. See the platforms each
 target corresponds to on
 [https://doc.rust-lang.org/stable/rustc/platform-support.html](https://doc.rust-lang.org/stable/rustc/platform-support.html).
 .
 Choose your platform and download the `.zip` file.
 Unzip it where you want, and run the extracted `zenohd` binary.
 .
 ### Linux Debian
 .
 Add Eclipse Zenoh private repository to the sources list, and install the
 `zenoh` package:
 .
 ```bash
 echo "deb [trusted=yes] https://download.eclipse.org/zenoh/debian-repo/ /" |
 sudo tee -a /etc/apt/sources.list.d/zenoh.list > /dev/null
 sudo apt update
 sudo apt install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 ### MacOS
 .
 Tap our brew package repository and install the `zenoh` formula:
 .
 ```bash
 brew tap eclipse-zenoh/homebrew-zenoh
 brew install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 -------------------------------
 .
 ## Rust API
 .
 * [Docs.rs for Zenoh](https://docs.rs/zenoh/latest/zenoh/)
 .
 -------------------------------
 .
 ## How to build it
 .
 > [!WARNING]
 > Zenoh and its ecosystem are under active development. When you build from
 git, make sure you also build from git any other Zenoh repository you plan to
 use (e.g. binding, plugin, backend, etc.). It may happen that some changes in
 git are not compatible with the most recent packaged Zenoh release (e.g. deb,
 docker, pip). We put particular effort in maintaining compatibility between the
 various git repositories in the Zenoh project.
 .
 Install [Cargo and
 Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html). Zenoh
 can be successfully compiled with Rust stable (>= 1.75.0), so no special
 configuration is required from your side. If you already have the Rust
 toolchain installed, make sure it is up-to-date with:
 .
 ```bash
 rustup update
 ```
 .
 To build Zenoh, just type the following command after having followed the
 previous instructions:
 .
 ```bash
 cargo build --release --all-targets
 ```
 .
 Zenoh's router is built as `target/release/zenohd`. All the examples are built
 into the `target/release/examples` directory. They can all work in
 peer-to-peer, or interconnected via the zenoh router.
 .
 -------------------------------
 .
 ## Quick tests of your build
 .
 ### Peer-to-peer tests
 .
 * **pub/sub**
   * run: `./target/release/examples/z_sub`
   * in another shell run: `./target/release/examples/z_put`
   * the subscriber should receive the publication.
 .
 * **get/queryable**
   * run: `./target/release/examples/z_queryable`
   * in another shell run: `./target/release/examples/z_get`
   * the queryable should display the log in its listener, and the get should
 receive the queryable result.
 .
 ### Routed tests
 .
 > [!NOTE]
 > **Windows users**: to properly execute the commands below in PowerShell you
 need to escape `"` characters as `\"`.
 .
 * **put / store / get**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell run:
 .
     ```sh
     ./target/release/examples/z_put`
     ```
 .
   * then run
 .
     ```sh
     ./target/release/examples/z_get
     ```
 .
   * the get should receive the stored publication.
 .
 * **REST API using `curl` tool**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, do a publication via the REST API:
 .
     ```sh
     curl -X PUT -d '"Hello World!"' http://localhost:8000/demo/example/test
     ```
 .
   * get it back via the REST API:
 .
     ```sh
     curl http://localhost:8000/demo/example/test
     ```
 .
 * **router admin space via the REST API**
   * run the Zenoh router with permission to perform config changes via the
 admin space, and with a memory storage:
 .
     ```sh
     ./target/release/zenohd --rest-http-port=8000 --adminspace-permissions=rw
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, get info of the zenoh router via the zenoh admin space
 (you may use `jq` for pretty json formatting):
 .
     ```sh
     curl -s http://localhost:8000/@/local/router | jq
     ```
 .
   * get the volumes of the router (only memory by default):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/volumes/*' | jq
     ```
 .
   * get the storages of the local router (the memory storage configured at
 startup on '/demo/example/**' should be present):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
   * add another memory storage on `/demo/mystore/**`:
 .
     ```sh
     curl -X PUT -H 'content-type:application/json' -d
 '{"key_expr":"demo/mystore/**","volume":"memory"}'
 http://localhost:8000/@/local/router/config/plugins/storage_manager/storages/mystore
     ```
 .
   * check it has been created:
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
 ### Configuration options
 .
 A Zenoh configuration file can be provided via CLI to all Zenoh examples and
 the Zenoh router.
 .
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file and
 the available options.
 .
 See other examples of Zenoh usage in [examples/](examples)
 .
 > [!NOTE]
 > **Zenoh Runtime Configuration**: Starting from version 0.11.0-rc, Zenoh
 allows for configuring the number of worker threads and other advanced options
 of the runtime. For guidance on utilizing it, please refer to the
 [doc](https://docs.rs/zenoh-runtime/latest/zenoh_runtime/enum.ZRuntime.html).
 .
 -------------------------------
 .
 ## Zenoh router command line arguments
 .
 `zenohd` accepts the following arguments:
 .
 * `--adminspace-permissions <[r|w|rw|none]>`: Configure the read and/or write
 permissions on the admin space. Default is read only.
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file. All
 properties of this configuration are optional, so you may not need such a large
 configuration for your use-case.
 * `--cfg <KEY>:<VALUE>`: allows you to change specific parts of the
 configuration right after it has been constructed. VALUE must be a valid JSON5
 value, and key must be a path through the configuration file, where each
 element is separated by a `/`. When inserting in parts of the config that are
 arrays, you may use indexes, or may use `+` to indicate that you want to append
 your value to the array. `--cfg` passed values will always override any
 previously existing value for their key in the configuration.
 * `-l, --listen <ENDPOINT>...`: An endpoint on which this router will listen
 for incoming sessions.
   Repeat this option to open several listeners. By default, `tcp/[::]:7447` is
 used. The following endpoints are currently supported:
   * TCP: `tcp/<host_name_or_IPv4_or_IPv6>:<port>`
   * UDP: `udp/<host_name_or_IPv4_or_IPv6>:<port>`
   * [TCP+TLS](https://zenoh.io/docs/manual/tls/): `tls/<host_name>:<port>`
   * [QUIC](https://zenoh.io/docs/manual/quic/): `quic/<host_name>:<port>`
 * `-e, --connect <ENDPOINT>...`: An endpoint this router will try to connect
 to. Repeat this option to connect to several peers or routers.
 * `--no-multicast-scouting`: By default zenohd replies to multicast scouting
 messages for being discovered by peers and clients.
   This option disables this feature.
 * `-i, --id <hex_string>`: The identifier (as an hexadecimal string - e.g.:
 A0B23...) that zenohd must use.
    **WARNING**: this identifier must be unique in the system! If not set, a
 random unsigned 128bit integer will be used.
 * `--no-timestamp`: By default zenohd adds a HLC-generated Timestamp to each
 routed Data if there isn't already one.
   This option disables this feature.
 * `-P, --plugin [<PLUGIN_NAME> | <PLUGIN_NAME>:<LIBRARY_PATH>]...`: A
 [plugin](https://zenoh.io/docs/manual/plugins/) that must be loaded. Accepted
 values:
   * a plugin name; zenohd will search for a library named
 `libzenoh_plugin_<name>.so` on Unix, `libzenoh_plugin_<PLUGIN_NAME>.dylib` on
 MacOS or `zenoh_plugin_<PLUGIN_NAME>.dll` on Windows.
   * `"<PLUGIN_NAME>:<LIBRARY_PATH>"`; the plugin will be loaded from library
 file at `<LIBRARY_PATH>`.
 .
   Repeat this option to load several plugins.
 * `--plugin-search-dir <DIRECTORY>...`: A directory where to search for
 [plugins](https://zenoh.io/docs/manual/plugins/) libraries to load.
   Repeat this option to specify several search directories'. By default, the
 plugins libraries will be searched in:
   `'/usr/local/lib:/usr/lib:~/.zenoh/lib:.'`
 * `--rest-http-port <rest-http-port>`: Configures the [REST
 plugin](https://zenoh.io/docs/manual/plugin-http/)'s HTTP port. Accepted
 values:
   * a port number
   * a string with format `<local_ip>:<port_number>` (to bind the HTTP server to
 a specific interface)
   * `"None"` to deactivate the REST plugin
 .
   If not specified, the REST plugin will be active on any interface (`[::]`)
 and port `8000`.
 .
 -------------------------------
 .
 ## Plugins
 .
 > [!WARNING]
 > As Rust doesn't have a stable ABI, the plugins should be
 built with the exact same Rust version as `zenohd`, and using for `zenoh`
 dependency the same version (or commit number) as `zenohd` with the same
 set of features. A plugin compiled with different Rust version or with
 different set of `zenoh` crate features will be rejected when `zenohd` attempts
 to load it. Otherwise, incompatibilities in memory mapping of structures shared
 between `zenohd` and the library could lead to a `"SIGSEGV"` crash.
 .
 By default the Zenoh router is delivered or built with 2 plugins. These may be
 configured through a configuration file, or through individual changes to the
 configuration via the `--cfg` CLI option or via zenoh puts on individual parts
 of the configuration.
 .
 > [!WARNING]
 > Since `v0.6`, `zenohd` no longer loads every available plugin at startup.
 Instead, only configured plugins are loaded (after processing `--cfg` and
 `--plugin` options). Once `zenohd` is running, plugins can be hot-loaded and,
 if they support it, reconfigured at runtime by editing their configuration
 through the adminspace.
 .
 **[REST plugin](https://zenoh.io/docs/manual/plugin-http/)** (exposing a REST
 API):
 This plugin converts GET and PUT REST requests into Zenoh gets and puts
 respectively.
 .
 Note that to activate the REST plugin on `zenohd` the CLI argument should be
 passed: `--rest-http-port=8000` (or any other port of your choice).
 .
 **[Storages plugin](https://zenoh.io/docs/manual/plugin-storage-manager/)**
 (managing [backends and
 storages](https://zenoh.io/docs/manual/plugin-storage-manager/#backends-and-volumes))
 This plugin allows you to easily define storages. These will store key-value
 pairs they subscribed to, and send the most recent ones when queried. Check out
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) for info on how to configure them.
 .
 -------------------------------
 .
 ## Troubleshooting
 .
 In case of troubles, please first check on [this
 page](https://zenoh.io/docs/getting-started/troubleshooting/) if the trouble
 and cause are already known.
 Otherwise, you can ask a question on the [zenoh Discord
 server](https://discord.gg/vSDSpqnbkm), or [create an
 issue](https://github.com/eclipse-zenoh/zenoh/issues).

Package: zenoh
Version: 1.2.1
Architecture: armel
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 41
Depends: zenoh-plugin-rest (=1.2.1), zenoh-plugin-storage-manager (=1.2.1), zenohd (=1.2.1)
Filename: 1.2.1/zenoh_1.2.1_armel.deb
Size: 17460
MD5sum: b4c49cf6e066cf25680253963a82190e
SHA1: bad9d82dd081e36b4be84220f3b2423437c814b9
SHA256: eb1c7cc8e0be6cb452b4a19fc1d73d0d527cba2427427863982c411043cef5e7
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: Zenoh: The Zero Overhead Pub/Sub/Query Protocol.
 <img
 src="https://raw.githubusercontent.com/eclipse-zenoh/zenoh/master/zenoh-dragon.png"
 height="150">
 .
 [![CI](https://github.com/eclipse-zenoh/zenoh/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/eclipse-zenoh/zenoh/actions?query=workflow%3ACI+branch%3Amain++)
 [![Documentation
 Status](https://readthedocs.org/projects/zenoh-rust/badge/?version=latest)](https://zenoh-rust.readthedocs.io/en/latest/?badge=latest)
 [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions)
 [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/2GJ958VuHs)
 [![License](https://img.shields.io/badge/License-EPL%202.0-blue)](https://choosealicense.com/licenses/epl-2.0/)
 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
 .
 # Eclipse Zenoh
 .
 The Eclipse Zenoh: Zero Overhead Pub/sub, Store/Query and Compute.
 .
 Zenoh (pronounce _/zeno/_) unifies data in motion, data at rest and
 computations. It carefully blends traditional pub/sub with geo-distributed
 storages, queries and computations, while retaining a level of time and space
 efficiency that is well beyond any of the mainstream stacks.
 .
 Check the website [zenoh.io](http://zenoh.io) and the
 [roadmap](https://github.com/eclipse-zenoh/roadmap) for more detailed
 information.
 .
 -------------------------------
 .
 ## Getting Started
 .
 Zenoh is extremely easy to learn, the best place to master the fundamentals is
 our [getting started guide](https://zenoh.io/docs/getting-started/first-app/).
 .
 -------------------------------
 .
 ## How to install it
 .
 To install the latest release of the Zenoh router (`zenohd`) and its default
 plugins (REST API plugin and Storages Manager plugin) you can do as follows:
 .
 ### Manual installation (all platforms)
 .
 All release packages can be downloaded from
 [https://download.eclipse.org/zenoh/zenoh/latest/](https://download.eclipse.org/zenoh/zenoh/latest/).
 .
 Each subdirectory has the name of the Rust target. See the platforms each
 target corresponds to on
 [https://doc.rust-lang.org/stable/rustc/platform-support.html](https://doc.rust-lang.org/stable/rustc/platform-support.html).
 .
 Choose your platform and download the `.zip` file.
 Unzip it where you want, and run the extracted `zenohd` binary.
 .
 ### Linux Debian
 .
 Add Eclipse Zenoh private repository to the sources list, and install the
 `zenoh` package:
 .
 ```bash
 echo "deb [trusted=yes] https://download.eclipse.org/zenoh/debian-repo/ /" |
 sudo tee -a /etc/apt/sources.list.d/zenoh.list > /dev/null
 sudo apt update
 sudo apt install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 ### MacOS
 .
 Tap our brew package repository and install the `zenoh` formula:
 .
 ```bash
 brew tap eclipse-zenoh/homebrew-zenoh
 brew install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 -------------------------------
 .
 ## Rust API
 .
 * [Docs.rs for Zenoh](https://docs.rs/zenoh/latest/zenoh/)
 .
 -------------------------------
 .
 ## How to build it
 .
 > [!WARNING]
 > Zenoh and its ecosystem are under active development. When you build from
 git, make sure you also build from git any other Zenoh repository you plan to
 use (e.g. binding, plugin, backend, etc.). It may happen that some changes in
 git are not compatible with the most recent packaged Zenoh release (e.g. deb,
 docker, pip). We put particular effort in maintaining compatibility between the
 various git repositories in the Zenoh project.
 .
 Install [Cargo and
 Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html). Zenoh
 can be successfully compiled with Rust stable (>= 1.75.0), so no special
 configuration is required from your side. If you already have the Rust
 toolchain installed, make sure it is up-to-date with:
 .
 ```bash
 rustup update
 ```
 .
 To build Zenoh, just type the following command after having followed the
 previous instructions:
 .
 ```bash
 cargo build --release --all-targets
 ```
 .
 Zenoh's router is built as `target/release/zenohd`. All the examples are built
 into the `target/release/examples` directory. They can all work in
 peer-to-peer, or interconnected via the zenoh router.
 .
 -------------------------------
 .
 ## Quick tests of your build
 .
 ### Peer-to-peer tests
 .
 * **pub/sub**
   * run: `./target/release/examples/z_sub`
   * in another shell run: `./target/release/examples/z_put`
   * the subscriber should receive the publication.
 .
 * **get/queryable**
   * run: `./target/release/examples/z_queryable`
   * in another shell run: `./target/release/examples/z_get`
   * the queryable should display the log in its listener, and the get should
 receive the queryable result.
 .
 ### Routed tests
 .
 > [!NOTE]
 > **Windows users**: to properly execute the commands below in PowerShell you
 need to escape `"` characters as `\"`.
 .
 * **put / store / get**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell run:
 .
     ```sh
     ./target/release/examples/z_put`
     ```
 .
   * then run
 .
     ```sh
     ./target/release/examples/z_get
     ```
 .
   * the get should receive the stored publication.
 .
 * **REST API using `curl` tool**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, do a publication via the REST API:
 .
     ```sh
     curl -X PUT -d '"Hello World!"' http://localhost:8000/demo/example/test
     ```
 .
   * get it back via the REST API:
 .
     ```sh
     curl http://localhost:8000/demo/example/test
     ```
 .
 * **router admin space via the REST API**
   * run the Zenoh router with permission to perform config changes via the
 admin space, and with a memory storage:
 .
     ```sh
     ./target/release/zenohd --rest-http-port=8000 --adminspace-permissions=rw
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, get info of the zenoh router via the zenoh admin space
 (you may use `jq` for pretty json formatting):
 .
     ```sh
     curl -s http://localhost:8000/@/local/router | jq
     ```
 .
   * get the volumes of the router (only memory by default):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/volumes/*' | jq
     ```
 .
   * get the storages of the local router (the memory storage configured at
 startup on '/demo/example/**' should be present):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
   * add another memory storage on `/demo/mystore/**`:
 .
     ```sh
     curl -X PUT -H 'content-type:application/json' -d
 '{"key_expr":"demo/mystore/**","volume":"memory"}'
 http://localhost:8000/@/local/router/config/plugins/storage_manager/storages/mystore
     ```
 .
   * check it has been created:
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
 ### Configuration options
 .
 A Zenoh configuration file can be provided via CLI to all Zenoh examples and
 the Zenoh router.
 .
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file and
 the available options.
 .
 See other examples of Zenoh usage in [examples/](examples)
 .
 > [!NOTE]
 > **Zenoh Runtime Configuration**: Starting from version 0.11.0-rc, Zenoh
 allows for configuring the number of worker threads and other advanced options
 of the runtime. For guidance on utilizing it, please refer to the
 [doc](https://docs.rs/zenoh-runtime/latest/zenoh_runtime/enum.ZRuntime.html).
 .
 -------------------------------
 .
 ## Zenoh router command line arguments
 .
 `zenohd` accepts the following arguments:
 .
 * `--adminspace-permissions <[r|w|rw|none]>`: Configure the read and/or write
 permissions on the admin space. Default is read only.
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file. All
 properties of this configuration are optional, so you may not need such a large
 configuration for your use-case.
 * `--cfg <KEY>:<VALUE>`: allows you to change specific parts of the
 configuration right after it has been constructed. VALUE must be a valid JSON5
 value, and key must be a path through the configuration file, where each
 element is separated by a `/`. When inserting in parts of the config that are
 arrays, you may use indexes, or may use `+` to indicate that you want to append
 your value to the array. `--cfg` passed values will always override any
 previously existing value for their key in the configuration.
 * `-l, --listen <ENDPOINT>...`: An endpoint on which this router will listen
 for incoming sessions.
   Repeat this option to open several listeners. By default, `tcp/[::]:7447` is
 used. The following endpoints are currently supported:
   * TCP: `tcp/<host_name_or_IPv4_or_IPv6>:<port>`
   * UDP: `udp/<host_name_or_IPv4_or_IPv6>:<port>`
   * [TCP+TLS](https://zenoh.io/docs/manual/tls/): `tls/<host_name>:<port>`
   * [QUIC](https://zenoh.io/docs/manual/quic/): `quic/<host_name>:<port>`
 * `-e, --connect <ENDPOINT>...`: An endpoint this router will try to connect
 to. Repeat this option to connect to several peers or routers.
 * `--no-multicast-scouting`: By default zenohd replies to multicast scouting
 messages for being discovered by peers and clients.
   This option disables this feature.
 * `-i, --id <hex_string>`: The identifier (as an hexadecimal string - e.g.:
 A0B23...) that zenohd must use.
    **WARNING**: this identifier must be unique in the system! If not set, a
 random unsigned 128bit integer will be used.
 * `--no-timestamp`: By default zenohd adds a HLC-generated Timestamp to each
 routed Data if there isn't already one.
   This option disables this feature.
 * `-P, --plugin [<PLUGIN_NAME> | <PLUGIN_NAME>:<LIBRARY_PATH>]...`: A
 [plugin](https://zenoh.io/docs/manual/plugins/) that must be loaded. Accepted
 values:
   * a plugin name; zenohd will search for a library named
 `libzenoh_plugin_<name>.so` on Unix, `libzenoh_plugin_<PLUGIN_NAME>.dylib` on
 MacOS or `zenoh_plugin_<PLUGIN_NAME>.dll` on Windows.
   * `"<PLUGIN_NAME>:<LIBRARY_PATH>"`; the plugin will be loaded from library
 file at `<LIBRARY_PATH>`.
 .
   Repeat this option to load several plugins.
 * `--plugin-search-dir <DIRECTORY>...`: A directory where to search for
 [plugins](https://zenoh.io/docs/manual/plugins/) libraries to load.
   Repeat this option to specify several search directories'. By default, the
 plugins libraries will be searched in:
   `'/usr/local/lib:/usr/lib:~/.zenoh/lib:.'`
 * `--rest-http-port <rest-http-port>`: Configures the [REST
 plugin](https://zenoh.io/docs/manual/plugin-http/)'s HTTP port. Accepted
 values:
   * a port number
   * a string with format `<local_ip>:<port_number>` (to bind the HTTP server to
 a specific interface)
   * `"None"` to deactivate the REST plugin
 .
   If not specified, the REST plugin will be active on any interface (`[::]`)
 and port `8000`.
 .
 -------------------------------
 .
 ## Plugins
 .
 > [!WARNING]
 > As Rust doesn't have a stable ABI, the plugins should be
 built with the exact same Rust version as `zenohd`, and using for `zenoh`
 dependency the same version (or commit number) as `zenohd` with the same
 set of features. A plugin compiled with different Rust version or with
 different set of `zenoh` crate features will be rejected when `zenohd` attempts
 to load it. Otherwise, incompatibilities in memory mapping of structures shared
 between `zenohd` and the library could lead to a `"SIGSEGV"` crash.
 .
 By default the Zenoh router is delivered or built with 2 plugins. These may be
 configured through a configuration file, or through individual changes to the
 configuration via the `--cfg` CLI option or via zenoh puts on individual parts
 of the configuration.
 .
 > [!WARNING]
 > Since `v0.6`, `zenohd` no longer loads every available plugin at startup.
 Instead, only configured plugins are loaded (after processing `--cfg` and
 `--plugin` options). Once `zenohd` is running, plugins can be hot-loaded and,
 if they support it, reconfigured at runtime by editing their configuration
 through the adminspace.
 .
 **[REST plugin](https://zenoh.io/docs/manual/plugin-http/)** (exposing a REST
 API):
 This plugin converts GET and PUT REST requests into Zenoh gets and puts
 respectively.
 .
 Note that to activate the REST plugin on `zenohd` the CLI argument should be
 passed: `--rest-http-port=8000` (or any other port of your choice).
 .
 **[Storages plugin](https://zenoh.io/docs/manual/plugin-storage-manager/)**
 (managing [backends and
 storages](https://zenoh.io/docs/manual/plugin-storage-manager/#backends-and-volumes))
 This plugin allows you to easily define storages. These will store key-value
 pairs they subscribed to, and send the most recent ones when queried. Check out
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) for info on how to configure them.
 .
 -------------------------------
 .
 ## Troubleshooting
 .
 In case of troubles, please first check on [this
 page](https://zenoh.io/docs/getting-started/troubleshooting/) if the trouble
 and cause are already known.
 Otherwise, you can ask a question on the [zenoh Discord
 server](https://discord.gg/vSDSpqnbkm), or [create an
 issue](https://github.com/eclipse-zenoh/zenoh/issues).

Package: zenoh
Version: 1.2.1
Architecture: arm64
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 41
Depends: zenoh-plugin-rest (=1.2.1), zenoh-plugin-storage-manager (=1.2.1), zenohd (=1.2.1)
Filename: 1.2.1/zenoh_1.2.1_arm64.deb
Size: 17460
MD5sum: c5f985f72a9800183263059e0e88f5ff
SHA1: 9e2ed5b488060f96ce70c96182da9c7968a65407
SHA256: e84500532c6de2955ff155915fd060f148986cee748bc3fb5e83b65eb8c2c528
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: Zenoh: The Zero Overhead Pub/Sub/Query Protocol.
 <img
 src="https://raw.githubusercontent.com/eclipse-zenoh/zenoh/master/zenoh-dragon.png"
 height="150">
 .
 [![CI](https://github.com/eclipse-zenoh/zenoh/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/eclipse-zenoh/zenoh/actions?query=workflow%3ACI+branch%3Amain++)
 [![Documentation
 Status](https://readthedocs.org/projects/zenoh-rust/badge/?version=latest)](https://zenoh-rust.readthedocs.io/en/latest/?badge=latest)
 [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions)
 [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/2GJ958VuHs)
 [![License](https://img.shields.io/badge/License-EPL%202.0-blue)](https://choosealicense.com/licenses/epl-2.0/)
 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
 .
 # Eclipse Zenoh
 .
 The Eclipse Zenoh: Zero Overhead Pub/sub, Store/Query and Compute.
 .
 Zenoh (pronounce _/zeno/_) unifies data in motion, data at rest and
 computations. It carefully blends traditional pub/sub with geo-distributed
 storages, queries and computations, while retaining a level of time and space
 efficiency that is well beyond any of the mainstream stacks.
 .
 Check the website [zenoh.io](http://zenoh.io) and the
 [roadmap](https://github.com/eclipse-zenoh/roadmap) for more detailed
 information.
 .
 -------------------------------
 .
 ## Getting Started
 .
 Zenoh is extremely easy to learn, the best place to master the fundamentals is
 our [getting started guide](https://zenoh.io/docs/getting-started/first-app/).
 .
 -------------------------------
 .
 ## How to install it
 .
 To install the latest release of the Zenoh router (`zenohd`) and its default
 plugins (REST API plugin and Storages Manager plugin) you can do as follows:
 .
 ### Manual installation (all platforms)
 .
 All release packages can be downloaded from
 [https://download.eclipse.org/zenoh/zenoh/latest/](https://download.eclipse.org/zenoh/zenoh/latest/).
 .
 Each subdirectory has the name of the Rust target. See the platforms each
 target corresponds to on
 [https://doc.rust-lang.org/stable/rustc/platform-support.html](https://doc.rust-lang.org/stable/rustc/platform-support.html).
 .
 Choose your platform and download the `.zip` file.
 Unzip it where you want, and run the extracted `zenohd` binary.
 .
 ### Linux Debian
 .
 Add Eclipse Zenoh private repository to the sources list, and install the
 `zenoh` package:
 .
 ```bash
 echo "deb [trusted=yes] https://download.eclipse.org/zenoh/debian-repo/ /" |
 sudo tee -a /etc/apt/sources.list.d/zenoh.list > /dev/null
 sudo apt update
 sudo apt install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 ### MacOS
 .
 Tap our brew package repository and install the `zenoh` formula:
 .
 ```bash
 brew tap eclipse-zenoh/homebrew-zenoh
 brew install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 -------------------------------
 .
 ## Rust API
 .
 * [Docs.rs for Zenoh](https://docs.rs/zenoh/latest/zenoh/)
 .
 -------------------------------
 .
 ## How to build it
 .
 > [!WARNING]
 > Zenoh and its ecosystem are under active development. When you build from
 git, make sure you also build from git any other Zenoh repository you plan to
 use (e.g. binding, plugin, backend, etc.). It may happen that some changes in
 git are not compatible with the most recent packaged Zenoh release (e.g. deb,
 docker, pip). We put particular effort in maintaining compatibility between the
 various git repositories in the Zenoh project.
 .
 Install [Cargo and
 Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html). Zenoh
 can be successfully compiled with Rust stable (>= 1.75.0), so no special
 configuration is required from your side. If you already have the Rust
 toolchain installed, make sure it is up-to-date with:
 .
 ```bash
 rustup update
 ```
 .
 To build Zenoh, just type the following command after having followed the
 previous instructions:
 .
 ```bash
 cargo build --release --all-targets
 ```
 .
 Zenoh's router is built as `target/release/zenohd`. All the examples are built
 into the `target/release/examples` directory. They can all work in
 peer-to-peer, or interconnected via the zenoh router.
 .
 -------------------------------
 .
 ## Quick tests of your build
 .
 ### Peer-to-peer tests
 .
 * **pub/sub**
   * run: `./target/release/examples/z_sub`
   * in another shell run: `./target/release/examples/z_put`
   * the subscriber should receive the publication.
 .
 * **get/queryable**
   * run: `./target/release/examples/z_queryable`
   * in another shell run: `./target/release/examples/z_get`
   * the queryable should display the log in its listener, and the get should
 receive the queryable result.
 .
 ### Routed tests
 .
 > [!NOTE]
 > **Windows users**: to properly execute the commands below in PowerShell you
 need to escape `"` characters as `\"`.
 .
 * **put / store / get**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell run:
 .
     ```sh
     ./target/release/examples/z_put`
     ```
 .
   * then run
 .
     ```sh
     ./target/release/examples/z_get
     ```
 .
   * the get should receive the stored publication.
 .
 * **REST API using `curl` tool**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, do a publication via the REST API:
 .
     ```sh
     curl -X PUT -d '"Hello World!"' http://localhost:8000/demo/example/test
     ```
 .
   * get it back via the REST API:
 .
     ```sh
     curl http://localhost:8000/demo/example/test
     ```
 .
 * **router admin space via the REST API**
   * run the Zenoh router with permission to perform config changes via the
 admin space, and with a memory storage:
 .
     ```sh
     ./target/release/zenohd --rest-http-port=8000 --adminspace-permissions=rw
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, get info of the zenoh router via the zenoh admin space
 (you may use `jq` for pretty json formatting):
 .
     ```sh
     curl -s http://localhost:8000/@/local/router | jq
     ```
 .
   * get the volumes of the router (only memory by default):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/volumes/*' | jq
     ```
 .
   * get the storages of the local router (the memory storage configured at
 startup on '/demo/example/**' should be present):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
   * add another memory storage on `/demo/mystore/**`:
 .
     ```sh
     curl -X PUT -H 'content-type:application/json' -d
 '{"key_expr":"demo/mystore/**","volume":"memory"}'
 http://localhost:8000/@/local/router/config/plugins/storage_manager/storages/mystore
     ```
 .
   * check it has been created:
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
 ### Configuration options
 .
 A Zenoh configuration file can be provided via CLI to all Zenoh examples and
 the Zenoh router.
 .
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file and
 the available options.
 .
 See other examples of Zenoh usage in [examples/](examples)
 .
 > [!NOTE]
 > **Zenoh Runtime Configuration**: Starting from version 0.11.0-rc, Zenoh
 allows for configuring the number of worker threads and other advanced options
 of the runtime. For guidance on utilizing it, please refer to the
 [doc](https://docs.rs/zenoh-runtime/latest/zenoh_runtime/enum.ZRuntime.html).
 .
 -------------------------------
 .
 ## Zenoh router command line arguments
 .
 `zenohd` accepts the following arguments:
 .
 * `--adminspace-permissions <[r|w|rw|none]>`: Configure the read and/or write
 permissions on the admin space. Default is read only.
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file. All
 properties of this configuration are optional, so you may not need such a large
 configuration for your use-case.
 * `--cfg <KEY>:<VALUE>`: allows you to change specific parts of the
 configuration right after it has been constructed. VALUE must be a valid JSON5
 value, and key must be a path through the configuration file, where each
 element is separated by a `/`. When inserting in parts of the config that are
 arrays, you may use indexes, or may use `+` to indicate that you want to append
 your value to the array. `--cfg` passed values will always override any
 previously existing value for their key in the configuration.
 * `-l, --listen <ENDPOINT>...`: An endpoint on which this router will listen
 for incoming sessions.
   Repeat this option to open several listeners. By default, `tcp/[::]:7447` is
 used. The following endpoints are currently supported:
   * TCP: `tcp/<host_name_or_IPv4_or_IPv6>:<port>`
   * UDP: `udp/<host_name_or_IPv4_or_IPv6>:<port>`
   * [TCP+TLS](https://zenoh.io/docs/manual/tls/): `tls/<host_name>:<port>`
   * [QUIC](https://zenoh.io/docs/manual/quic/): `quic/<host_name>:<port>`
 * `-e, --connect <ENDPOINT>...`: An endpoint this router will try to connect
 to. Repeat this option to connect to several peers or routers.
 * `--no-multicast-scouting`: By default zenohd replies to multicast scouting
 messages for being discovered by peers and clients.
   This option disables this feature.
 * `-i, --id <hex_string>`: The identifier (as an hexadecimal string - e.g.:
 A0B23...) that zenohd must use.
    **WARNING**: this identifier must be unique in the system! If not set, a
 random unsigned 128bit integer will be used.
 * `--no-timestamp`: By default zenohd adds a HLC-generated Timestamp to each
 routed Data if there isn't already one.
   This option disables this feature.
 * `-P, --plugin [<PLUGIN_NAME> | <PLUGIN_NAME>:<LIBRARY_PATH>]...`: A
 [plugin](https://zenoh.io/docs/manual/plugins/) that must be loaded. Accepted
 values:
   * a plugin name; zenohd will search for a library named
 `libzenoh_plugin_<name>.so` on Unix, `libzenoh_plugin_<PLUGIN_NAME>.dylib` on
 MacOS or `zenoh_plugin_<PLUGIN_NAME>.dll` on Windows.
   * `"<PLUGIN_NAME>:<LIBRARY_PATH>"`; the plugin will be loaded from library
 file at `<LIBRARY_PATH>`.
 .
   Repeat this option to load several plugins.
 * `--plugin-search-dir <DIRECTORY>...`: A directory where to search for
 [plugins](https://zenoh.io/docs/manual/plugins/) libraries to load.
   Repeat this option to specify several search directories'. By default, the
 plugins libraries will be searched in:
   `'/usr/local/lib:/usr/lib:~/.zenoh/lib:.'`
 * `--rest-http-port <rest-http-port>`: Configures the [REST
 plugin](https://zenoh.io/docs/manual/plugin-http/)'s HTTP port. Accepted
 values:
   * a port number
   * a string with format `<local_ip>:<port_number>` (to bind the HTTP server to
 a specific interface)
   * `"None"` to deactivate the REST plugin
 .
   If not specified, the REST plugin will be active on any interface (`[::]`)
 and port `8000`.
 .
 -------------------------------
 .
 ## Plugins
 .
 > [!WARNING]
 > As Rust doesn't have a stable ABI, the plugins should be
 built with the exact same Rust version as `zenohd`, and using for `zenoh`
 dependency the same version (or commit number) as `zenohd` with the same
 set of features. A plugin compiled with different Rust version or with
 different set of `zenoh` crate features will be rejected when `zenohd` attempts
 to load it. Otherwise, incompatibilities in memory mapping of structures shared
 between `zenohd` and the library could lead to a `"SIGSEGV"` crash.
 .
 By default the Zenoh router is delivered or built with 2 plugins. These may be
 configured through a configuration file, or through individual changes to the
 configuration via the `--cfg` CLI option or via zenoh puts on individual parts
 of the configuration.
 .
 > [!WARNING]
 > Since `v0.6`, `zenohd` no longer loads every available plugin at startup.
 Instead, only configured plugins are loaded (after processing `--cfg` and
 `--plugin` options). Once `zenohd` is running, plugins can be hot-loaded and,
 if they support it, reconfigured at runtime by editing their configuration
 through the adminspace.
 .
 **[REST plugin](https://zenoh.io/docs/manual/plugin-http/)** (exposing a REST
 API):
 This plugin converts GET and PUT REST requests into Zenoh gets and puts
 respectively.
 .
 Note that to activate the REST plugin on `zenohd` the CLI argument should be
 passed: `--rest-http-port=8000` (or any other port of your choice).
 .
 **[Storages plugin](https://zenoh.io/docs/manual/plugin-storage-manager/)**
 (managing [backends and
 storages](https://zenoh.io/docs/manual/plugin-storage-manager/#backends-and-volumes))
 This plugin allows you to easily define storages. These will store key-value
 pairs they subscribed to, and send the most recent ones when queried. Check out
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) for info on how to configure them.
 .
 -------------------------------
 .
 ## Troubleshooting
 .
 In case of troubles, please first check on [this
 page](https://zenoh.io/docs/getting-started/troubleshooting/) if the trouble
 and cause are already known.
 Otherwise, you can ask a question on the [zenoh Discord
 server](https://discord.gg/vSDSpqnbkm), or [create an
 issue](https://github.com/eclipse-zenoh/zenoh/issues).

Package: zenoh-plugin-rest
Version: 1.2.1
Architecture: armel
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 8018
Depends: zenohd (=1.2.1)
Filename: 1.2.1/zenoh-plugin-rest_1.2.1_armel.deb
Size: 1793768
MD5sum: d9d265bb012aa444063c5cec1c207ec4
SHA1: fa84a0163a4b9021069f6507497e9021ffbb0302
SHA256: 1aae989745117a054c1ae85bae05e79a712d4293e400d842b85f83c41810c53f
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: The zenoh REST plugin
 # ⚠️ WARNING ⚠️
 .
 This crate is intended for Zenoh's internal use.
 .
 - [Click here for Zenoh's main
 repository](https://github.com/eclipse-zenoh/zenoh)
 - [Click here for Zenoh's documentation](https://zenoh.io)

Package: zenoh-plugin-rest
Version: 1.2.1
Architecture: amd64
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 10883
Depends: zenohd (=1.2.1)
Filename: 1.2.1/zenoh-plugin-rest_1.2.1_amd64.deb
Size: 2094648
MD5sum: 653ebc432086dc0d1a49b65032b89dc4
SHA1: 89525d2eac69f45abe4357889af65f8047fabbe6
SHA256: 7b13e2661e5b9cb4b332f2de6a9365181f0def5a06247b5b49c77492e421dabd
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: The zenoh REST plugin
 # ⚠️ WARNING ⚠️
 .
 This crate is intended for Zenoh's internal use.
 .
 - [Click here for Zenoh's main
 repository](https://github.com/eclipse-zenoh/zenoh)
 - [Click here for Zenoh's documentation](https://zenoh.io)

Package: zenoh-plugin-rest
Version: 1.2.1
Architecture: armhf
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 7924
Depends: zenohd (=1.2.1)
Filename: 1.2.1/zenoh-plugin-rest_1.2.1_armhf.deb
Size: 1782840
MD5sum: b6c01148aac33a724f8919caa12a1c21
SHA1: 2ebc324c7d0d21742bbd7679a6bef52daed6ff3b
SHA256: 527e52ab33e562b8120f3a6c411c39d3fd8b4a98a99ea61cce8eb03635696e5f
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: The zenoh REST plugin
 # ⚠️ WARNING ⚠️
 .
 This crate is intended for Zenoh's internal use.
 .
 - [Click here for Zenoh's main
 repository](https://github.com/eclipse-zenoh/zenoh)
 - [Click here for Zenoh's documentation](https://zenoh.io)

Package: zenoh-plugin-rest
Version: 1.2.1
Architecture: arm64
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 9869
Depends: zenohd (=1.2.1)
Filename: 1.2.1/zenoh-plugin-rest_1.2.1_arm64.deb
Size: 1920168
MD5sum: a9806400c0c39c0b11fcc2538dbc72d0
SHA1: 45b0a650df1f63dacf2fc4f41bfee729cba81e9b
SHA256: ca550a171971e287b28bd7c5eb819a31145549aeb5cd718b273152b39fd0a0ae
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: The zenoh REST plugin
 # ⚠️ WARNING ⚠️
 .
 This crate is intended for Zenoh's internal use.
 .
 - [Click here for Zenoh's main
 repository](https://github.com/eclipse-zenoh/zenoh)
 - [Click here for Zenoh's documentation](https://zenoh.io)

Package: zenoh-plugin-storage-manager
Version: 1.2.1
Architecture: arm64
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 9580
Depends: zenohd (=1.2.1)
Filename: 1.2.1/zenoh-plugin-storage-manager_1.2.1_arm64.deb
Size: 1815208
MD5sum: 2f2ffb9d74f6bf4a803cf14e731c16af
SHA1: 9abf0437f768063d109d3300804d32162e7883d1
SHA256: 17ff413c35f5ff9b8684ddd4f7ec8bc9e4f7d35831ae537ebaa5daa6a84b324f
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: The zenoh storages plugin.
 # ⚠️ WARNING ⚠️
 .
 This crate is intended for Zenoh's internal use.
 .
 - [Click here for Zenoh's main
 repository](https://github.com/eclipse-zenoh/zenoh)
 - [Click here for Zenoh's documentation](https://zenoh.io)

Package: zenoh-plugin-storage-manager
Version: 1.2.1
Architecture: amd64
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 10615
Depends: zenohd (=1.2.1)
Filename: 1.2.1/zenoh-plugin-storage-manager_1.2.1_amd64.deb
Size: 1986416
MD5sum: ad7a045e56a1df48e26ee4c6ab3f17c0
SHA1: 530a0e73cd9ff68a94bc9499f77f52a7a0f16116
SHA256: 981fecd5dc9379ba3bfed806b9a5b4481c35a5b80eddfbc275126deb23bd3358
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: The zenoh storages plugin.
 # ⚠️ WARNING ⚠️
 .
 This crate is intended for Zenoh's internal use.
 .
 - [Click here for Zenoh's main
 repository](https://github.com/eclipse-zenoh/zenoh)
 - [Click here for Zenoh's documentation](https://zenoh.io)

Package: zenoh-plugin-storage-manager
Version: 1.2.1
Architecture: armel
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 7779
Depends: zenohd (=1.2.1)
Filename: 1.2.1/zenoh-plugin-storage-manager_1.2.1_armel.deb
Size: 1707780
MD5sum: 080f660110564e4ad9a2c0b6c8f4dd12
SHA1: b84205fa7f86cb818c3d34061efed57e8546dbfb
SHA256: 82bc17972915673f21b882f2b0856cae6581a2934b2311089111e5e13370bfe3
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: The zenoh storages plugin.
 # ⚠️ WARNING ⚠️
 .
 This crate is intended for Zenoh's internal use.
 .
 - [Click here for Zenoh's main
 repository](https://github.com/eclipse-zenoh/zenoh)
 - [Click here for Zenoh's documentation](https://zenoh.io)

Package: zenoh-plugin-storage-manager
Version: 1.2.1
Architecture: armhf
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 7666
Depends: zenohd (=1.2.1)
Filename: 1.2.1/zenoh-plugin-storage-manager_1.2.1_armhf.deb
Size: 1695028
MD5sum: c9ef3c04ed51eef2e6d3ef4d30259898
SHA1: e59995b780c19031261c4bd93f687fdefa275358
SHA256: a097b5716202a3720d686be877aff151f4e1b9f98010418cb73eeec58c2161ad
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: The zenoh storages plugin.
 # ⚠️ WARNING ⚠️
 .
 This crate is intended for Zenoh's internal use.
 .
 - [Click here for Zenoh's main
 repository](https://github.com/eclipse-zenoh/zenoh)
 - [Click here for Zenoh's documentation](https://zenoh.io)

Package: zenohd
Version: 1.2.1
Architecture: armel
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 18062
Filename: 1.2.1/zenohd_1.2.1_armel.deb
Size: 4432792
MD5sum: 555ef81419a12a5cc73e089be908a357
SHA1: 6412ab4d6460e56e67972f8bbd3ba8fa8a471489
SHA256: 8ec4bfa30efc8f2eef124146e48bdac754764ff21e2ad016783950dca7df79ce
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: Zenoh: The Zero Overhead Pub/Sub/Query Protocol.
 <img
 src="https://raw.githubusercontent.com/eclipse-zenoh/zenoh/master/zenoh-dragon.png"
 height="150">
 .
 [![CI](https://github.com/eclipse-zenoh/zenoh/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/eclipse-zenoh/zenoh/actions?query=workflow%3ACI+branch%3Amain++)
 [![Documentation
 Status](https://readthedocs.org/projects/zenoh-rust/badge/?version=latest)](https://zenoh-rust.readthedocs.io/en/latest/?badge=latest)
 [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions)
 [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/2GJ958VuHs)
 [![License](https://img.shields.io/badge/License-EPL%202.0-blue)](https://choosealicense.com/licenses/epl-2.0/)
 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
 .
 # Eclipse Zenoh
 .
 The Eclipse Zenoh: Zero Overhead Pub/sub, Store/Query and Compute.
 .
 Zenoh (pronounce _/zeno/_) unifies data in motion, data at rest and
 computations. It carefully blends traditional pub/sub with geo-distributed
 storages, queries and computations, while retaining a level of time and space
 efficiency that is well beyond any of the mainstream stacks.
 .
 Check the website [zenoh.io](http://zenoh.io) and the
 [roadmap](https://github.com/eclipse-zenoh/roadmap) for more detailed
 information.
 .
 -------------------------------
 .
 ## Getting Started
 .
 Zenoh is extremely easy to learn, the best place to master the fundamentals is
 our [getting started guide](https://zenoh.io/docs/getting-started/first-app/).
 .
 -------------------------------
 .
 ## How to install it
 .
 To install the latest release of the Zenoh router (`zenohd`) and its default
 plugins (REST API plugin and Storages Manager plugin) you can do as follows:
 .
 ### Manual installation (all platforms)
 .
 All release packages can be downloaded from
 [https://download.eclipse.org/zenoh/zenoh/latest/](https://download.eclipse.org/zenoh/zenoh/latest/).
 .
 Each subdirectory has the name of the Rust target. See the platforms each
 target corresponds to on
 [https://doc.rust-lang.org/stable/rustc/platform-support.html](https://doc.rust-lang.org/stable/rustc/platform-support.html).
 .
 Choose your platform and download the `.zip` file.
 Unzip it where you want, and run the extracted `zenohd` binary.
 .
 ### Linux Debian
 .
 Add Eclipse Zenoh private repository to the sources list, and install the
 `zenoh` package:
 .
 ```bash
 echo "deb [trusted=yes] https://download.eclipse.org/zenoh/debian-repo/ /" |
 sudo tee -a /etc/apt/sources.list.d/zenoh.list > /dev/null
 sudo apt update
 sudo apt install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 ### MacOS
 .
 Tap our brew package repository and install the `zenoh` formula:
 .
 ```bash
 brew tap eclipse-zenoh/homebrew-zenoh
 brew install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 -------------------------------
 .
 ## Rust API
 .
 * [Docs.rs for Zenoh](https://docs.rs/zenoh/latest/zenoh/)
 .
 -------------------------------
 .
 ## How to build it
 .
 > [!WARNING]
 > Zenoh and its ecosystem are under active development. When you build from
 git, make sure you also build from git any other Zenoh repository you plan to
 use (e.g. binding, plugin, backend, etc.). It may happen that some changes in
 git are not compatible with the most recent packaged Zenoh release (e.g. deb,
 docker, pip). We put particular effort in maintaining compatibility between the
 various git repositories in the Zenoh project.
 .
 Install [Cargo and
 Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html). Zenoh
 can be successfully compiled with Rust stable (>= 1.75.0), so no special
 configuration is required from your side. If you already have the Rust
 toolchain installed, make sure it is up-to-date with:
 .
 ```bash
 rustup update
 ```
 .
 To build Zenoh, just type the following command after having followed the
 previous instructions:
 .
 ```bash
 cargo build --release --all-targets
 ```
 .
 Zenoh's router is built as `target/release/zenohd`. All the examples are built
 into the `target/release/examples` directory. They can all work in
 peer-to-peer, or interconnected via the zenoh router.
 .
 -------------------------------
 .
 ## Quick tests of your build
 .
 ### Peer-to-peer tests
 .
 * **pub/sub**
   * run: `./target/release/examples/z_sub`
   * in another shell run: `./target/release/examples/z_put`
   * the subscriber should receive the publication.
 .
 * **get/queryable**
   * run: `./target/release/examples/z_queryable`
   * in another shell run: `./target/release/examples/z_get`
   * the queryable should display the log in its listener, and the get should
 receive the queryable result.
 .
 ### Routed tests
 .
 > [!NOTE]
 > **Windows users**: to properly execute the commands below in PowerShell you
 need to escape `"` characters as `\"`.
 .
 * **put / store / get**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell run:
 .
     ```sh
     ./target/release/examples/z_put`
     ```
 .
   * then run
 .
     ```sh
     ./target/release/examples/z_get
     ```
 .
   * the get should receive the stored publication.
 .
 * **REST API using `curl` tool**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, do a publication via the REST API:
 .
     ```sh
     curl -X PUT -d '"Hello World!"' http://localhost:8000/demo/example/test
     ```
 .
   * get it back via the REST API:
 .
     ```sh
     curl http://localhost:8000/demo/example/test
     ```
 .
 * **router admin space via the REST API**
   * run the Zenoh router with permission to perform config changes via the
 admin space, and with a memory storage:
 .
     ```sh
     ./target/release/zenohd --rest-http-port=8000 --adminspace-permissions=rw
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, get info of the zenoh router via the zenoh admin space
 (you may use `jq` for pretty json formatting):
 .
     ```sh
     curl -s http://localhost:8000/@/local/router | jq
     ```
 .
   * get the volumes of the router (only memory by default):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/volumes/*' | jq
     ```
 .
   * get the storages of the local router (the memory storage configured at
 startup on '/demo/example/**' should be present):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
   * add another memory storage on `/demo/mystore/**`:
 .
     ```sh
     curl -X PUT -H 'content-type:application/json' -d
 '{"key_expr":"demo/mystore/**","volume":"memory"}'
 http://localhost:8000/@/local/router/config/plugins/storage_manager/storages/mystore
     ```
 .
   * check it has been created:
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
 ### Configuration options
 .
 A Zenoh configuration file can be provided via CLI to all Zenoh examples and
 the Zenoh router.
 .
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file and
 the available options.
 .
 See other examples of Zenoh usage in [examples/](examples)
 .
 > [!NOTE]
 > **Zenoh Runtime Configuration**: Starting from version 0.11.0-rc, Zenoh
 allows for configuring the number of worker threads and other advanced options
 of the runtime. For guidance on utilizing it, please refer to the
 [doc](https://docs.rs/zenoh-runtime/latest/zenoh_runtime/enum.ZRuntime.html).
 .
 -------------------------------
 .
 ## Zenoh router command line arguments
 .
 `zenohd` accepts the following arguments:
 .
 * `--adminspace-permissions <[r|w|rw|none]>`: Configure the read and/or write
 permissions on the admin space. Default is read only.
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file. All
 properties of this configuration are optional, so you may not need such a large
 configuration for your use-case.
 * `--cfg <KEY>:<VALUE>`: allows you to change specific parts of the
 configuration right after it has been constructed. VALUE must be a valid JSON5
 value, and key must be a path through the configuration file, where each
 element is separated by a `/`. When inserting in parts of the config that are
 arrays, you may use indexes, or may use `+` to indicate that you want to append
 your value to the array. `--cfg` passed values will always override any
 previously existing value for their key in the configuration.
 * `-l, --listen <ENDPOINT>...`: An endpoint on which this router will listen
 for incoming sessions.
   Repeat this option to open several listeners. By default, `tcp/[::]:7447` is
 used. The following endpoints are currently supported:
   * TCP: `tcp/<host_name_or_IPv4_or_IPv6>:<port>`
   * UDP: `udp/<host_name_or_IPv4_or_IPv6>:<port>`
   * [TCP+TLS](https://zenoh.io/docs/manual/tls/): `tls/<host_name>:<port>`
   * [QUIC](https://zenoh.io/docs/manual/quic/): `quic/<host_name>:<port>`
 * `-e, --connect <ENDPOINT>...`: An endpoint this router will try to connect
 to. Repeat this option to connect to several peers or routers.
 * `--no-multicast-scouting`: By default zenohd replies to multicast scouting
 messages for being discovered by peers and clients.
   This option disables this feature.
 * `-i, --id <hex_string>`: The identifier (as an hexadecimal string - e.g.:
 A0B23...) that zenohd must use.
    **WARNING**: this identifier must be unique in the system! If not set, a
 random unsigned 128bit integer will be used.
 * `--no-timestamp`: By default zenohd adds a HLC-generated Timestamp to each
 routed Data if there isn't already one.
   This option disables this feature.
 * `-P, --plugin [<PLUGIN_NAME> | <PLUGIN_NAME>:<LIBRARY_PATH>]...`: A
 [plugin](https://zenoh.io/docs/manual/plugins/) that must be loaded. Accepted
 values:
   * a plugin name; zenohd will search for a library named
 `libzenoh_plugin_<name>.so` on Unix, `libzenoh_plugin_<PLUGIN_NAME>.dylib` on
 MacOS or `zenoh_plugin_<PLUGIN_NAME>.dll` on Windows.
   * `"<PLUGIN_NAME>:<LIBRARY_PATH>"`; the plugin will be loaded from library
 file at `<LIBRARY_PATH>`.
 .
   Repeat this option to load several plugins.
 * `--plugin-search-dir <DIRECTORY>...`: A directory where to search for
 [plugins](https://zenoh.io/docs/manual/plugins/) libraries to load.
   Repeat this option to specify several search directories'. By default, the
 plugins libraries will be searched in:
   `'/usr/local/lib:/usr/lib:~/.zenoh/lib:.'`
 * `--rest-http-port <rest-http-port>`: Configures the [REST
 plugin](https://zenoh.io/docs/manual/plugin-http/)'s HTTP port. Accepted
 values:
   * a port number
   * a string with format `<local_ip>:<port_number>` (to bind the HTTP server to
 a specific interface)
   * `"None"` to deactivate the REST plugin
 .
   If not specified, the REST plugin will be active on any interface (`[::]`)
 and port `8000`.
 .
 -------------------------------
 .
 ## Plugins
 .
 > [!WARNING]
 > As Rust doesn't have a stable ABI, the plugins should be
 built with the exact same Rust version as `zenohd`, and using for `zenoh`
 dependency the same version (or commit number) as `zenohd` with the same
 set of features. A plugin compiled with different Rust version or with
 different set of `zenoh` crate features will be rejected when `zenohd` attempts
 to load it. Otherwise, incompatibilities in memory mapping of structures shared
 between `zenohd` and the library could lead to a `"SIGSEGV"` crash.
 .
 By default the Zenoh router is delivered or built with 2 plugins. These may be
 configured through a configuration file, or through individual changes to the
 configuration via the `--cfg` CLI option or via zenoh puts on individual parts
 of the configuration.
 .
 > [!WARNING]
 > Since `v0.6`, `zenohd` no longer loads every available plugin at startup.
 Instead, only configured plugins are loaded (after processing `--cfg` and
 `--plugin` options). Once `zenohd` is running, plugins can be hot-loaded and,
 if they support it, reconfigured at runtime by editing their configuration
 through the adminspace.
 .
 **[REST plugin](https://zenoh.io/docs/manual/plugin-http/)** (exposing a REST
 API):
 This plugin converts GET and PUT REST requests into Zenoh gets and puts
 respectively.
 .
 Note that to activate the REST plugin on `zenohd` the CLI argument should be
 passed: `--rest-http-port=8000` (or any other port of your choice).
 .
 **[Storages plugin](https://zenoh.io/docs/manual/plugin-storage-manager/)**
 (managing [backends and
 storages](https://zenoh.io/docs/manual/plugin-storage-manager/#backends-and-volumes))
 This plugin allows you to easily define storages. These will store key-value
 pairs they subscribed to, and send the most recent ones when queried. Check out
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) for info on how to configure them.
 .
 -------------------------------
 .
 ## Troubleshooting
 .
 In case of troubles, please first check on [this
 page](https://zenoh.io/docs/getting-started/troubleshooting/) if the trouble
 and cause are already known.
 Otherwise, you can ask a question on the [zenoh Discord
 server](https://discord.gg/vSDSpqnbkm), or [create an
 issue](https://github.com/eclipse-zenoh/zenoh/issues).

Package: zenohd
Version: 1.2.1
Architecture: arm64
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 16604
Filename: 1.2.1/zenohd_1.2.1_arm64.deb
Size: 4051664
MD5sum: 2bcf8d6d349fd7350262b8d82a9f2d96
SHA1: 1ae1daf1a5338fbf12c5b65e2b3c7212b4417ffb
SHA256: 9d0e00fb65268d0be65ddfa7ccd72a7cf362698d2fae5ebbe668271085314a50
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: Zenoh: The Zero Overhead Pub/Sub/Query Protocol.
 <img
 src="https://raw.githubusercontent.com/eclipse-zenoh/zenoh/master/zenoh-dragon.png"
 height="150">
 .
 [![CI](https://github.com/eclipse-zenoh/zenoh/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/eclipse-zenoh/zenoh/actions?query=workflow%3ACI+branch%3Amain++)
 [![Documentation
 Status](https://readthedocs.org/projects/zenoh-rust/badge/?version=latest)](https://zenoh-rust.readthedocs.io/en/latest/?badge=latest)
 [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions)
 [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/2GJ958VuHs)
 [![License](https://img.shields.io/badge/License-EPL%202.0-blue)](https://choosealicense.com/licenses/epl-2.0/)
 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
 .
 # Eclipse Zenoh
 .
 The Eclipse Zenoh: Zero Overhead Pub/sub, Store/Query and Compute.
 .
 Zenoh (pronounce _/zeno/_) unifies data in motion, data at rest and
 computations. It carefully blends traditional pub/sub with geo-distributed
 storages, queries and computations, while retaining a level of time and space
 efficiency that is well beyond any of the mainstream stacks.
 .
 Check the website [zenoh.io](http://zenoh.io) and the
 [roadmap](https://github.com/eclipse-zenoh/roadmap) for more detailed
 information.
 .
 -------------------------------
 .
 ## Getting Started
 .
 Zenoh is extremely easy to learn, the best place to master the fundamentals is
 our [getting started guide](https://zenoh.io/docs/getting-started/first-app/).
 .
 -------------------------------
 .
 ## How to install it
 .
 To install the latest release of the Zenoh router (`zenohd`) and its default
 plugins (REST API plugin and Storages Manager plugin) you can do as follows:
 .
 ### Manual installation (all platforms)
 .
 All release packages can be downloaded from
 [https://download.eclipse.org/zenoh/zenoh/latest/](https://download.eclipse.org/zenoh/zenoh/latest/).
 .
 Each subdirectory has the name of the Rust target. See the platforms each
 target corresponds to on
 [https://doc.rust-lang.org/stable/rustc/platform-support.html](https://doc.rust-lang.org/stable/rustc/platform-support.html).
 .
 Choose your platform and download the `.zip` file.
 Unzip it where you want, and run the extracted `zenohd` binary.
 .
 ### Linux Debian
 .
 Add Eclipse Zenoh private repository to the sources list, and install the
 `zenoh` package:
 .
 ```bash
 echo "deb [trusted=yes] https://download.eclipse.org/zenoh/debian-repo/ /" |
 sudo tee -a /etc/apt/sources.list.d/zenoh.list > /dev/null
 sudo apt update
 sudo apt install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 ### MacOS
 .
 Tap our brew package repository and install the `zenoh` formula:
 .
 ```bash
 brew tap eclipse-zenoh/homebrew-zenoh
 brew install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 -------------------------------
 .
 ## Rust API
 .
 * [Docs.rs for Zenoh](https://docs.rs/zenoh/latest/zenoh/)
 .
 -------------------------------
 .
 ## How to build it
 .
 > [!WARNING]
 > Zenoh and its ecosystem are under active development. When you build from
 git, make sure you also build from git any other Zenoh repository you plan to
 use (e.g. binding, plugin, backend, etc.). It may happen that some changes in
 git are not compatible with the most recent packaged Zenoh release (e.g. deb,
 docker, pip). We put particular effort in maintaining compatibility between the
 various git repositories in the Zenoh project.
 .
 Install [Cargo and
 Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html). Zenoh
 can be successfully compiled with Rust stable (>= 1.75.0), so no special
 configuration is required from your side. If you already have the Rust
 toolchain installed, make sure it is up-to-date with:
 .
 ```bash
 rustup update
 ```
 .
 To build Zenoh, just type the following command after having followed the
 previous instructions:
 .
 ```bash
 cargo build --release --all-targets
 ```
 .
 Zenoh's router is built as `target/release/zenohd`. All the examples are built
 into the `target/release/examples` directory. They can all work in
 peer-to-peer, or interconnected via the zenoh router.
 .
 -------------------------------
 .
 ## Quick tests of your build
 .
 ### Peer-to-peer tests
 .
 * **pub/sub**
   * run: `./target/release/examples/z_sub`
   * in another shell run: `./target/release/examples/z_put`
   * the subscriber should receive the publication.
 .
 * **get/queryable**
   * run: `./target/release/examples/z_queryable`
   * in another shell run: `./target/release/examples/z_get`
   * the queryable should display the log in its listener, and the get should
 receive the queryable result.
 .
 ### Routed tests
 .
 > [!NOTE]
 > **Windows users**: to properly execute the commands below in PowerShell you
 need to escape `"` characters as `\"`.
 .
 * **put / store / get**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell run:
 .
     ```sh
     ./target/release/examples/z_put`
     ```
 .
   * then run
 .
     ```sh
     ./target/release/examples/z_get
     ```
 .
   * the get should receive the stored publication.
 .
 * **REST API using `curl` tool**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, do a publication via the REST API:
 .
     ```sh
     curl -X PUT -d '"Hello World!"' http://localhost:8000/demo/example/test
     ```
 .
   * get it back via the REST API:
 .
     ```sh
     curl http://localhost:8000/demo/example/test
     ```
 .
 * **router admin space via the REST API**
   * run the Zenoh router with permission to perform config changes via the
 admin space, and with a memory storage:
 .
     ```sh
     ./target/release/zenohd --rest-http-port=8000 --adminspace-permissions=rw
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, get info of the zenoh router via the zenoh admin space
 (you may use `jq` for pretty json formatting):
 .
     ```sh
     curl -s http://localhost:8000/@/local/router | jq
     ```
 .
   * get the volumes of the router (only memory by default):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/volumes/*' | jq
     ```
 .
   * get the storages of the local router (the memory storage configured at
 startup on '/demo/example/**' should be present):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
   * add another memory storage on `/demo/mystore/**`:
 .
     ```sh
     curl -X PUT -H 'content-type:application/json' -d
 '{"key_expr":"demo/mystore/**","volume":"memory"}'
 http://localhost:8000/@/local/router/config/plugins/storage_manager/storages/mystore
     ```
 .
   * check it has been created:
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
 ### Configuration options
 .
 A Zenoh configuration file can be provided via CLI to all Zenoh examples and
 the Zenoh router.
 .
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file and
 the available options.
 .
 See other examples of Zenoh usage in [examples/](examples)
 .
 > [!NOTE]
 > **Zenoh Runtime Configuration**: Starting from version 0.11.0-rc, Zenoh
 allows for configuring the number of worker threads and other advanced options
 of the runtime. For guidance on utilizing it, please refer to the
 [doc](https://docs.rs/zenoh-runtime/latest/zenoh_runtime/enum.ZRuntime.html).
 .
 -------------------------------
 .
 ## Zenoh router command line arguments
 .
 `zenohd` accepts the following arguments:
 .
 * `--adminspace-permissions <[r|w|rw|none]>`: Configure the read and/or write
 permissions on the admin space. Default is read only.
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file. All
 properties of this configuration are optional, so you may not need such a large
 configuration for your use-case.
 * `--cfg <KEY>:<VALUE>`: allows you to change specific parts of the
 configuration right after it has been constructed. VALUE must be a valid JSON5
 value, and key must be a path through the configuration file, where each
 element is separated by a `/`. When inserting in parts of the config that are
 arrays, you may use indexes, or may use `+` to indicate that you want to append
 your value to the array. `--cfg` passed values will always override any
 previously existing value for their key in the configuration.
 * `-l, --listen <ENDPOINT>...`: An endpoint on which this router will listen
 for incoming sessions.
   Repeat this option to open several listeners. By default, `tcp/[::]:7447` is
 used. The following endpoints are currently supported:
   * TCP: `tcp/<host_name_or_IPv4_or_IPv6>:<port>`
   * UDP: `udp/<host_name_or_IPv4_or_IPv6>:<port>`
   * [TCP+TLS](https://zenoh.io/docs/manual/tls/): `tls/<host_name>:<port>`
   * [QUIC](https://zenoh.io/docs/manual/quic/): `quic/<host_name>:<port>`
 * `-e, --connect <ENDPOINT>...`: An endpoint this router will try to connect
 to. Repeat this option to connect to several peers or routers.
 * `--no-multicast-scouting`: By default zenohd replies to multicast scouting
 messages for being discovered by peers and clients.
   This option disables this feature.
 * `-i, --id <hex_string>`: The identifier (as an hexadecimal string - e.g.:
 A0B23...) that zenohd must use.
    **WARNING**: this identifier must be unique in the system! If not set, a
 random unsigned 128bit integer will be used.
 * `--no-timestamp`: By default zenohd adds a HLC-generated Timestamp to each
 routed Data if there isn't already one.
   This option disables this feature.
 * `-P, --plugin [<PLUGIN_NAME> | <PLUGIN_NAME>:<LIBRARY_PATH>]...`: A
 [plugin](https://zenoh.io/docs/manual/plugins/) that must be loaded. Accepted
 values:
   * a plugin name; zenohd will search for a library named
 `libzenoh_plugin_<name>.so` on Unix, `libzenoh_plugin_<PLUGIN_NAME>.dylib` on
 MacOS or `zenoh_plugin_<PLUGIN_NAME>.dll` on Windows.
   * `"<PLUGIN_NAME>:<LIBRARY_PATH>"`; the plugin will be loaded from library
 file at `<LIBRARY_PATH>`.
 .
   Repeat this option to load several plugins.
 * `--plugin-search-dir <DIRECTORY>...`: A directory where to search for
 [plugins](https://zenoh.io/docs/manual/plugins/) libraries to load.
   Repeat this option to specify several search directories'. By default, the
 plugins libraries will be searched in:
   `'/usr/local/lib:/usr/lib:~/.zenoh/lib:.'`
 * `--rest-http-port <rest-http-port>`: Configures the [REST
 plugin](https://zenoh.io/docs/manual/plugin-http/)'s HTTP port. Accepted
 values:
   * a port number
   * a string with format `<local_ip>:<port_number>` (to bind the HTTP server to
 a specific interface)
   * `"None"` to deactivate the REST plugin
 .
   If not specified, the REST plugin will be active on any interface (`[::]`)
 and port `8000`.
 .
 -------------------------------
 .
 ## Plugins
 .
 > [!WARNING]
 > As Rust doesn't have a stable ABI, the plugins should be
 built with the exact same Rust version as `zenohd`, and using for `zenoh`
 dependency the same version (or commit number) as `zenohd` with the same
 set of features. A plugin compiled with different Rust version or with
 different set of `zenoh` crate features will be rejected when `zenohd` attempts
 to load it. Otherwise, incompatibilities in memory mapping of structures shared
 between `zenohd` and the library could lead to a `"SIGSEGV"` crash.
 .
 By default the Zenoh router is delivered or built with 2 plugins. These may be
 configured through a configuration file, or through individual changes to the
 configuration via the `--cfg` CLI option or via zenoh puts on individual parts
 of the configuration.
 .
 > [!WARNING]
 > Since `v0.6`, `zenohd` no longer loads every available plugin at startup.
 Instead, only configured plugins are loaded (after processing `--cfg` and
 `--plugin` options). Once `zenohd` is running, plugins can be hot-loaded and,
 if they support it, reconfigured at runtime by editing their configuration
 through the adminspace.
 .
 **[REST plugin](https://zenoh.io/docs/manual/plugin-http/)** (exposing a REST
 API):
 This plugin converts GET and PUT REST requests into Zenoh gets and puts
 respectively.
 .
 Note that to activate the REST plugin on `zenohd` the CLI argument should be
 passed: `--rest-http-port=8000` (or any other port of your choice).
 .
 **[Storages plugin](https://zenoh.io/docs/manual/plugin-storage-manager/)**
 (managing [backends and
 storages](https://zenoh.io/docs/manual/plugin-storage-manager/#backends-and-volumes))
 This plugin allows you to easily define storages. These will store key-value
 pairs they subscribed to, and send the most recent ones when queried. Check out
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) for info on how to configure them.
 .
 -------------------------------
 .
 ## Troubleshooting
 .
 In case of troubles, please first check on [this
 page](https://zenoh.io/docs/getting-started/troubleshooting/) if the trouble
 and cause are already known.
 Otherwise, you can ask a question on the [zenoh Discord
 server](https://discord.gg/vSDSpqnbkm), or [create an
 issue](https://github.com/eclipse-zenoh/zenoh/issues).

Package: zenohd
Version: 1.2.1
Architecture: amd64
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 18505
Depends: libc6 (>= 2.29)
Filename: 1.2.1/zenohd_1.2.1_amd64.deb
Size: 4513756
MD5sum: 6c6c464d526fa60a59028ec1382981dd
SHA1: 87cd56279f74bad4d46545e1c990e264276db815
SHA256: 09afc38ce5868f98ba03b9d00be010a9ed0d399bcde7ad22468ebf5446d29911
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: Zenoh: The Zero Overhead Pub/Sub/Query Protocol.
 <img
 src="https://raw.githubusercontent.com/eclipse-zenoh/zenoh/master/zenoh-dragon.png"
 height="150">
 .
 [![CI](https://github.com/eclipse-zenoh/zenoh/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/eclipse-zenoh/zenoh/actions?query=workflow%3ACI+branch%3Amain++)
 [![Documentation
 Status](https://readthedocs.org/projects/zenoh-rust/badge/?version=latest)](https://zenoh-rust.readthedocs.io/en/latest/?badge=latest)
 [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions)
 [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/2GJ958VuHs)
 [![License](https://img.shields.io/badge/License-EPL%202.0-blue)](https://choosealicense.com/licenses/epl-2.0/)
 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
 .
 # Eclipse Zenoh
 .
 The Eclipse Zenoh: Zero Overhead Pub/sub, Store/Query and Compute.
 .
 Zenoh (pronounce _/zeno/_) unifies data in motion, data at rest and
 computations. It carefully blends traditional pub/sub with geo-distributed
 storages, queries and computations, while retaining a level of time and space
 efficiency that is well beyond any of the mainstream stacks.
 .
 Check the website [zenoh.io](http://zenoh.io) and the
 [roadmap](https://github.com/eclipse-zenoh/roadmap) for more detailed
 information.
 .
 -------------------------------
 .
 ## Getting Started
 .
 Zenoh is extremely easy to learn, the best place to master the fundamentals is
 our [getting started guide](https://zenoh.io/docs/getting-started/first-app/).
 .
 -------------------------------
 .
 ## How to install it
 .
 To install the latest release of the Zenoh router (`zenohd`) and its default
 plugins (REST API plugin and Storages Manager plugin) you can do as follows:
 .
 ### Manual installation (all platforms)
 .
 All release packages can be downloaded from
 [https://download.eclipse.org/zenoh/zenoh/latest/](https://download.eclipse.org/zenoh/zenoh/latest/).
 .
 Each subdirectory has the name of the Rust target. See the platforms each
 target corresponds to on
 [https://doc.rust-lang.org/stable/rustc/platform-support.html](https://doc.rust-lang.org/stable/rustc/platform-support.html).
 .
 Choose your platform and download the `.zip` file.
 Unzip it where you want, and run the extracted `zenohd` binary.
 .
 ### Linux Debian
 .
 Add Eclipse Zenoh private repository to the sources list, and install the
 `zenoh` package:
 .
 ```bash
 echo "deb [trusted=yes] https://download.eclipse.org/zenoh/debian-repo/ /" |
 sudo tee -a /etc/apt/sources.list.d/zenoh.list > /dev/null
 sudo apt update
 sudo apt install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 ### MacOS
 .
 Tap our brew package repository and install the `zenoh` formula:
 .
 ```bash
 brew tap eclipse-zenoh/homebrew-zenoh
 brew install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 -------------------------------
 .
 ## Rust API
 .
 * [Docs.rs for Zenoh](https://docs.rs/zenoh/latest/zenoh/)
 .
 -------------------------------
 .
 ## How to build it
 .
 > [!WARNING]
 > Zenoh and its ecosystem are under active development. When you build from
 git, make sure you also build from git any other Zenoh repository you plan to
 use (e.g. binding, plugin, backend, etc.). It may happen that some changes in
 git are not compatible with the most recent packaged Zenoh release (e.g. deb,
 docker, pip). We put particular effort in maintaining compatibility between the
 various git repositories in the Zenoh project.
 .
 Install [Cargo and
 Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html). Zenoh
 can be successfully compiled with Rust stable (>= 1.75.0), so no special
 configuration is required from your side. If you already have the Rust
 toolchain installed, make sure it is up-to-date with:
 .
 ```bash
 rustup update
 ```
 .
 To build Zenoh, just type the following command after having followed the
 previous instructions:
 .
 ```bash
 cargo build --release --all-targets
 ```
 .
 Zenoh's router is built as `target/release/zenohd`. All the examples are built
 into the `target/release/examples` directory. They can all work in
 peer-to-peer, or interconnected via the zenoh router.
 .
 -------------------------------
 .
 ## Quick tests of your build
 .
 ### Peer-to-peer tests
 .
 * **pub/sub**
   * run: `./target/release/examples/z_sub`
   * in another shell run: `./target/release/examples/z_put`
   * the subscriber should receive the publication.
 .
 * **get/queryable**
   * run: `./target/release/examples/z_queryable`
   * in another shell run: `./target/release/examples/z_get`
   * the queryable should display the log in its listener, and the get should
 receive the queryable result.
 .
 ### Routed tests
 .
 > [!NOTE]
 > **Windows users**: to properly execute the commands below in PowerShell you
 need to escape `"` characters as `\"`.
 .
 * **put / store / get**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell run:
 .
     ```sh
     ./target/release/examples/z_put`
     ```
 .
   * then run
 .
     ```sh
     ./target/release/examples/z_get
     ```
 .
   * the get should receive the stored publication.
 .
 * **REST API using `curl` tool**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, do a publication via the REST API:
 .
     ```sh
     curl -X PUT -d '"Hello World!"' http://localhost:8000/demo/example/test
     ```
 .
   * get it back via the REST API:
 .
     ```sh
     curl http://localhost:8000/demo/example/test
     ```
 .
 * **router admin space via the REST API**
   * run the Zenoh router with permission to perform config changes via the
 admin space, and with a memory storage:
 .
     ```sh
     ./target/release/zenohd --rest-http-port=8000 --adminspace-permissions=rw
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, get info of the zenoh router via the zenoh admin space
 (you may use `jq` for pretty json formatting):
 .
     ```sh
     curl -s http://localhost:8000/@/local/router | jq
     ```
 .
   * get the volumes of the router (only memory by default):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/volumes/*' | jq
     ```
 .
   * get the storages of the local router (the memory storage configured at
 startup on '/demo/example/**' should be present):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
   * add another memory storage on `/demo/mystore/**`:
 .
     ```sh
     curl -X PUT -H 'content-type:application/json' -d
 '{"key_expr":"demo/mystore/**","volume":"memory"}'
 http://localhost:8000/@/local/router/config/plugins/storage_manager/storages/mystore
     ```
 .
   * check it has been created:
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
 ### Configuration options
 .
 A Zenoh configuration file can be provided via CLI to all Zenoh examples and
 the Zenoh router.
 .
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file and
 the available options.
 .
 See other examples of Zenoh usage in [examples/](examples)
 .
 > [!NOTE]
 > **Zenoh Runtime Configuration**: Starting from version 0.11.0-rc, Zenoh
 allows for configuring the number of worker threads and other advanced options
 of the runtime. For guidance on utilizing it, please refer to the
 [doc](https://docs.rs/zenoh-runtime/latest/zenoh_runtime/enum.ZRuntime.html).
 .
 -------------------------------
 .
 ## Zenoh router command line arguments
 .
 `zenohd` accepts the following arguments:
 .
 * `--adminspace-permissions <[r|w|rw|none]>`: Configure the read and/or write
 permissions on the admin space. Default is read only.
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file. All
 properties of this configuration are optional, so you may not need such a large
 configuration for your use-case.
 * `--cfg <KEY>:<VALUE>`: allows you to change specific parts of the
 configuration right after it has been constructed. VALUE must be a valid JSON5
 value, and key must be a path through the configuration file, where each
 element is separated by a `/`. When inserting in parts of the config that are
 arrays, you may use indexes, or may use `+` to indicate that you want to append
 your value to the array. `--cfg` passed values will always override any
 previously existing value for their key in the configuration.
 * `-l, --listen <ENDPOINT>...`: An endpoint on which this router will listen
 for incoming sessions.
   Repeat this option to open several listeners. By default, `tcp/[::]:7447` is
 used. The following endpoints are currently supported:
   * TCP: `tcp/<host_name_or_IPv4_or_IPv6>:<port>`
   * UDP: `udp/<host_name_or_IPv4_or_IPv6>:<port>`
   * [TCP+TLS](https://zenoh.io/docs/manual/tls/): `tls/<host_name>:<port>`
   * [QUIC](https://zenoh.io/docs/manual/quic/): `quic/<host_name>:<port>`
 * `-e, --connect <ENDPOINT>...`: An endpoint this router will try to connect
 to. Repeat this option to connect to several peers or routers.
 * `--no-multicast-scouting`: By default zenohd replies to multicast scouting
 messages for being discovered by peers and clients.
   This option disables this feature.
 * `-i, --id <hex_string>`: The identifier (as an hexadecimal string - e.g.:
 A0B23...) that zenohd must use.
    **WARNING**: this identifier must be unique in the system! If not set, a
 random unsigned 128bit integer will be used.
 * `--no-timestamp`: By default zenohd adds a HLC-generated Timestamp to each
 routed Data if there isn't already one.
   This option disables this feature.
 * `-P, --plugin [<PLUGIN_NAME> | <PLUGIN_NAME>:<LIBRARY_PATH>]...`: A
 [plugin](https://zenoh.io/docs/manual/plugins/) that must be loaded. Accepted
 values:
   * a plugin name; zenohd will search for a library named
 `libzenoh_plugin_<name>.so` on Unix, `libzenoh_plugin_<PLUGIN_NAME>.dylib` on
 MacOS or `zenoh_plugin_<PLUGIN_NAME>.dll` on Windows.
   * `"<PLUGIN_NAME>:<LIBRARY_PATH>"`; the plugin will be loaded from library
 file at `<LIBRARY_PATH>`.
 .
   Repeat this option to load several plugins.
 * `--plugin-search-dir <DIRECTORY>...`: A directory where to search for
 [plugins](https://zenoh.io/docs/manual/plugins/) libraries to load.
   Repeat this option to specify several search directories'. By default, the
 plugins libraries will be searched in:
   `'/usr/local/lib:/usr/lib:~/.zenoh/lib:.'`
 * `--rest-http-port <rest-http-port>`: Configures the [REST
 plugin](https://zenoh.io/docs/manual/plugin-http/)'s HTTP port. Accepted
 values:
   * a port number
   * a string with format `<local_ip>:<port_number>` (to bind the HTTP server to
 a specific interface)
   * `"None"` to deactivate the REST plugin
 .
   If not specified, the REST plugin will be active on any interface (`[::]`)
 and port `8000`.
 .
 -------------------------------
 .
 ## Plugins
 .
 > [!WARNING]
 > As Rust doesn't have a stable ABI, the plugins should be
 built with the exact same Rust version as `zenohd`, and using for `zenoh`
 dependency the same version (or commit number) as `zenohd` with the same
 set of features. A plugin compiled with different Rust version or with
 different set of `zenoh` crate features will be rejected when `zenohd` attempts
 to load it. Otherwise, incompatibilities in memory mapping of structures shared
 between `zenohd` and the library could lead to a `"SIGSEGV"` crash.
 .
 By default the Zenoh router is delivered or built with 2 plugins. These may be
 configured through a configuration file, or through individual changes to the
 configuration via the `--cfg` CLI option or via zenoh puts on individual parts
 of the configuration.
 .
 > [!WARNING]
 > Since `v0.6`, `zenohd` no longer loads every available plugin at startup.
 Instead, only configured plugins are loaded (after processing `--cfg` and
 `--plugin` options). Once `zenohd` is running, plugins can be hot-loaded and,
 if they support it, reconfigured at runtime by editing their configuration
 through the adminspace.
 .
 **[REST plugin](https://zenoh.io/docs/manual/plugin-http/)** (exposing a REST
 API):
 This plugin converts GET and PUT REST requests into Zenoh gets and puts
 respectively.
 .
 Note that to activate the REST plugin on `zenohd` the CLI argument should be
 passed: `--rest-http-port=8000` (or any other port of your choice).
 .
 **[Storages plugin](https://zenoh.io/docs/manual/plugin-storage-manager/)**
 (managing [backends and
 storages](https://zenoh.io/docs/manual/plugin-storage-manager/#backends-and-volumes))
 This plugin allows you to easily define storages. These will store key-value
 pairs they subscribed to, and send the most recent ones when queried. Check out
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) for info on how to configure them.
 .
 -------------------------------
 .
 ## Troubleshooting
 .
 In case of troubles, please first check on [this
 page](https://zenoh.io/docs/getting-started/troubleshooting/) if the trouble
 and cause are already known.
 Otherwise, you can ask a question on the [zenoh Discord
 server](https://discord.gg/vSDSpqnbkm), or [create an
 issue](https://github.com/eclipse-zenoh/zenoh/issues).

Package: zenohd
Version: 1.2.1
Architecture: armhf
Maintainer: zenoh-dev@eclipse.org
Installed-Size: 17831
Filename: 1.2.1/zenohd_1.2.1_armhf.deb
Size: 4484964
MD5sum: bb83b75382451a75f53b437fab0ec04a
SHA1: 104e91e7872553d12b6563dd1d5786d8eadcc0a8
SHA256: 99c6ca750218a3967def5906f683ad4ce57e8c7c37092ff69bd2afd0acc4cef2
Section: net
Priority: optional
Homepage: http://zenoh.io
Description: Zenoh: The Zero Overhead Pub/Sub/Query Protocol.
 <img
 src="https://raw.githubusercontent.com/eclipse-zenoh/zenoh/master/zenoh-dragon.png"
 height="150">
 .
 [![CI](https://github.com/eclipse-zenoh/zenoh/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/eclipse-zenoh/zenoh/actions?query=workflow%3ACI+branch%3Amain++)
 [![Documentation
 Status](https://readthedocs.org/projects/zenoh-rust/badge/?version=latest)](https://zenoh-rust.readthedocs.io/en/latest/?badge=latest)
 [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions)
 [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/2GJ958VuHs)
 [![License](https://img.shields.io/badge/License-EPL%202.0-blue)](https://choosealicense.com/licenses/epl-2.0/)
 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
 .
 # Eclipse Zenoh
 .
 The Eclipse Zenoh: Zero Overhead Pub/sub, Store/Query and Compute.
 .
 Zenoh (pronounce _/zeno/_) unifies data in motion, data at rest and
 computations. It carefully blends traditional pub/sub with geo-distributed
 storages, queries and computations, while retaining a level of time and space
 efficiency that is well beyond any of the mainstream stacks.
 .
 Check the website [zenoh.io](http://zenoh.io) and the
 [roadmap](https://github.com/eclipse-zenoh/roadmap) for more detailed
 information.
 .
 -------------------------------
 .
 ## Getting Started
 .
 Zenoh is extremely easy to learn, the best place to master the fundamentals is
 our [getting started guide](https://zenoh.io/docs/getting-started/first-app/).
 .
 -------------------------------
 .
 ## How to install it
 .
 To install the latest release of the Zenoh router (`zenohd`) and its default
 plugins (REST API plugin and Storages Manager plugin) you can do as follows:
 .
 ### Manual installation (all platforms)
 .
 All release packages can be downloaded from
 [https://download.eclipse.org/zenoh/zenoh/latest/](https://download.eclipse.org/zenoh/zenoh/latest/).
 .
 Each subdirectory has the name of the Rust target. See the platforms each
 target corresponds to on
 [https://doc.rust-lang.org/stable/rustc/platform-support.html](https://doc.rust-lang.org/stable/rustc/platform-support.html).
 .
 Choose your platform and download the `.zip` file.
 Unzip it where you want, and run the extracted `zenohd` binary.
 .
 ### Linux Debian
 .
 Add Eclipse Zenoh private repository to the sources list, and install the
 `zenoh` package:
 .
 ```bash
 echo "deb [trusted=yes] https://download.eclipse.org/zenoh/debian-repo/ /" |
 sudo tee -a /etc/apt/sources.list.d/zenoh.list > /dev/null
 sudo apt update
 sudo apt install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 ### MacOS
 .
 Tap our brew package repository and install the `zenoh` formula:
 .
 ```bash
 brew tap eclipse-zenoh/homebrew-zenoh
 brew install zenoh
 ```
 .
 Then you can start run `zenohd`.
 .
 -------------------------------
 .
 ## Rust API
 .
 * [Docs.rs for Zenoh](https://docs.rs/zenoh/latest/zenoh/)
 .
 -------------------------------
 .
 ## How to build it
 .
 > [!WARNING]
 > Zenoh and its ecosystem are under active development. When you build from
 git, make sure you also build from git any other Zenoh repository you plan to
 use (e.g. binding, plugin, backend, etc.). It may happen that some changes in
 git are not compatible with the most recent packaged Zenoh release (e.g. deb,
 docker, pip). We put particular effort in maintaining compatibility between the
 various git repositories in the Zenoh project.
 .
 Install [Cargo and
 Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html). Zenoh
 can be successfully compiled with Rust stable (>= 1.75.0), so no special
 configuration is required from your side. If you already have the Rust
 toolchain installed, make sure it is up-to-date with:
 .
 ```bash
 rustup update
 ```
 .
 To build Zenoh, just type the following command after having followed the
 previous instructions:
 .
 ```bash
 cargo build --release --all-targets
 ```
 .
 Zenoh's router is built as `target/release/zenohd`. All the examples are built
 into the `target/release/examples` directory. They can all work in
 peer-to-peer, or interconnected via the zenoh router.
 .
 -------------------------------
 .
 ## Quick tests of your build
 .
 ### Peer-to-peer tests
 .
 * **pub/sub**
   * run: `./target/release/examples/z_sub`
   * in another shell run: `./target/release/examples/z_put`
   * the subscriber should receive the publication.
 .
 * **get/queryable**
   * run: `./target/release/examples/z_queryable`
   * in another shell run: `./target/release/examples/z_get`
   * the queryable should display the log in its listener, and the get should
 receive the queryable result.
 .
 ### Routed tests
 .
 > [!NOTE]
 > **Windows users**: to properly execute the commands below in PowerShell you
 need to escape `"` characters as `\"`.
 .
 * **put / store / get**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell run:
 .
     ```sh
     ./target/release/examples/z_put`
     ```
 .
   * then run
 .
     ```sh
     ./target/release/examples/z_get
     ```
 .
   * the get should receive the stored publication.
 .
 * **REST API using `curl` tool**
   * run the Zenoh router with a memory storage:
 .
     ```sh
     ./target/release/zenohd
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, do a publication via the REST API:
 .
     ```sh
     curl -X PUT -d '"Hello World!"' http://localhost:8000/demo/example/test
     ```
 .
   * get it back via the REST API:
 .
     ```sh
     curl http://localhost:8000/demo/example/test
     ```
 .
 * **router admin space via the REST API**
   * run the Zenoh router with permission to perform config changes via the
 admin space, and with a memory storage:
 .
     ```sh
     ./target/release/zenohd --rest-http-port=8000 --adminspace-permissions=rw
 --cfg='plugins/storage_manager/storages/demo:{key_expr:"demo/example/**",volume:"memory"}'
     ```
 .
   * in another shell, get info of the zenoh router via the zenoh admin space
 (you may use `jq` for pretty json formatting):
 .
     ```sh
     curl -s http://localhost:8000/@/local/router | jq
     ```
 .
   * get the volumes of the router (only memory by default):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/volumes/*' | jq
     ```
 .
   * get the storages of the local router (the memory storage configured at
 startup on '/demo/example/**' should be present):
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
   * add another memory storage on `/demo/mystore/**`:
 .
     ```sh
     curl -X PUT -H 'content-type:application/json' -d
 '{"key_expr":"demo/mystore/**","volume":"memory"}'
 http://localhost:8000/@/local/router/config/plugins/storage_manager/storages/mystore
     ```
 .
   * check it has been created:
 .
     ```sh
     curl -s 'http://localhost:8000/@/local/router/**/storages/*' | jq
     ```
 .
 ### Configuration options
 .
 A Zenoh configuration file can be provided via CLI to all Zenoh examples and
 the Zenoh router.
 .
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file and
 the available options.
 .
 See other examples of Zenoh usage in [examples/](examples)
 .
 > [!NOTE]
 > **Zenoh Runtime Configuration**: Starting from version 0.11.0-rc, Zenoh
 allows for configuring the number of worker threads and other advanced options
 of the runtime. For guidance on utilizing it, please refer to the
 [doc](https://docs.rs/zenoh-runtime/latest/zenoh_runtime/enum.ZRuntime.html).
 .
 -------------------------------
 .
 ## Zenoh router command line arguments
 .
 `zenohd` accepts the following arguments:
 .
 * `--adminspace-permissions <[r|w|rw|none]>`: Configure the read and/or write
 permissions on the admin space. Default is read only.
 * `-c, --config <FILE>`: a [JSON5](https://json5.org) configuration file.
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) shows the schema of this file. All
 properties of this configuration are optional, so you may not need such a large
 configuration for your use-case.
 * `--cfg <KEY>:<VALUE>`: allows you to change specific parts of the
 configuration right after it has been constructed. VALUE must be a valid JSON5
 value, and key must be a path through the configuration file, where each
 element is separated by a `/`. When inserting in parts of the config that are
 arrays, you may use indexes, or may use `+` to indicate that you want to append
 your value to the array. `--cfg` passed values will always override any
 previously existing value for their key in the configuration.
 * `-l, --listen <ENDPOINT>...`: An endpoint on which this router will listen
 for incoming sessions.
   Repeat this option to open several listeners. By default, `tcp/[::]:7447` is
 used. The following endpoints are currently supported:
   * TCP: `tcp/<host_name_or_IPv4_or_IPv6>:<port>`
   * UDP: `udp/<host_name_or_IPv4_or_IPv6>:<port>`
   * [TCP+TLS](https://zenoh.io/docs/manual/tls/): `tls/<host_name>:<port>`
   * [QUIC](https://zenoh.io/docs/manual/quic/): `quic/<host_name>:<port>`
 * `-e, --connect <ENDPOINT>...`: An endpoint this router will try to connect
 to. Repeat this option to connect to several peers or routers.
 * `--no-multicast-scouting`: By default zenohd replies to multicast scouting
 messages for being discovered by peers and clients.
   This option disables this feature.
 * `-i, --id <hex_string>`: The identifier (as an hexadecimal string - e.g.:
 A0B23...) that zenohd must use.
    **WARNING**: this identifier must be unique in the system! If not set, a
 random unsigned 128bit integer will be used.
 * `--no-timestamp`: By default zenohd adds a HLC-generated Timestamp to each
 routed Data if there isn't already one.
   This option disables this feature.
 * `-P, --plugin [<PLUGIN_NAME> | <PLUGIN_NAME>:<LIBRARY_PATH>]...`: A
 [plugin](https://zenoh.io/docs/manual/plugins/) that must be loaded. Accepted
 values:
   * a plugin name; zenohd will search for a library named
 `libzenoh_plugin_<name>.so` on Unix, `libzenoh_plugin_<PLUGIN_NAME>.dylib` on
 MacOS or `zenoh_plugin_<PLUGIN_NAME>.dll` on Windows.
   * `"<PLUGIN_NAME>:<LIBRARY_PATH>"`; the plugin will be loaded from library
 file at `<LIBRARY_PATH>`.
 .
   Repeat this option to load several plugins.
 * `--plugin-search-dir <DIRECTORY>...`: A directory where to search for
 [plugins](https://zenoh.io/docs/manual/plugins/) libraries to load.
   Repeat this option to specify several search directories'. By default, the
 plugins libraries will be searched in:
   `'/usr/local/lib:/usr/lib:~/.zenoh/lib:.'`
 * `--rest-http-port <rest-http-port>`: Configures the [REST
 plugin](https://zenoh.io/docs/manual/plugin-http/)'s HTTP port. Accepted
 values:
   * a port number
   * a string with format `<local_ip>:<port_number>` (to bind the HTTP server to
 a specific interface)
   * `"None"` to deactivate the REST plugin
 .
   If not specified, the REST plugin will be active on any interface (`[::]`)
 and port `8000`.
 .
 -------------------------------
 .
 ## Plugins
 .
 > [!WARNING]
 > As Rust doesn't have a stable ABI, the plugins should be
 built with the exact same Rust version as `zenohd`, and using for `zenoh`
 dependency the same version (or commit number) as `zenohd` with the same
 set of features. A plugin compiled with different Rust version or with
 different set of `zenoh` crate features will be rejected when `zenohd` attempts
 to load it. Otherwise, incompatibilities in memory mapping of structures shared
 between `zenohd` and the library could lead to a `"SIGSEGV"` crash.
 .
 By default the Zenoh router is delivered or built with 2 plugins. These may be
 configured through a configuration file, or through individual changes to the
 configuration via the `--cfg` CLI option or via zenoh puts on individual parts
 of the configuration.
 .
 > [!WARNING]
 > Since `v0.6`, `zenohd` no longer loads every available plugin at startup.
 Instead, only configured plugins are loaded (after processing `--cfg` and
 `--plugin` options). Once `zenohd` is running, plugins can be hot-loaded and,
 if they support it, reconfigured at runtime by editing their configuration
 through the adminspace.
 .
 **[REST plugin](https://zenoh.io/docs/manual/plugin-http/)** (exposing a REST
 API):
 This plugin converts GET and PUT REST requests into Zenoh gets and puts
 respectively.
 .
 Note that to activate the REST plugin on `zenohd` the CLI argument should be
 passed: `--rest-http-port=8000` (or any other port of your choice).
 .
 **[Storages plugin](https://zenoh.io/docs/manual/plugin-storage-manager/)**
 (managing [backends and
 storages](https://zenoh.io/docs/manual/plugin-storage-manager/#backends-and-volumes))
 This plugin allows you to easily define storages. These will store key-value
 pairs they subscribed to, and send the most recent ones when queried. Check out
 [DEFAULT_CONFIG.json5](DEFAULT_CONFIG.json5) for info on how to configure them.
 .
 -------------------------------
 .
 ## Troubleshooting
 .
 In case of troubles, please first check on [this
 page](https://zenoh.io/docs/getting-started/troubleshooting/) if the trouble
 and cause are already known.
 Otherwise, you can ask a question on the [zenoh Discord
 server](https://discord.gg/vSDSpqnbkm), or [create an
 issue](https://github.com/eclipse-zenoh/zenoh/issues).

