netconverter-cli 0.4.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.
Files changed (59) hide show
  1. netconverter_cli-0.4.0/.gitignore +9 -0
  2. netconverter_cli-0.4.0/CHANGELOG.md +189 -0
  3. netconverter_cli-0.4.0/LICENSE +21 -0
  4. netconverter_cli-0.4.0/PKG-INFO +167 -0
  5. netconverter_cli-0.4.0/QUICK_START.md +128 -0
  6. netconverter_cli-0.4.0/README.md +133 -0
  7. netconverter_cli-0.4.0/SECURITY.md +14 -0
  8. netconverter_cli-0.4.0/docs/COMMANDS.md +165 -0
  9. netconverter_cli-0.4.0/docs/PRIVACY.md +130 -0
  10. netconverter_cli-0.4.0/docs/RELEASING.md +88 -0
  11. netconverter_cli-0.4.0/docs/VERIFICATION.md +103 -0
  12. netconverter_cli-0.4.0/docs/connect/README.md +61 -0
  13. netconverter_cli-0.4.0/docs/connect/chatgpt.md +22 -0
  14. netconverter_cli-0.4.0/docs/connect/claude-ai.md +36 -0
  15. netconverter_cli-0.4.0/docs/connect/claude-code.md +31 -0
  16. netconverter_cli-0.4.0/docs/connect/claude-desktop.md +42 -0
  17. netconverter_cli-0.4.0/docs/connect/getting-access.md +82 -0
  18. netconverter_cli-0.4.0/docs/connect/other-assistants.md +32 -0
  19. netconverter_cli-0.4.0/examples/README.md +11 -0
  20. netconverter_cli-0.4.0/pyproject.toml +56 -0
  21. netconverter_cli-0.4.0/src/netconverter_cli/__init__.py +3 -0
  22. netconverter_cli-0.4.0/src/netconverter_cli/activity.py +83 -0
  23. netconverter_cli-0.4.0/src/netconverter_cli/api.py +257 -0
  24. netconverter_cli-0.4.0/src/netconverter_cli/backend.py +107 -0
  25. netconverter_cli-0.4.0/src/netconverter_cli/branding.py +79 -0
  26. netconverter_cli-0.4.0/src/netconverter_cli/catalog.py +162 -0
  27. netconverter_cli-0.4.0/src/netconverter_cli/clerk.py +602 -0
  28. netconverter_cli-0.4.0/src/netconverter_cli/cli.py +521 -0
  29. netconverter_cli-0.4.0/src/netconverter_cli/commands.py +63 -0
  30. netconverter_cli-0.4.0/src/netconverter_cli/connect.py +465 -0
  31. netconverter_cli-0.4.0/src/netconverter_cli/controller.py +331 -0
  32. netconverter_cli-0.4.0/src/netconverter_cli/credentials.py +94 -0
  33. netconverter_cli-0.4.0/src/netconverter_cli/guided.py +365 -0
  34. netconverter_cli-0.4.0/src/netconverter_cli/mcp_server.py +640 -0
  35. netconverter_cli-0.4.0/src/netconverter_cli/palette.py +16 -0
  36. netconverter_cli-0.4.0/src/netconverter_cli/presentation.py +254 -0
  37. netconverter_cli-0.4.0/src/netconverter_cli/privacy.py +105 -0
  38. netconverter_cli-0.4.0/src/netconverter_cli/providers.py +246 -0
  39. netconverter_cli-0.4.0/src/netconverter_cli/remote_mcp.py +175 -0
  40. netconverter_cli-0.4.0/src/netconverter_cli/setup.py +179 -0
  41. netconverter_cli-0.4.0/src/netconverter_cli/tui.py +607 -0
  42. netconverter_cli-0.4.0/src/netconverter_cli/update.py +344 -0
  43. netconverter_cli-0.4.0/src/netconverter_cli/workspace.py +148 -0
  44. netconverter_cli-0.4.0/tests/conftest.py +22 -0
  45. netconverter_cli-0.4.0/tests/test_boundaries.py +68 -0
  46. netconverter_cli-0.4.0/tests/test_clerk.py +400 -0
  47. netconverter_cli-0.4.0/tests/test_clerk_host_binding.py +74 -0
  48. netconverter_cli-0.4.0/tests/test_cli_020.py +229 -0
  49. netconverter_cli-0.4.0/tests/test_connect_030.py +180 -0
  50. netconverter_cli-0.4.0/tests/test_connect_031.py +108 -0
  51. netconverter_cli-0.4.0/tests/test_download_analysis.py +87 -0
  52. netconverter_cli-0.4.0/tests/test_inline.py +175 -0
  53. netconverter_cli-0.4.0/tests/test_mcp.py +714 -0
  54. netconverter_cli-0.4.0/tests/test_presentation.py +101 -0
  55. netconverter_cli-0.4.0/tests/test_protocols.py +173 -0
  56. netconverter_cli-0.4.0/tests/test_sessions.py +128 -0
  57. netconverter_cli-0.4.0/tests/test_setup.py +143 -0
  58. netconverter_cli-0.4.0/tests/test_signin_default.py +188 -0
  59. netconverter_cli-0.4.0/tests/test_update.py +231 -0
