cylera-cli 1.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Cylera
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,279 @@
1
+ Metadata-Version: 2.4
2
+ Name: cylera-cli
3
+ Version: 1.1.0
4
+ Summary: Command-line interface for the Cylera Partner API
5
+ Author-email: Cylera <support@cylera.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/Cylera/cylera-cli
8
+ Project-URL: Repository, https://github.com/Cylera/cylera-cli
9
+ Project-URL: Bug Tracker, https://github.com/Cylera/cylera-cli/issues
10
+ Keywords: cylera,medical devices,iot security,healthcare
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: System Administrators
14
+ Classifier: Intended Audience :: Healthcare Industry
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Security
21
+ Classifier: Topic :: System :: Systems Administration
22
+ Requires-Python: >=3.10
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: cylera-client>=1.1.0
26
+ Requires-Dist: python-dotenv>=1.2.1
27
+ Requires-Dist: requests>=2.32.5
28
+ Requires-Dist: typer>=0.21.1
29
+ Dynamic: license-file
30
+
31
+ # Cylera CLI
32
+
33
+ A command-line interface for the [Cylera Partner API](https://github.com/Cylera/cylera-partner-api), providing read-only access to device inventory, threats, vulnerabilities, and network information.
34
+
35
+ It can be used stand-alone or integrated into an AI workflow using the bundled Claude Code skill (see below).
36
+
37
+ Alternatively, if you are looking to incorporate the power of Cylera into your AI workflows, you may also consider the [Cylera MCP Server](https://github.com/Cylera/cylera-mcp-server).
38
+
39
+ This [Cylera AI Integration Options document](CLI_VS_MCP.md) may help you decide which one may make sense depending on your AI workflows.
40
+
41
+ ## Demo
42
+ ![Demo][demo]
43
+
44
+ ## Requirements
45
+
46
+ - [uv](https://docs.astral.sh/uv/)
47
+ - Credentials for accessing Cylera
48
+
49
+ ## Installation
50
+
51
+ Install using [uv](https://docs.astral.sh/uv/):
52
+
53
+ ```bash
54
+ uv tool install .
55
+ ```
56
+
57
+ Then run commands directly:
58
+
59
+ ```bash
60
+ cylera --help
61
+ ```
62
+
63
+ To uninstall:
64
+
65
+ ```bash
66
+ uv tool uninstall cylera
67
+ ```
68
+
69
+ Alternatively, run without installing:
70
+
71
+ ```bash
72
+ uvx cylera --help
73
+ ```
74
+
75
+ ## Configuration
76
+
77
+ Run the interactive setup to configure your credentials:
78
+
79
+ ```bash
80
+ cylera init
81
+ ```
82
+
83
+ This will prompt you to:
84
+ 1. Select your Cylera API endpoint (US, UK, or Demo)
85
+ 2. Enter your username (email)
86
+ 3. Enter your password
87
+
88
+ Credentials are stored in a `.env` file in the current directory.
89
+
90
+ ### Manual Configuration
91
+
92
+ Alternatively, set environment variables directly:
93
+
94
+ ```bash
95
+ export CYLERA_BASE_URL="https://partner.us1.cylera.com/"
96
+ export CYLERA_USERNAME="your-email@example.com"
97
+ export CYLERA_PASSWORD="your-password"
98
+ ```
99
+
100
+ ### Doppler Secrets Management
101
+
102
+ Instead of storing the secrets in a .env file, you may choose to use a secrets
103
+ management solution such as [Doppler](https://www.doppler.com).
104
+
105
+ To use [Doppler](https://www.doppler.com), simply add the following prefix to all commands.
106
+
107
+ doppler run --
108
+
109
+ For example, to run "cylera devices" accessing secrets from Doppler, you would
110
+ run the following:
111
+
112
+ doppler run -- cylera devices
113
+
114
+ ### 1Password Secrets Management
115
+
116
+ Alternatively, you can use [1Password CLI](https://developer.1password.com/docs/cli/get-started/)
117
+ for secrets management. Set your environment ID and prefix commands with `op run`:
118
+
119
+ ```bash
120
+ export OP_ENVIRONMENT_ID=<your-environment-id>
121
+ op run --environment "$OP_ENVIRONMENT_ID" -- cylera devices
122
+ ```
123
+
124
+ ## Usage
125
+
126
+ ```bash
127
+ cylera <command> [options]
128
+ ```
129
+
130
+ ### Available Commands
131
+
132
+ | Command | Description |
133
+ |---------|-------------|
134
+ | `init` | Initialize Cylera CLI configuration interactively |
135
+ | `organization` | Get the organization associated with the current credentials |
136
+ | `organizations` | List organizations available to switch into |
137
+ | `switchorg` | Switch to a different organization |
138
+ | `resetorg` | Reset organization back to home |
139
+ | `device` | Get details for a specific device by MAC address |
140
+ | `devices` | Get a list of devices with optional filters |
141
+ | `deviceattributes` | Get attributes for a device by MAC address |
142
+ | `procedures` | Get a list of medical procedures |
143
+ | `subnets` | Get a list of network subnets |
144
+ | `riskmitigations` | Get mitigations for a specific vulnerability |
145
+ | `vulnerabilities` | Get a list of vulnerabilities |
146
+ | `threats` | Get a list of detected threats |
147
+
148
+ #### Organization
149
+
150
+ **Get organization info:**
151
+ ```bash
152
+ cylera organization
153
+ ```
154
+
155
+ **List available organizations:**
156
+ ```bash
157
+ cylera organizations
158
+ ```
159
+
160
+ **Switch to a different organization:**
161
+ ```bash
162
+ cylera switchorg <organization-id>
163
+ ```
164
+
165
+ **Reset back to home organization:**
166
+ ```bash
167
+ cylera resetorg
168
+ ```
169
+
170
+ #### Device Inventory
171
+
172
+ **List devices:**
173
+ ```bash
174
+ cylera devices --page-size 10
175
+ cylera devices --vendor Philips --class Medical
176
+ cylera devices --ip-address 10.40
177
+ ```
178
+
179
+ **Get a specific device:**
180
+ ```bash
181
+ cylera device 7f:14:22:72:00:e5
182
+ ```
183
+
184
+ **Get device attributes:**
185
+ ```bash
186
+ cylera deviceattributes 7f:14:22:72:00:e5
187
+ ```
188
+
189
+ #### Vulnerabilities & Risk
190
+
191
+ **List vulnerabilities:**
192
+ ```bash
193
+ cylera vulnerabilities --severity CRITICAL
194
+ cylera vulnerabilities --status OPEN --page-size 20
195
+ ```
196
+
197
+ **Get mitigations for a vulnerability:**
198
+ ```bash
199
+ cylera riskmitigations "Ripple20 (ICSA-20-168-01)"
200
+ ```
201
+
202
+ #### Threats
203
+
204
+ **List threats:**
205
+ ```bash
206
+ cylera threats --severity HIGH
207
+ cylera threats --mac-address bb:b0:71:cf:30:0a
208
+ ```
209
+
210
+ #### Network
211
+
212
+ **List subnets:**
213
+ ```bash
214
+ cylera subnets
215
+ cylera subnets --vlan 477
216
+ ```
217
+
218
+ #### Medical Procedures
219
+
220
+ **List procedures:**
221
+ ```bash
222
+ cylera procedures --page-size 10
223
+ cylera procedures --completed-after 2025/01/01
224
+ ```
225
+
226
+ ### Common Options
227
+
228
+ Most list commands support these options:
229
+
230
+ | Option | Description |
231
+ |--------|-------------|
232
+ | `--page` | Page number for pagination |
233
+ | `--page-size` | Results per page (max 100) |
234
+ | `--mac-address` | Filter by device MAC address |
235
+ | `--severity` | Filter by severity (INFO, LOW, MEDIUM, HIGH, CRITICAL) |
236
+ | `--status` | Filter by status (OPEN, IN_PROGRESS, RESOLVED, SUPPRESSED) |
237
+
238
+ ### Output
239
+
240
+ All commands output JSON to stdout, which can be piped to tools like `jq`:
241
+
242
+ ```bash
243
+ cylera devices --page-size 5 | jq '.devices[].hostname'
244
+ ```
245
+
246
+ ## Debugging
247
+
248
+ Enable debug output to see request details:
249
+
250
+ ```bash
251
+ DEBUG=1 cylera devices --page-size 1
252
+ ```
253
+
254
+ ## API Endpoints
255
+
256
+ The CLI supports these Cylera Partner API regions:
257
+
258
+ - US: `https://partner.us1.cylera.com/`
259
+ - UK: `https://partner.uk1.cylera.com/`
260
+ - Demo: `https://partner.demo.cylera.com/`
261
+
262
+ ## Claude Code Skills
263
+
264
+ This repo includes Claude Code skills for querying Cylera data and exporting results to CSV directly from a conversation — no scripting required.
265
+
266
+ | Skill | Description |
267
+ |-------|-------------|
268
+ | `/cylera-attributes` | Find devices by attribute label (e.g. TeamViewer, end of life) |
269
+ | `/cylera-vulnerabilities` | Export vulnerabilities filtered by severity and/or status |
270
+ | `/cylera-threats` | Export threats filtered by severity and/or status |
271
+ | `/cylera-devices` | Export device inventory filtered by class, vendor, type, or OS |
272
+
273
+ See [CODING_AGENT_SKILLS.md](CODING_AGENT_SKILLS.md) for full installation instructions and usage examples.
274
+
275
+ ## License
276
+
277
+ See LICENSE file for details.
278
+
279
+ [demo]: demo.webp
@@ -0,0 +1,249 @@
1
+ # Cylera CLI
2
+
3
+ A command-line interface for the [Cylera Partner API](https://github.com/Cylera/cylera-partner-api), providing read-only access to device inventory, threats, vulnerabilities, and network information.
4
+
5
+ It can be used stand-alone or integrated into an AI workflow using the bundled Claude Code skill (see below).
6
+
7
+ Alternatively, if you are looking to incorporate the power of Cylera into your AI workflows, you may also consider the [Cylera MCP Server](https://github.com/Cylera/cylera-mcp-server).
8
+
9
+ This [Cylera AI Integration Options document](CLI_VS_MCP.md) may help you decide which one may make sense depending on your AI workflows.
10
+
11
+ ## Demo
12
+ ![Demo][demo]
13
+
14
+ ## Requirements
15
+
16
+ - [uv](https://docs.astral.sh/uv/)
17
+ - Credentials for accessing Cylera
18
+
19
+ ## Installation
20
+
21
+ Install using [uv](https://docs.astral.sh/uv/):
22
+
23
+ ```bash
24
+ uv tool install .
25
+ ```
26
+
27
+ Then run commands directly:
28
+
29
+ ```bash
30
+ cylera --help
31
+ ```
32
+
33
+ To uninstall:
34
+
35
+ ```bash
36
+ uv tool uninstall cylera
37
+ ```
38
+
39
+ Alternatively, run without installing:
40
+
41
+ ```bash
42
+ uvx cylera --help
43
+ ```
44
+
45
+ ## Configuration
46
+
47
+ Run the interactive setup to configure your credentials:
48
+
49
+ ```bash
50
+ cylera init
51
+ ```
52
+
53
+ This will prompt you to:
54
+ 1. Select your Cylera API endpoint (US, UK, or Demo)
55
+ 2. Enter your username (email)
56
+ 3. Enter your password
57
+
58
+ Credentials are stored in a `.env` file in the current directory.
59
+
60
+ ### Manual Configuration
61
+
62
+ Alternatively, set environment variables directly:
63
+
64
+ ```bash
65
+ export CYLERA_BASE_URL="https://partner.us1.cylera.com/"
66
+ export CYLERA_USERNAME="your-email@example.com"
67
+ export CYLERA_PASSWORD="your-password"
68
+ ```
69
+
70
+ ### Doppler Secrets Management
71
+
72
+ Instead of storing the secrets in a .env file, you may choose to use a secrets
73
+ management solution such as [Doppler](https://www.doppler.com).
74
+
75
+ To use [Doppler](https://www.doppler.com), simply add the following prefix to all commands.
76
+
77
+ doppler run --
78
+
79
+ For example, to run "cylera devices" accessing secrets from Doppler, you would
80
+ run the following:
81
+
82
+ doppler run -- cylera devices
83
+
84
+ ### 1Password Secrets Management
85
+
86
+ Alternatively, you can use [1Password CLI](https://developer.1password.com/docs/cli/get-started/)
87
+ for secrets management. Set your environment ID and prefix commands with `op run`:
88
+
89
+ ```bash
90
+ export OP_ENVIRONMENT_ID=<your-environment-id>
91
+ op run --environment "$OP_ENVIRONMENT_ID" -- cylera devices
92
+ ```
93
+
94
+ ## Usage
95
+
96
+ ```bash
97
+ cylera <command> [options]
98
+ ```
99
+
100
+ ### Available Commands
101
+
102
+ | Command | Description |
103
+ |---------|-------------|
104
+ | `init` | Initialize Cylera CLI configuration interactively |
105
+ | `organization` | Get the organization associated with the current credentials |
106
+ | `organizations` | List organizations available to switch into |
107
+ | `switchorg` | Switch to a different organization |
108
+ | `resetorg` | Reset organization back to home |
109
+ | `device` | Get details for a specific device by MAC address |
110
+ | `devices` | Get a list of devices with optional filters |
111
+ | `deviceattributes` | Get attributes for a device by MAC address |
112
+ | `procedures` | Get a list of medical procedures |
113
+ | `subnets` | Get a list of network subnets |
114
+ | `riskmitigations` | Get mitigations for a specific vulnerability |
115
+ | `vulnerabilities` | Get a list of vulnerabilities |
116
+ | `threats` | Get a list of detected threats |
117
+
118
+ #### Organization
119
+
120
+ **Get organization info:**
121
+ ```bash
122
+ cylera organization
123
+ ```
124
+
125
+ **List available organizations:**
126
+ ```bash
127
+ cylera organizations
128
+ ```
129
+
130
+ **Switch to a different organization:**
131
+ ```bash
132
+ cylera switchorg <organization-id>
133
+ ```
134
+
135
+ **Reset back to home organization:**
136
+ ```bash
137
+ cylera resetorg
138
+ ```
139
+
140
+ #### Device Inventory
141
+
142
+ **List devices:**
143
+ ```bash
144
+ cylera devices --page-size 10
145
+ cylera devices --vendor Philips --class Medical
146
+ cylera devices --ip-address 10.40
147
+ ```
148
+
149
+ **Get a specific device:**
150
+ ```bash
151
+ cylera device 7f:14:22:72:00:e5
152
+ ```
153
+
154
+ **Get device attributes:**
155
+ ```bash
156
+ cylera deviceattributes 7f:14:22:72:00:e5
157
+ ```
158
+
159
+ #### Vulnerabilities & Risk
160
+
161
+ **List vulnerabilities:**
162
+ ```bash
163
+ cylera vulnerabilities --severity CRITICAL
164
+ cylera vulnerabilities --status OPEN --page-size 20
165
+ ```
166
+
167
+ **Get mitigations for a vulnerability:**
168
+ ```bash
169
+ cylera riskmitigations "Ripple20 (ICSA-20-168-01)"
170
+ ```
171
+
172
+ #### Threats
173
+
174
+ **List threats:**
175
+ ```bash
176
+ cylera threats --severity HIGH
177
+ cylera threats --mac-address bb:b0:71:cf:30:0a
178
+ ```
179
+
180
+ #### Network
181
+
182
+ **List subnets:**
183
+ ```bash
184
+ cylera subnets
185
+ cylera subnets --vlan 477
186
+ ```
187
+
188
+ #### Medical Procedures
189
+
190
+ **List procedures:**
191
+ ```bash
192
+ cylera procedures --page-size 10
193
+ cylera procedures --completed-after 2025/01/01
194
+ ```
195
+
196
+ ### Common Options
197
+
198
+ Most list commands support these options:
199
+
200
+ | Option | Description |
201
+ |--------|-------------|
202
+ | `--page` | Page number for pagination |
203
+ | `--page-size` | Results per page (max 100) |
204
+ | `--mac-address` | Filter by device MAC address |
205
+ | `--severity` | Filter by severity (INFO, LOW, MEDIUM, HIGH, CRITICAL) |
206
+ | `--status` | Filter by status (OPEN, IN_PROGRESS, RESOLVED, SUPPRESSED) |
207
+
208
+ ### Output
209
+
210
+ All commands output JSON to stdout, which can be piped to tools like `jq`:
211
+
212
+ ```bash
213
+ cylera devices --page-size 5 | jq '.devices[].hostname'
214
+ ```
215
+
216
+ ## Debugging
217
+
218
+ Enable debug output to see request details:
219
+
220
+ ```bash
221
+ DEBUG=1 cylera devices --page-size 1
222
+ ```
223
+
224
+ ## API Endpoints
225
+
226
+ The CLI supports these Cylera Partner API regions:
227
+
228
+ - US: `https://partner.us1.cylera.com/`
229
+ - UK: `https://partner.uk1.cylera.com/`
230
+ - Demo: `https://partner.demo.cylera.com/`
231
+
232
+ ## Claude Code Skills
233
+
234
+ This repo includes Claude Code skills for querying Cylera data and exporting results to CSV directly from a conversation — no scripting required.
235
+
236
+ | Skill | Description |
237
+ |-------|-------------|
238
+ | `/cylera-attributes` | Find devices by attribute label (e.g. TeamViewer, end of life) |
239
+ | `/cylera-vulnerabilities` | Export vulnerabilities filtered by severity and/or status |
240
+ | `/cylera-threats` | Export threats filtered by severity and/or status |
241
+ | `/cylera-devices` | Export device inventory filtered by class, vendor, type, or OS |
242
+
243
+ See [CODING_AGENT_SKILLS.md](CODING_AGENT_SKILLS.md) for full installation instructions and usage examples.
244
+
245
+ ## License
246
+
247
+ See LICENSE file for details.
248
+
249
+ [demo]: demo.webp