halyn 0.2.0__py3-none-any.whl

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,246 @@
1
+ Metadata-Version: 2.4
2
+ Name: halyn
3
+ Version: 0.2.0
4
+ Summary: Halyn — NRP control plane with domain-scoped authorization.
5
+ Author-email: Elmadani SALKA <Elmadani.SALKA@proton.me>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/ElmadaniS/halyn
8
+ Project-URL: Repository, https://github.com/ElmadaniS/halyn
9
+ Project-URL: Issues, https://github.com/ElmadaniS/halyn/issues
10
+ Keywords: ai,browser,robotics,iot,mcp,nrp,llm,infrastructure,devops
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
15
+ Classifier: Topic :: System :: Systems Administration
16
+ Requires-Python: >=3.10
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: nrp>=0.1.0
20
+ Requires-Dist: aiohttp>=3.9
21
+ Provides-Extra: enterprise
22
+ Requires-Dist: grpcio>=1.60; extra == "enterprise"
23
+ Requires-Dist: psycopg2-binary; extra == "enterprise"
24
+ Requires-Dist: redis; extra == "enterprise"
25
+ Provides-Extra: robotics
26
+ Requires-Dist: rclpy; extra == "robotics"
27
+ Requires-Dist: unitree-sdk2py; extra == "robotics"
28
+ Provides-Extra: iot
29
+ Requires-Dist: paho-mqtt; extra == "iot"
30
+ Provides-Extra: dev
31
+ Requires-Dist: pytest; extra == "dev"
32
+ Requires-Dist: pytest-asyncio; extra == "dev"
33
+ Requires-Dist: mypy; extra == "dev"
34
+ Requires-Dist: ruff; extra == "dev"
35
+ Dynamic: license-file
36
+
37
+ <div align="center">
38
+
39
+ <img src="logo.svg" width="80" alt="Halyn">
40
+
41
+ # Halyn
42
+
43
+ ### NRP Control Plane
44
+
45
+ **Connect any device to any LLM through NRP.**
46
+
47
+ NRP control plane with domain-scoped authorization.
48
+
49
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
50
+ [![Python 3.10+](https://img.shields.io/badge/Python-3.10+-green.svg)](https://python.org)
51
+ [![Tests](https://img.shields.io/badge/Tests-48%20passed-brightgreen.svg)]()
52
+ [![NRP](https://img.shields.io/badge/Protocol-NRP-orange.svg)](https://github.com/ElmadaniS/nrp)
53
+
54
+ </div>
55
+
56
+ ---
57
+
58
+ ```
59
+ you: "How's the factory?"
60
+
61
+ halyn: All 12 arms running. Arm-7 joint 3 is 12°C above normal.
62
+ Soil moisture in the north field dropped to 18%.
63
+ 3 urgent emails. Hetzner invoice due tomorrow.
64
+ Want me to handle any of these?
65
+ ```
66
+
67
+ ## What It Does
68
+
69
+ Halyn connects AI to:
70
+
71
+ | Domain | Examples |
72
+ |--------|----------|
73
+ | **Servers** | Deploy, monitor, fix, scale |
74
+ | **Robots** | Move, pick, navigate, patrol |
75
+ | **Sensors** | Temperature, humidity, soil, air |
76
+ | **APIs** | Stripe, GitHub, Slack — any REST/GraphQL |
77
+ | **Factories** | PLCs, SCADA, OPC-UA, Modbus |
78
+ | **Smart Home** | Lights, climate, security |
79
+ | **Vehicles** | Navigate, charge, maintain |
80
+ | **Drones** | Survey, photograph, deliver |
81
+
82
+ One protocol. One conversation. Everything.
83
+
84
+ ## Quick Start
85
+
86
+ ```bash
87
+ pip install halyn
88
+
89
+ halyn scan # discover your world
90
+ halyn connect # plug your LLM
91
+ halyn serve # start running
92
+ ```
93
+
94
+ ## Any LLM
95
+
96
+ ```yaml
97
+ # halyn.yml
98
+ llm:
99
+ provider: claude # or: openai, ollama, huggingface, vllm
100
+ model: claude-sonnet-4-20250514
101
+ ```
102
+
103
+ Halyn doesn't lock you in. Claude today. Local Ollama tomorrow. Same nodes. Same drivers. Same safety.
104
+
105
+ ## Human Always in Control
106
+
107
+ 5 autonomy levels. Per domain. Per node. Per hour.
108
+
109
+ | Level | Name | Behavior |
110
+ |-------|------|----------|
111
+ | 0 | **Manual** | AI proposes. You approve every action. |
112
+ | 1 | **Supervised** | AI reads alone. Asks before acting. |
113
+ | 2 | **Guided** | Safe actions alone. Dangerous = confirm. |
114
+ | 3 | **Autonomous** | Does everything. You can interrupt anytime. |
115
+ | 4 | **Full Auto** | Handles routine. Reports daily. |
116
+
117
+ ```yaml
118
+ # halyn.yml
119
+ domains:
120
+ physical:
121
+ level: 1 # supervised
122
+ nodes: [robot/*, drone/*]
123
+ confirm: [move, pick, deploy]
124
+
125
+ financial:
126
+ level: 0 # manual — confirm everything
127
+ nodes: [finance/*, bank/*]
128
+ blocked: [delete]
129
+
130
+ monitoring:
131
+ level: 4 # full auto
132
+ nodes: [sensor/*, monitor/*]
133
+
134
+ infrastructure:
135
+ level: 2 # guided
136
+ nodes: [server/*, cloud/*]
137
+ confirm: [restart, deploy, delete]
138
+ ```
139
+
140
+ Your banking requires approval for every action. Your sensors run on autopilot. Your servers auto-handle safe ops but confirm deploys. You set the rails once. The AI rides them.
141
+
142
+ ## Security
143
+
144
+ Not optional. Not a feature. The foundation.
145
+
146
+ | Layer | What It Does |
147
+ |-------|-------------|
148
+ | **Auth** | API key with timing-safe HMAC |
149
+ | **Autonomy** | 5 levels per domain, rate limiting |
150
+ | **Shield** | Per-node safety rules from NRP |
151
+ | **Sanitizer** | Injection, traversal, overflow protection |
152
+ | **Audit** | SHA-256 hash-chain on disk, tamper-detectable |
153
+ | **Watchdog** | Health monitoring, failsafe on crash |
154
+ | **Redaction** | No internal paths or secrets in errors |
155
+
156
+ If Halyn crashes, nodes enter safe state automatically.
157
+
158
+ The audit trail is a hash chain. Tamper with one entry and the chain breaks. Every action records: who asked, which AI decided, what reasoning, what result, which domain policy authorized it.
159
+
160
+ ## Architecture
161
+
162
+ ```
163
+ Any LLM
164
+ │ MCP
165
+
166
+ Halyn Control Plane
167
+ │ ┌─ Autonomy (5 levels)
168
+ │ ├─ Audit (SHA-256 chain)
169
+ │ ├─ Watchdog (failsafe)
170
+ │ ├─ Auth + Sanitizer
171
+ │ └─ Memory (SQLite + FTS5)
172
+
173
+ │ NRP (Node Reach Protocol)
174
+
175
+ ├──→ SSH (servers)
176
+ ├──→ Docker (containers)
177
+ ├──→ Chrome CDP (browsers)
178
+ ├──→ ROS2 (robots)
179
+ ├──→ Unitree (humanoids)
180
+ ├──→ MQTT (IoT sensors)
181
+ ├──→ OPC-UA (industrial PLCs)
182
+ ├──→ HTTP Auto (any API — auto-introspected)
183
+ └──→ Your driver (~100 lines)
184
+ ```
185
+
186
+ ## HTTP Auto-Introspection
187
+
188
+ Point Halyn at any API. It reads the OpenAPI/GraphQL spec. Generates the manifest. Creates the tools. Automatically.
189
+
190
+ ```yaml
191
+ nodes:
192
+ - id: nrp://cloud/api/stripe
193
+ driver: http_auto
194
+ base_url: https://api.stripe.com/v1
195
+ auth_token: Bearer ${STRIPE_API_KEY}
196
+
197
+ - id: nrp://cloud/api/github
198
+ driver: http_auto
199
+ base_url: https://api.github.com
200
+ auth_token: Bearer ${GITHUB_TOKEN}
201
+ ```
202
+
203
+ Any API in the world becomes an NRP node. Zero custom code.
204
+
205
+ ## Docker
206
+
207
+ ```bash
208
+ docker compose up -d
209
+ ```
210
+
211
+ ```yaml
212
+ # docker-compose.yml included — non-root, healthcheck, resource limits
213
+ ```
214
+
215
+ ## Stats
216
+
217
+ | Metric | Value |
218
+ |--------|-------|
219
+ | Source lines | ~5,200 |
220
+ | Drivers | 9 |
221
+ | LLM connectors | 5 (Claude, GPT, Ollama, HF, vLLM) |
222
+ | Tests | 48 passed, 0 failed |
223
+ | Dependencies | 1 (aiohttp) |
224
+ | Docker image | ~150MB |
225
+ | MCP native | Yes (Claude.ai direct) |
226
+ | Tested on | Real hardware across 3 countries |
227
+
228
+ ## Built on NRP
229
+
230
+ Halyn implements the [Node Reach Protocol](https://github.com/ElmadaniS/nrp) — the universal standard for AI-to-world control. Any NRP-compatible device works with Halyn automatically.
231
+
232
+ ## Contributing
233
+
234
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
235
+
236
+ ## Security
237
+
238
+ See [SECURITY.md](SECURITY.md). Report vulnerabilities to Elmadani.SALKA@proton.me.
239
+
240
+ ## License
241
+
242
+ MIT
243
+
244
+ ## Author
245
+
246
+ **Elmadani SALKA**
@@ -0,0 +1,41 @@
1
+ halyn/__init__.py,sha256=SEJsUf55GtgH6yVxu4GR7swhl1X2nEcFtjRsJ0xl7VA,251
2
+ halyn/__main__.py,sha256=ug5RUKlpMTfptTsA0pWqBPKlX3eBsL3JFEuG31RCmFM,139
3
+ halyn/audit.py,sha256=RuKy7zDz1natc3aj45MqVNZ-ehoubl-eN0CQfm_EsuE,9315
4
+ halyn/auth.py,sha256=YI4UKduuT1h07TOxN3SJA1TIVt3PLx1QOIImIFEepQY,2891
5
+ halyn/autonomy.py,sha256=k4ZdaRYx1BZ9zNv3WgKo7C_ttmrcM6psBsKaVdOjeDk,9605
6
+ halyn/cli.py,sha256=OPSZMgcBvP51Px7_EYqflwlh6l0eHOKqFpMTps3_t80,6593
7
+ halyn/config.py,sha256=UCzOYGQamqtu5thKW24ZqG9CFvmVZY5GrTQjtXbvNOc,4516
8
+ halyn/consent.py,sha256=_fSCYfO0Uiz5MrKSWtWAtAI2tWN8gm470_MOJ6B1_Is,8460
9
+ halyn/control_plane.py,sha256=K-lHSUjMd7sCFpXQdIqac45wcEBAz0wB5TK-8rQWpZo,12700
10
+ halyn/discovery.py,sha256=k7sk58k19ccrqSinOWJ9OTmmMA4NrIXGvXImeyy6gZw,12493
11
+ halyn/engine.py,sha256=OUqSkYIuNia2t5_JtXfVBE8_aHzxaQxWPolq-KrHBA8,7639
12
+ halyn/intent.py,sha256=7fSrZMMjY8ejHe8LtFZKeK4SXBYSh_p0RKDbNWsaYTs,8875
13
+ halyn/llm.py,sha256=fXejnnlDPhGdMHmCVbpuW6iD_C6PmRKaBu71Z1ginCg,6573
14
+ halyn/mcp.py,sha256=FWppkd8ra0nIU4eYtiaeu1JzI-MN8v15fHjJS1rLcbg,9161
15
+ halyn/nrp_bridge.py,sha256=dq0b8bcgBN3AZLKiXMHZKhDVNjpYkOPuI2xtGLTONeA,7837
16
+ halyn/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ halyn/sanitizer.py,sha256=nS4F8FAa2_RrBm-3q7CQJhpJ1DyLtdl-vong1e2ykCg,3858
18
+ halyn/server.py,sha256=YKvfMDWKkBMo4luiidgpy-EX3XHAqWhp1FSOVw7tP5I,11772
19
+ halyn/types.py,sha256=EGFrvP64JndAjz0tXaEyhwHYbyr--PPTKhrkQT1Y_9o,2864
20
+ halyn/watchdog.py,sha256=3YymQdPJbTAIWjTrsSSXMIRJDHWX1fPHAl7E81SjJvk,8571
21
+ halyn/drivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ halyn/drivers/browser.py,sha256=TqGyIvVE2k80miZHVMXc1eOyUEdlKTqLLDBDfgon5jk,2506
23
+ halyn/drivers/dds.py,sha256=RofPi97Z_5P0t0PKTthzHIQQxktb9sOabLRHDkCJsn4,5333
24
+ halyn/drivers/docker.py,sha256=TZnXbwwmQCpxQcaL9SHYZ7jzPAipUfHaiNcTkV-GO1s,2655
25
+ halyn/drivers/http_auto.py,sha256=a275v8u9ZUf_RUXdkXPuglRAmgwH1khhWv35cSZBwfc,10334
26
+ halyn/drivers/mqtt.py,sha256=bJrw7z_dW9s840TYDbjiQ-OTHrjOZs_zfi4tGYCkQMo,3147
27
+ halyn/drivers/opcua.py,sha256=FbBl9JZD8mTm-bsyUeM383zrKVHAr60QBDpnmFdXgVw,2925
28
+ halyn/drivers/ros2.py,sha256=6ng0_nYv2O9UKaa9i-5kGYtutMAd_wKRueHlMnMr0u8,4869
29
+ halyn/drivers/serial.py,sha256=Rp-RnsuK887pxwUEWg005zdkH8_6vLy51Ra1HstuKpI,8919
30
+ halyn/drivers/socket_raw.py,sha256=uLp8YCwW5HqPoX1KcCLxo3QPcVvT4QiZ9D-v56Z-WIw,5387
31
+ halyn/drivers/ssh.py,sha256=5SVXNWT6FtPXit-20m086y78kvK_0_Hivd9LeYmCdbQ,6324
32
+ halyn/drivers/unitree.py,sha256=4FgjuwHjNi4crX9zNpHv4_dyGhYJxZXLEYvv7rS3Gps,4199
33
+ halyn/drivers/websocket.py,sha256=nCnMzaQxCaisImVgwiXIda9WzC6fXRYUS4ux-iFz8-0,6160
34
+ halyn/memory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ halyn/memory/store.py,sha256=t1A9esJ_GyGpVvpy_tyWqmY-wYm0Vvc_J7uWoEKRbIs,7859
36
+ halyn-0.2.0.dist-info/licenses/LICENSE,sha256=1V8zEtAD2Jvara62f-5KqQtsbbuTwmczUIXCGCfSikI,657
37
+ halyn-0.2.0.dist-info/METADATA,sha256=cgl0fdiEgilZ0bEuEN7IeoxObR47gT95cI1n41Af6K4,7025
38
+ halyn-0.2.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
39
+ halyn-0.2.0.dist-info/entry_points.txt,sha256=AGo3r-d45hE1vEgYtoxXfHsUsrY8W6I_m-VeU07g4RI,41
40
+ halyn-0.2.0.dist-info/top_level.txt,sha256=LQaZY7OfDzzWK4e54VuGhgzkJP7jpJGBKmT7BfTyJkI,6
41
+ halyn-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ halyn = halyn.cli:main
@@ -0,0 +1,15 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Elmadani SALKA
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files, to deal in the Software
7
+ without restriction, including without limitation the rights to use, copy,
8
+ modify, merge, publish, distribute, sublicense, and/or sell copies of the
9
+ Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
@@ -0,0 +1 @@
1
+ halyn