@@ -0,0 +1,9 @@
1
+ .venv/
2
+ dist/
3
+ __pycache__/
4
+ .pytest_cache/
5
+ *.egg-info/
6
+ .netconverter/
7
+
8
+ .superdesign/
9
+ .DS_Store
@@ -0,0 +1,189 @@
1
+ # Changelog
2
+
3
+ ## 0.4.0 — 2026-10-21
4
+
5
+ - **On PyPI as `netconverter-cli`.** `uv tool install --python 3.12 netconverter-cli`
6
+ installs the CLI; each tagged release is published from GitHub Actions with PyPI
7
+ trusted publishing, and the wheel plus `SHA256SUMS` stay on the GitHub Release.
8
+ - **One-line installers.** `curl -LsSf https://netconverter.ai/install.sh | sh`
9
+ (macOS/Linux) and `irm https://netconverter.ai/install.ps1 | iex` (Windows) install uv
10
+ if needed and the CLI from PyPI (or the latest release wheel after its SHA-256 check
11
+ when PyPI is unreachable), sign you in, create `~/migrations` and run
12
+ `connect --all`. `--yes` for IT/MDM, `--no-connect`, `--workspace PATH`. Safe to run
13
+ again. Sources: `scripts/install.sh`, `scripts/install.ps1`.
14
+ - **`netconverter update` follows the install.** A copy uv installed from PyPI is
15
+ upgraded with `uv tool upgrade netconverter-cli`; a copy installed from a wheel keeps
16
+ the verified-wheel path.
17
+ - **`netconverter --version`.**
18
+
19
+ ## 0.3.2 — 2026-10-21
20
+
21
+ - **Safer Claude Code read rule.** `connect claude-code` no longer offers the
22
+ `Read(//<folder>/**)` deny rule when the workspace is your home folder (or contains
23
+ it): there it would stop Claude Code reading every project. Use a dedicated folder
24
+ such as `~/migrations`.
25
+ - **`connect --all` skips optional extras** such as that rule; run
26
+ `netconverter connect claude-code` on its own to review it.
27
+ - **Getting access guide** for new users and administrators: `docs/connect/getting-access.md`.
28
+
29
+ ## 0.3.1 — 2026-10-21
30
+
31
+ - **More assistants.** `netconverter connect gemini` (Gemini CLI), `windsurf` and
32
+ `lmstudio` merge the bridge into each client's MCP config, keeping every other key
33
+ and a `.bak`, like `claude-desktop`.
34
+ - **ChatGPT and claude.ai.** `netconverter connect chatgpt` / `claude-ai` print the
35
+ steps to add NetConverter's hosted MCP as a custom connector. Those apps cannot start
36
+ a local program, so they read jobs, results and the knowledge base but do not submit
37
+ files; nothing on the computer is changed.
38
+ - **`netconverter connect --all`** connects every local assistant found on this
39
+ computer that is not connected yet, one prompt each (`--yes` for all). The list view
40
+ now marks connected (●), found (○ found on this computer) and remote (↗) clients.
41
+
42
+ ## 0.3.0 — 2026-10-20
43
+
44
+ - **Remote tool allowlist.** The bridge proxies a NetConverter MCP tool only when it
45
+ is on the client's allowlist: the read tools the server advertises today plus the
46
+ new `get_account`. A tool the server adds later, or any `submit_*` tool, is not
47
+ offered to your AI until a client release lists it.
48
+ - **Strict mode.** `netconverter mcp --strict` (or `NETCONVERTER_MCP_STRICT=1`)
49
+ proxies only the strict-view set: `list_jobs`, `select_job`, `get_account`, `search`,
50
+ `fetch`, `kb_search`, `kb_explain`, `vendor_capability_lookup`, `get_job_brief`,
51
+ `get_evidence`, `get_report`, whatever the server advertises. When your account is
52
+ in the server's strict view mode, names in results arrive as `<name:…>` tokens.
53
+ - **New bridge tools.** `account` (tier, job types, rate limit, daily quota, auth kind,
54
+ client version, `update_available`; no tokens or e-mail addresses) and
55
+ `wait_for_job(job_id, timeout_s ≤ 600)`, which polls with backoff and returns the
56
+ `job_status` summary plus `waited_s` and `timed_out`. It sends MCP progress
57
+ notifications when the assistant asks for them. `job_status` also reports the job's
58
+ stage and percentage when the server sends them. `submit_file` accepts
59
+ `job_type: "analyze"` as an alias of validate.
60
+ - **`netconverter connect claude-desktop`** merges the bridge into Claude Desktop's
61
+ `claude_desktop_config.json` (macOS and Windows), after showing a diff, with a `.bak`.
62
+ - **Claude Code read rule.** After `connect claude-code`, the CLI and the app offer
63
+ (default yes) to add `Read(//<folder>/**)` to `permissions.deny` in
64
+ `~/.claude/settings.json`, so Claude Code works on the folder's configurations
65
+ through the bridge instead of reading them itself. See [privacy](docs/PRIVACY.md).
66
+ - **`netconverter update`** installs the latest GitHub release after verifying its
67
+ SHA-256 against the release's `SHA256SUMS` (`--check` only reports, `--yes` skips
68
+ the prompt). Interactive commands show a one-line notice at most once a day when
69
+ a newer release exists; `NETCONVERTER_NO_UPDATE_CHECK=1` turns it off.
70
+
71
+ ## 0.2.2 — 2026-10-19
72
+
73
+ - **Validate and optimize downloads keep the result.** `download` (bridge and app)
74
+ saved only an empty `report.json` for these jobs; it now saves
75
+ `<job>.validation.json` or `<job>.optimization.json` from the job's result, plus the
76
+ evidence workbook when the server has one. An unfinished job answers
77
+ `job_not_completed` instead of writing an empty file. Conversion downloads are unchanged.
78
+
79
+ ## 0.2.1 — 2026-10-19
80
+
81
+ - **Your sign-in just works.** After `netconverter login --clerk`, plain commands
82
+ (`capabilities`, `jobs`, `validate`, `convert`, …) and the app use it with no
83
+ `NETCONVERTER_AUTH` variable; 0.2.0 prompted for an API key. A stored key is
84
+ still used first, the sign-in only ever goes to a trusted NetConverter host, and
85
+ `NETCONVERTER_AUTH=key|clerk` forces one. With neither, the command says how to
86
+ connect instead of prompting.
87
+ - **First-run setup offers sign-in.** Plain `netconverter` in a new folder uses an
88
+ existing sign-in, or asks: sign in with your NetConverter account (browser) or
89
+ paste an API key. A workspace's `connection.json` still never chooses the credential.
90
+
91
+ ## 0.2.0 — 2026-10-19
92
+
93
+ **NetConverter CLI.** The package is now `netconverter-cli` (the command is still
94
+ `netconverter`). Run `uv tool uninstall netconverter-terminal` before installing;
95
+ saved keys, sign-ins and workspace state carry over.
96
+
97
+ - **Every vendor the server supports.** Full-API keys and Clerk sign-ins use the
98
+ External API: menus come from `GET /capabilities` (vendors, source → target paths,
99
+ job types, limits), so firewalls, routers and switches all work and new server
100
+ vendors need no client release. Terminal Quick pilot keys keep ASA → Palo Alto
101
+ and are labelled as such.
102
+ - **`/validate` and `/optimize`** alongside `/convert`; the file's vendor is
103
+ suggested from a local look at its first lines.
104
+ - **Redesigned app.** One-row header (server, bridge, model, allowance), cards with
105
+ verdict badges, a bordered choice panel with a `▸` cursor and 1–9 jump keys, a
106
+ bordered prompt, one status line with a spinner and progress bar, a contextual
107
+ footer, readable labels instead of raw codes, and no wrapped review tables at 80 columns.
108
+ - **Your AI, visible.** `netconverter connect claude-code|cursor|vscode|codex` (or
109
+ `/connect`) wires the bridge after showing the change. The bridge records metadata-only
110
+ activity, shown live in the app and in `/activity`.
111
+ - **Bridge fixes.** Submissions send `technology` from the vendor code (router and
112
+ switch jobs were labelled firewall). Validate/optimize work as soon as the server
113
+ advertises them in `/me` (server change shipped alongside). Downloads add the
114
+ evidence workbook.
115
+ - `netconverter capabilities`; `validate`/`convert --vendor … --to …` in plain mode.
116
+ `login` and `setup` accept full-API keys (0.1.x checked only the pilot profile).
117
+
118
+ ## 0.1.6 — 2026-10-18
119
+
120
+ - `netconverter login --clerk`: sign in with your NetConverter account (OAuth 2.1
121
+ PKCE through clerk.netconverter.ai). `--device` for machines without a browser.
122
+ Tokens live only in the OS credential store and refresh automatically.
123
+ `netconverter whoami` and `netconverter logout` added. Key login is unchanged.
124
+ - `netconverter mcp`: a local MCP server for Claude Code, Cursor, VS Code and Codex.
125
+ Your AI passes file paths; the client uploads the configuration directly to
126
+ NetConverter, so the configuration never goes through the model. Tools:
127
+ `submit_file`, `job_status`, `download`, plus the remote read-only NetConverter
128
+ tools (evidence, NAT, flows, knowledge base).
129
+ - Your sign-in is only ever sent to api.netconverter.ai (or hosts you trust with
130
+ `NETCONVERTER_TRUSTED_HOSTS`); a workspace file cannot redirect it.
131
+
132
+ ## 0.1.5 — 2026-10-01
133
+
134
+ - Display server-authorized unlimited allowances as Unlimited in the status line
135
+ and `/allowance`. This client update does not grant or change server entitlements.
136
+
137
+ ## 0.1.4 — 2026-10-01
138
+
139
+ - Skip `evidence.json` and `pipeline-evidence.json` in automatic downloads and
140
+ `/download`. Keep converted configs, YAML, reports and TXT/XLSX evidence.
141
+ - Existing local artifacts are not deleted. Follow-up query JSON/TXT is unchanged.
142
+
143
+ ## 0.1.3 — 2026-10-01
144
+
145
+ - Replace modal forms, dropdowns and oversized buttons with compact inline
146
+ keyboard questions: arrow keys choose, Enter continues, Esc cancels a choice.
147
+ - Disable mouse capture so normal terminal text selection works.
148
+ - `/convert` starts with an ASA source, then asks separately for Palo Alto output,
149
+ server-supported options, cleanup and optional advanced overrides. Show the
150
+ review before explicit job submission; uploads are separately confirmed.
151
+ - `/open`, `/analyze` and `/model` use the same inline flow. Keep keys masked and
152
+ out of conversation history, preserve model connections on failed retries.
153
+ - A selected Palo Alto source now leads `/convert` to ASA file selection instead
154
+ of leaving the user at a source-format validation error.
155
+ - Preserve server job status, warnings, downloads, privacy and no-clobber behavior.
156
+
157
+ ## 0.1.2 — 2026-10-01
158
+
159
+ - Implement the approved NETCONVERTER.ai terminal design: compact welcome commands,
160
+ persistent prompt/status, workspace file browser, readable jobs and local artifacts.
161
+ - File browser actions upload the selected config and open explicit conversion
162
+ choices or submit analysis. ASA-only migration and the 50,000-byte limit remain.
163
+ - Replace raw JSON help and generic errors with readable commands and next steps.
164
+ - Add `/model` with hidden key entry, a synthetic compatibility probe, and retry
165
+ without replacing a working model on failure. Setup distinguishes provider
166
+ authentication, permissions, model access, quota, rate limits, and connectivity.
167
+ - Detect keys accidentally entered in the server URL field and reprompt.
168
+ - Display server progress/verdicts and hash-verified local downloads. Failed
169
+ downloads remain retryable; existing outputs and source configurations survive.
170
+ - Responsive interaction coverage at 126×41 and 80×24; expanded negative tests.
171
+
172
+ Model protocol tests use mocks. The reported customer OpenAI connection failure
173
+ still needs live retesting with the customer's chosen API model. This release
174
+ does not add archive encryption, job cancellation, or a runtime guarantee.
175
+
176
+ ## 0.1.1 — 2026-10-01
177
+
178
+ First public pilot client release under the MIT license.
179
+
180
+ - NetConverter branding and guided ASA → Palo Alto SET/XML/Panorama conversion.
181
+ - Production HTTPS setup, separate server/model credentials, and OS credential storage.
182
+ - Optional Anthropic, OpenAI, Gemini, and Ollama operation adapters.
183
+ - Analysis, optimization findings, structured policy questions, and revision selection.
184
+ - Server job IDs, resumable sessions, and verified artifacts beside the source.
185
+ - Customer installation, settings, privacy, troubleshooting, and uninstall guides.
186
+
187
+ This public repository begins with a reviewed client snapshot. Private development
188
+ history and server implementation are not included. See verification notes for
189
+ remaining acceptance work.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ValeronLabs LLC
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,167 @@
1
+ Metadata-Version: 2.5
2
+ Name: netconverter-cli
3
+ Version: 0.4.0
4
+ Summary: NetConverter CLI — any-vendor network configuration migration, validation and optimization, and a local MCP bridge for your AI assistant
5
+ Project-URL: Homepage, https://netconverter.ai
6
+ Project-URL: Repository, https://github.com/valeronlabs/netconverter_terminals
7
+ Project-URL: Documentation, https://github.com/valeronlabs/netconverter_terminals/blob/main/QUICK_START.md
8
+ Project-URL: Issues, https://github.com/valeronlabs/netconverter_terminals/issues
9
+ Project-URL: Changelog, https://github.com/valeronlabs/netconverter_terminals/blob/main/CHANGELOG.md
10
+ Author-email: ValeronLabs LLC <contact@netconverter.ai>
11
+ License-Expression: MIT
12
+ License-File: LICENSE
13
+ Keywords: check-point,cisco,firewall,fortinet,mcp,migration,model-context-protocol,netconverter,network-automation,palo-alto
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: System Administrators
17
+ Classifier: Intended Audience :: Telecommunications Industry
18
+ Classifier: Operating System :: MacOS
19
+ Classifier: Operating System :: Microsoft :: Windows
20
+ Classifier: Operating System :: POSIX :: Linux
21
+ Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: 3 :: Only
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: 3.13
25
+ Classifier: Topic :: System :: Networking
26
+ Classifier: Topic :: System :: Networking :: Firewalls
27
+ Classifier: Topic :: Utilities
28
+ Requires-Python: >=3.12
29
+ Requires-Dist: httpx==0.28.1
30
+ Requires-Dist: keyring==25.7.0
31
+ Requires-Dist: pydantic==2.13.5
32
+ Requires-Dist: textual==8.2.8
33
+ Description-Content-Type: text/markdown
34
+
35
+ # NetConverter CLI
36
+
37
+ <!-- mcp-name: ai.netconverter/netconverter -->
38
+
39
+ **Migrate, validate and optimize network configurations from the folder that holds them — and let your own AI assistant do it too, without the configuration ever passing through the model.**
40
+
41
+ NetConverter — by ValeronLabs LLC.
42
+
43
+ ```text
44
+ ◆ NetConverter v0.3.0 ● Server ◆ Bridge claude-code · 2m ago
45
+ ▍ Start
46
+ ▍ /convert Migrate a configuration to another vendor
47
+ ▍ /validate Check a configuration before migrating
48
+ ▍ /optimize Cleanup and optimization findings
49
+ ▍ /activity What your AI assistant did here
50
+ ╭ What does edge-fw.conf contain? ───────────────────────────────╮
51
+ │ ▸ 1 Fortinet FortiGate · detected │
52
+ │ 2 Cisco ASA │
53
+ ╰──────────────────────────────── ↑↓ choose · 1–9 jump · Enter ───╯
54
+ ```
55
+
56
+ One small client, three ways in:
57
+
58
+ | | What it is |
59
+ | --- | --- |
60
+ | `netconverter` | A keyboard-first full-screen app: pick a file, answer a few inline questions, follow the job, get verified outputs beside your source. |
61
+ | `netconverter mcp` | A local MCP bridge for Claude Code, Claude Desktop, Cursor, VS Code and Codex. Your AI passes a **file path**; the bridge reads the file and uploads it straight to NetConverter. The AI sees paths, job IDs and summaries — never the configuration. |
62
+ | `netconverter validate edge.cfg --vendor fortinet` | Plain one-shot commands that print JSON, for scripts and CI. |
63
+
64
+ ## What it supports
65
+
66
+ Whatever the NetConverter server you sign in to supports — the client reads
67
+ `GET /capabilities` and builds every menu from it, so new vendors appear
68
+ without a client update. Today that is:
69
+
70
+ - **Firewalls:** Palo Alto (SET, XML, Panorama), Fortinet FortiGate, Cisco FMC (JSON);
71
+ Cisco ASA as a source. Check Point is a source through a handoff bundle in the portal.
72
+ - **Routers and switches:** Cisco IOS-XE, Juniper JunOS (braces and set), Aruba CX;
73
+ ArubaOS as a source.
74
+ - **Jobs:** convert, validate, optimize; follow-up questions on NAT, policy, routes,
75
+ interfaces, unused objects, object dependencies and traffic flows.
76
+
77
+ Run `netconverter capabilities` to see exactly what your credential can do.
78
+ A 0.1.x **Terminal Quick pilot key** still works and keeps its ASA → Palo Alto
79
+ scope; the app labels it as such.
80
+
81
+ ## Start here
82
+
83
+ One line installs everything (uv, the CLI from PyPI), signs you in and connects
84
+ your AI assistants to `~/migrations`:
85
+
86
+ ```sh
87
+ curl -LsSf https://netconverter.ai/install.sh | sh # macOS / Linux
88
+ ```
89
+
90
+ ```powershell
91
+ irm https://netconverter.ai/install.ps1 | iex # Windows PowerShell
92
+ ```
93
+
94
+ Options: `--yes` (no prompts, for IT/MDM), `--no-connect`, `--workspace PATH`
95
+ (`curl … | sh -s -- --yes`; PowerShell: `-Yes -NoConnect -Workspace PATH`, see
96
+ [scripts/install.ps1](scripts/install.ps1)). Running it again only does what is missing.
97
+
98
+ Or by hand:
99
+
100
+ ```sh
101
+ # 1. Install (Python 3.12+ via uv: https://docs.astral.sh/uv)
102
+ uv tool install --python 3.12 netconverter-cli
103
+
104
+ # 2. Sign in once
105
+ netconverter login --clerk # your NetConverter account, in the browser
106
+ # or: netconverter login # paste an API key at a hidden prompt
107
+
108
+ # 3. Work in the folder that holds your configs
109
+ cd ~/migrations && netconverter
110
+ ```
111
+
112
+ Upgrading from `netconverter-terminal` 0.1.x: `uv tool uninstall netconverter-terminal`
113
+ first. Saved keys and sign-ins carry over (Keychain service **NetConverter Terminal**).
114
+
115
+ Full walkthrough: [Quick start](QUICK_START.md).
116
+
117
+ ## Use it from your AI
118
+
119
+ Step-by-step guides for every assistant (Claude, ChatGPT, Cursor, Gemini CLI, Codex …):
120
+ [docs/connect](docs/connect/README.md).
121
+
122
+ ```sh
123
+ netconverter connect claude-code # or claude-desktop, cursor, vscode, codex, gemini, windsurf, lmstudio
124
+ netconverter connect --all # every assistant found on this computer
125
+ netconverter connect chatgpt # ChatGPT / claude.ai: remote-connector setup steps
126
+ ```
127
+
128
+ `connect` shows the exact change it will make and asks before applying it
129
+ (Claude Code through its own `claude mcp add`; JSON files keep a `.bak`). For
130
+ Claude Code it then offers a `Read` deny rule for the folder, so the assistant
131
+ works on your configurations only through the bridge.
132
+ Then ask your assistant, for example: *"Validate edge-fw.conf and tell me what it finds,"*
133
+ *"Convert it to Palo Alto XML,"* *"Can WEB reach DB on tcp/1433?"*
134
+
135
+ Bridge tools: `submit_file`, `job_status`, `wait_for_job`, `account`, `download`,
136
+ plus an allowlist of NetConverter's read-only tools (reports, evidence, NAT, flows,
137
+ knowledge base). `netconverter mcp --strict` narrows those to the strict-view set.
138
+
139
+ Inside the app, `/activity` and the header's **Bridge** pill show what your AI did
140
+ through the bridge — paths, sizes, SHA-256 and job IDs only.
141
+
142
+ ## Stay current
143
+
144
+ `netconverter update` upgrades a PyPI install with `uv tool upgrade netconverter-cli`;
145
+ a copy installed from a release wheel gets the latest wheel after its SHA-256 is
146
+ checked (`--check` only reports). Interactive commands mention a new release at most once
147
+ a day; set `NETCONVERTER_NO_UPDATE_CHECK=1` to turn that off.
148
+
149
+ ## Boundaries
150
+
151
+ - Configurations travel only from your workspace to NetConverter, over HTTPS.
152
+ The bridge never returns configuration text to the AI; the server tokenizes
153
+ addresses and removes credentials from every summary.
154
+ - The client never pushes to a device. Outputs are files you review and load.
155
+ - Downloads are hash-verified and never overwrite a file you changed.
156
+ - An optional in-app model (`/model`: Anthropic, OpenAI, Gemini or local Ollama)
157
+ only chooses among fixed operations; it never receives configurations or results.
158
+
159
+ ## Documentation
160
+
161
+ - [Quick start](QUICK_START.md) · [Commands and troubleshooting](docs/COMMANDS.md)
162
+ - [Privacy and data flow](docs/PRIVACY.md) · [Verification status](docs/VERIFICATION.md)
163
+ - [Changelog](CHANGELOG.md) · [Contributing](CONTRIBUTING.md) · [Security](SECURITY.md)
164
+
165
+ The client is [MIT licensed](LICENSE). The license does not grant access to the
166
+ hosted service or license the server code. macOS is the exercised platform;
167
+ Windows acceptance remains pending.
@@ -0,0 +1,128 @@
1
+ # Quick start (Mac)
2
+
3
+ Use synthetic configurations for your first run, and read the
4
+ [privacy notes](docs/PRIVACY.md) before using real ones.
5
+
6
+ ## 1. Install
7
+
8
+ ```sh
9
+ curl -LsSf https://netconverter.ai/install.sh | sh
10
+ ```
11
+
12
+ This installs uv and `netconverter-cli` from PyPI, signs you in, creates
13
+ `~/migrations` and offers to connect each AI assistant it finds (steps 2 and 6 below).
14
+ Add `--no-connect` (`… | sh -s -- --no-connect`) to only install and sign in.
15
+
16
+ By hand:
17
+
18
+ ```sh
19
+ brew install uv # if `uv --version` fails
20
+ uv tool install --python 3.12 netconverter-cli
21
+ uv tool update-shell # then open a new Terminal window
22
+ netconverter --version
23
+ ```
24
+
25
+ Without PyPI access, download `netconverter_cli-<version>-py3-none-any.whl` and
26
+ `SHA256SUMS` from the [latest release](https://github.com/valeronlabs/netconverter_terminals/releases/latest),
27
+ run `shasum -a 256 -c SHA256SUMS` (stop if it fails), then
28
+ `uv tool install --python 3.12 ./netconverter_cli-<version>-py3-none-any.whl`.
29
+
30
+ Coming from 0.1.x? Run `uv tool uninstall netconverter-terminal` first. Your
31
+ saved key, sign-in and per-folder `.netconverter/` state are kept.
32
+
33
+ ## 2. Sign in
34
+
35
+ ```sh
36
+ netconverter login --clerk # NetConverter account in the browser (MFA, SSO)
37
+ netconverter login --clerk --device # same, on a machine without a browser
38
+ netconverter login # or paste an API key / trial key, hidden
39
+ netconverter whoami
40
+ netconverter capabilities # what your credential can convert
41
+ ```
42
+
43
+ After `login --clerk`, every command and the app use your sign-in; no key and no environment
44
+ variable are needed. A stored API key, if you also have one, is used first.
45
+ Credentials live in the macOS Keychain (service **NetConverter Terminal**), never
46
+ in the workspace folder. A 0.1.x Terminal Quick pilot key keeps working with its
47
+ ASA → Palo Alto scope.
48
+
49
+ ## 3. Run the app in your config folder
50
+
51
+ ```sh
52
+ mkdir -p ~/NetConverter-Demo && cd ~/NetConverter-Demo
53
+ cp /path/to/examples/demo-asa.cfg .
54
+ netconverter
55
+ ```
56
+
57
+ The folder you start in is the workspace. Nothing is uploaded when the app opens.
58
+
59
+ | Key | Does |
60
+ | --- | --- |
61
+ | `↑` `↓` / `1`–`9` | Move / jump to a choice |
62
+ | `Enter` | Continue |
63
+ | `Esc` | Cancel the open question (never a submitted job) |
64
+ | `Ctrl+O` · `Ctrl+J` · `Ctrl+R` | Open a file · jobs · refresh the active job |
65
+ | `F1` · `Ctrl+Q` | Help · quit |
66
+
67
+ ## 4. Convert
68
+
69
+ 1. Type `/convert` and pick the file.
70
+ 2. **What does it contain?** The likely vendor is pre-selected from a local
71
+ look at the file (marked *detected*); confirm or choose another.
72
+ 3. **Convert to** lists only the targets the server supports for that source.
73
+ 4. Review the card and choose **Submit to NetConverter**. This is the moment
74
+ the file is sent, and it uses one conversion.
75
+ 5. Follow the job in the status line. When it completes, the outputs download
76
+ beside the source, hash-verified:
77
+
78
+ ```text
79
+ tra_….translated.txt converted configuration
80
+ tra_….report.json structured verdict, findings and reasons
81
+ tra_….evidence.xlsx evidence workbook, when the job has one
82
+ ```
83
+
84
+ Read warnings before using an output. `NEEDS REVIEW` and `BLOCKED` are set by
85
+ deterministic checks, not by AI.
86
+
87
+ ## 5. Validate, optimize, ask
88
+
89
+ - `/validate` and `/optimize` follow the same file → vendor → review steps.
90
+ - After a job completes: `/nat`, `/policy`, `/routes`, `/interfaces`,
91
+ `/unused_objects`, and structured questions such as
92
+ `/flow {"source_ip":"192.0.2.10","destination_ip":"198.51.100.10","protocol":"tcp","destination_port":80}`.
93
+ Results are saved as JSON and TXT beside the source.
94
+ - `/target` saves the generated configuration and selects it, so you can `/validate` it.
95
+
96
+ ## 6. Connect your AI assistant
97
+
98
+ ```sh
99
+ netconverter connect # which assistants are already connected
100
+ netconverter connect claude-code # shows the change, asks, then applies
101
+ netconverter connect claude-desktop # Claude Desktop: merges its config file, keeps a .bak
102
+ netconverter connect --all # every assistant found here (Gemini CLI, Cursor, Codex …)
103
+ netconverter connect chatgpt # ChatGPT or claude.ai: prints the remote-connector steps
104
+ ```
105
+
106
+ Or `/connect` inside the app. For Claude Code, `connect` then offers a second
107
+ change (Enter accepts): a `Read(//…/**)` deny rule for this folder in
108
+ `~/.claude/settings.json`, so Claude Code hands files to the bridge by path instead
109
+ of reading them itself. Restart Claude Code or Claude Desktop afterwards. Then ask your assistant to validate or convert a file
110
+ by name. `/activity` shows each call the bridge handled: time, assistant, file,
111
+ size, SHA-256 and job ID — never content.
112
+
113
+ ## 7. Resume, update, uninstall
114
+
115
+ - Quit with `Ctrl+Q`; run `netconverter` in the same folder to continue.
116
+ `/jobs` lists your jobs; `/resume JOB_ID` follows one. An interrupted submit is
117
+ retried by `/resume` with the same idempotency key, so it is not duplicated.
118
+ - Update: `netconverter update` runs `uv tool upgrade netconverter-cli` for a PyPI
119
+ install; for a copy installed from a wheel it downloads the latest release's wheel
120
+ and `SHA256SUMS`, checks the hash and runs `uv tool install --force` after you
121
+ confirm (`--check` only reports). Interactive commands mention a new release at most once
122
+ a day; `NETCONVERTER_NO_UPDATE_CHECK=1` turns that off. Manual route: verify the
123
+ new wheel, then `uv tool install --force ./netconverter_cli-….whl`.
124
+ - Remove: `uv tool uninstall netconverter-cli`. Configs, outputs, Keychain entries
125
+ and `.netconverter/` folders stay until you delete them; `netconverter logout --all`
126
+ removes the saved sign-in and key.
127
+
128
+ Something failed? See [troubleshooting](docs/COMMANDS.md#troubleshooting).
@@ -0,0 +1,133 @@
1
+ # NetConverter CLI
2
+
3
+ <!-- mcp-name: ai.netconverter/netconverter -->
4
+
5
+ **Migrate, validate and optimize network configurations from the folder that holds them — and let your own AI assistant do it too, without the configuration ever passing through the model.**
6
+
7
+ NetConverter — by ValeronLabs LLC.
8
+
9
+ ```text
10
+ ◆ NetConverter v0.3.0 ● Server ◆ Bridge claude-code · 2m ago
11
+ ▍ Start
12
+ ▍ /convert Migrate a configuration to another vendor
13
+ ▍ /validate Check a configuration before migrating
14
+ ▍ /optimize Cleanup and optimization findings
15
+ ▍ /activity What your AI assistant did here
16
+ ╭ What does edge-fw.conf contain? ───────────────────────────────╮
17
+ │ ▸ 1 Fortinet FortiGate · detected │
18
+ │ 2 Cisco ASA │
19
+ ╰──────────────────────────────── ↑↓ choose · 1–9 jump · Enter ───╯
20
+ ```
21
+
22
+ One small client, three ways in:
23
+
24
+ | | What it is |
25
+ | --- | --- |
26
+ | `netconverter` | A keyboard-first full-screen app: pick a file, answer a few inline questions, follow the job, get verified outputs beside your source. |
27
+ | `netconverter mcp` | A local MCP bridge for Claude Code, Claude Desktop, Cursor, VS Code and Codex. Your AI passes a **file path**; the bridge reads the file and uploads it straight to NetConverter. The AI sees paths, job IDs and summaries — never the configuration. |
28
+ | `netconverter validate edge.cfg --vendor fortinet` | Plain one-shot commands that print JSON, for scripts and CI. |
29
+
30
+ ## What it supports
31
+
32
+ Whatever the NetConverter server you sign in to supports — the client reads
33
+ `GET /capabilities` and builds every menu from it, so new vendors appear
34
+ without a client update. Today that is:
35
+
36
+ - **Firewalls:** Palo Alto (SET, XML, Panorama), Fortinet FortiGate, Cisco FMC (JSON);
37
+ Cisco ASA as a source. Check Point is a source through a handoff bundle in the portal.
38
+ - **Routers and switches:** Cisco IOS-XE, Juniper JunOS (braces and set), Aruba CX;
39
+ ArubaOS as a source.
40
+ - **Jobs:** convert, validate, optimize; follow-up questions on NAT, policy, routes,
41
+ interfaces, unused objects, object dependencies and traffic flows.
42
+
43
+ Run `netconverter capabilities` to see exactly what your credential can do.
44
+ A 0.1.x **Terminal Quick pilot key** still works and keeps its ASA → Palo Alto
45
+ scope; the app labels it as such.
46
+
47
+ ## Start here
48
+
49
+ One line installs everything (uv, the CLI from PyPI), signs you in and connects
50
+ your AI assistants to `~/migrations`:
51
+
52
+ ```sh
53
+ curl -LsSf https://netconverter.ai/install.sh | sh # macOS / Linux
54
+ ```
55
+
56
+ ```powershell
57
+ irm https://netconverter.ai/install.ps1 | iex # Windows PowerShell
58
+ ```
59
+
60
+ Options: `--yes` (no prompts, for IT/MDM), `--no-connect`, `--workspace PATH`
61
+ (`curl … | sh -s -- --yes`; PowerShell: `-Yes -NoConnect -Workspace PATH`, see
62
+ [scripts/install.ps1](scripts/install.ps1)). Running it again only does what is missing.
63
+
64
+ Or by hand:
65
+
66
+ ```sh
67
+ # 1. Install (Python 3.12+ via uv: https://docs.astral.sh/uv)
68
+ uv tool install --python 3.12 netconverter-cli
69
+
70
+ # 2. Sign in once
71
+ netconverter login --clerk # your NetConverter account, in the browser
72
+ # or: netconverter login # paste an API key at a hidden prompt
73
+
74
+ # 3. Work in the folder that holds your configs
75
+ cd ~/migrations && netconverter
76
+ ```
77
+
78
+ Upgrading from `netconverter-terminal` 0.1.x: `uv tool uninstall netconverter-terminal`
79
+ first. Saved keys and sign-ins carry over (Keychain service **NetConverter Terminal**).
80
+
81
+ Full walkthrough: [Quick start](QUICK_START.md).
82
+
83
+ ## Use it from your AI
84
+
85
+ Step-by-step guides for every assistant (Claude, ChatGPT, Cursor, Gemini CLI, Codex …):
86
+ [docs/connect](docs/connect/README.md).
87
+
88
+ ```sh
89
+ netconverter connect claude-code # or claude-desktop, cursor, vscode, codex, gemini, windsurf, lmstudio
90
+ netconverter connect --all # every assistant found on this computer
91
+ netconverter connect chatgpt # ChatGPT / claude.ai: remote-connector setup steps
92
+ ```
93
+
94
+ `connect` shows the exact change it will make and asks before applying it
95
+ (Claude Code through its own `claude mcp add`; JSON files keep a `.bak`). For
96
+ Claude Code it then offers a `Read` deny rule for the folder, so the assistant
97
+ works on your configurations only through the bridge.
98
+ Then ask your assistant, for example: *"Validate edge-fw.conf and tell me what it finds,"*
99
+ *"Convert it to Palo Alto XML,"* *"Can WEB reach DB on tcp/1433?"*
100
+
101
+ Bridge tools: `submit_file`, `job_status`, `wait_for_job`, `account`, `download`,
102
+ plus an allowlist of NetConverter's read-only tools (reports, evidence, NAT, flows,
103
+ knowledge base). `netconverter mcp --strict` narrows those to the strict-view set.
104
+
105
+ Inside the app, `/activity` and the header's **Bridge** pill show what your AI did
106
+ through the bridge — paths, sizes, SHA-256 and job IDs only.
107
+
108
+ ## Stay current
109
+
110
+ `netconverter update` upgrades a PyPI install with `uv tool upgrade netconverter-cli`;
111
+ a copy installed from a release wheel gets the latest wheel after its SHA-256 is
112
+ checked (`--check` only reports). Interactive commands mention a new release at most once
113
+ a day; set `NETCONVERTER_NO_UPDATE_CHECK=1` to turn that off.
114
+
115
+ ## Boundaries
116
+
117
+ - Configurations travel only from your workspace to NetConverter, over HTTPS.
118
+ The bridge never returns configuration text to the AI; the server tokenizes
119
+ addresses and removes credentials from every summary.
120
+ - The client never pushes to a device. Outputs are files you review and load.
121
+ - Downloads are hash-verified and never overwrite a file you changed.
122
+ - An optional in-app model (`/model`: Anthropic, OpenAI, Gemini or local Ollama)
123
+ only chooses among fixed operations; it never receives configurations or results.
124
+
125
+ ## Documentation
126
+
127
+ - [Quick start](QUICK_START.md) · [Commands and troubleshooting](docs/COMMANDS.md)
128
+ - [Privacy and data flow](docs/PRIVACY.md) · [Verification status](docs/VERIFICATION.md)
129
+ - [Changelog](CHANGELOG.md) · [Contributing](CONTRIBUTING.md) · [Security](SECURITY.md)
130
+
131
+ The client is [MIT licensed](LICENSE). The license does not grant access to the
132
+ hosted service or license the server code. macOS is the exercised platform;
133
+ Windows acceptance remains pending.
@@ -0,0 +1,14 @@
1
+ # Security reporting
2
+
3
+ Do not publish credentials, customer configurations, reports, addresses, or
4
+ exploitable vulnerability details in a public issue.
5
+
6
+ Use GitHub's **Report a vulnerability** option when it is available, or contact
7
+ your established NetConverter support contact privately to arrange secure
8
+ submission. If you have no private contact, open a public issue asking for a
9
+ private reporting channel without including the sensitive details.
10
+
11
+ For a suspected credential exposure, revoke or rotate the affected credential
12
+ with its issuer. Deleting a local file or Keychain item does not revoke the key.
13
+ See [the privacy boundary](docs/PRIVACY.md) and
14
+ [current verification limits](docs/VERIFICATION.md).