halyn 0.4.2__tar.gz → 0.5.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 (55) hide show
  1. halyn-0.5.0/LICENSE +4 -0
  2. halyn-0.5.0/PKG-INFO +108 -0
  3. halyn-0.5.0/README.md +73 -0
  4. {halyn-0.4.2 → halyn-0.5.0}/pyproject.toml +4 -5
  5. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/__init__.py +1 -1
  6. halyn-0.5.0/src/halyn.egg-info/PKG-INFO +108 -0
  7. halyn-0.4.2/LICENSE +0 -15
  8. halyn-0.4.2/PKG-INFO +0 -178
  9. halyn-0.4.2/README.md +0 -142
  10. halyn-0.4.2/src/halyn.egg-info/PKG-INFO +0 -178
  11. {halyn-0.4.2 → halyn-0.5.0}/setup.cfg +0 -0
  12. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/__main__.py +0 -0
  13. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/audit.py +0 -0
  14. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/auth.py +0 -0
  15. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/autonomy.py +0 -0
  16. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/cli.py +0 -0
  17. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/config.py +0 -0
  18. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/consent.py +0 -0
  19. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/control_plane.py +0 -0
  20. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/dashboard.py +0 -0
  21. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/discovery.py +0 -0
  22. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/drivers/__init__.py +0 -0
  23. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/drivers/browser.py +0 -0
  24. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/drivers/dds.py +0 -0
  25. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/drivers/docker.py +0 -0
  26. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/drivers/http_auto.py +0 -0
  27. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/drivers/mqtt.py +0 -0
  28. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/drivers/opcua.py +0 -0
  29. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/drivers/ros2.py +0 -0
  30. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/drivers/serial.py +0 -0
  31. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/drivers/socket_raw.py +0 -0
  32. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/drivers/ssh.py +0 -0
  33. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/drivers/unitree.py +0 -0
  34. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/drivers/websocket.py +0 -0
  35. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/engine.py +0 -0
  36. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/integrations/__init__.py +0 -0
  37. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/integrations/telegram.py +0 -0
  38. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/intent.py +0 -0
  39. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/llm.py +0 -0
  40. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/mcp.py +0 -0
  41. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/mcp_serve.py +0 -0
  42. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/memory/__init__.py +0 -0
  43. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/memory/store.py +0 -0
  44. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/nrp_bridge.py +0 -0
  45. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/py.typed +0 -0
  46. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/sanitizer.py +0 -0
  47. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/server.py +0 -0
  48. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/types.py +0 -0
  49. {halyn-0.4.2 → halyn-0.5.0}/src/halyn/watchdog.py +0 -0
  50. {halyn-0.4.2 → halyn-0.5.0}/src/halyn.egg-info/SOURCES.txt +0 -0
  51. {halyn-0.4.2 → halyn-0.5.0}/src/halyn.egg-info/dependency_links.txt +0 -0
  52. {halyn-0.4.2 → halyn-0.5.0}/src/halyn.egg-info/entry_points.txt +0 -0
  53. {halyn-0.4.2 → halyn-0.5.0}/src/halyn.egg-info/requires.txt +0 -0
  54. {halyn-0.4.2 → halyn-0.5.0}/src/halyn.egg-info/top_level.txt +0 -0
  55. {halyn-0.4.2 → halyn-0.5.0}/tests/test_halyn.py +0 -0
halyn-0.5.0/LICENSE ADDED
@@ -0,0 +1,4 @@
1
+ Copyright (c) 2026 Elmadani SALKA. All rights reserved.
2
+
3
+ This software is source-available for evaluation and non-commercial use.
4
+ For commercial licensing, contact: contact@halyn.dev
halyn-0.5.0/PKG-INFO ADDED
@@ -0,0 +1,108 @@
1
+ Metadata-Version: 2.4
2
+ Name: halyn
3
+ Version: 0.5.0
4
+ Summary: Halyn — Enforceable safety for AI agents. Shield rules, audit chain, dashboard.
5
+ Author-email: Elmadani SALKA <contact@halyn.dev>
6
+ License: Proprietary
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: Programming Language :: Python :: 3
13
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
14
+ Classifier: Topic :: System :: Systems Administration
15
+ Requires-Python: >=3.10
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Requires-Dist: nrprotocol>=0.1.0
19
+ Requires-Dist: aiohttp>=3.9
20
+ Provides-Extra: enterprise
21
+ Requires-Dist: grpcio>=1.60; extra == "enterprise"
22
+ Requires-Dist: psycopg2-binary; extra == "enterprise"
23
+ Requires-Dist: redis; extra == "enterprise"
24
+ Provides-Extra: robotics
25
+ Requires-Dist: rclpy; extra == "robotics"
26
+ Requires-Dist: unitree-sdk2py; extra == "robotics"
27
+ Provides-Extra: iot
28
+ Requires-Dist: paho-mqtt; extra == "iot"
29
+ Provides-Extra: dev
30
+ Requires-Dist: pytest; extra == "dev"
31
+ Requires-Dist: pytest-asyncio; extra == "dev"
32
+ Requires-Dist: mypy; extra == "dev"
33
+ Requires-Dist: ruff; extra == "dev"
34
+ Dynamic: license-file
35
+
36
+ <div align="center">
37
+
38
+ # Halyn
39
+
40
+ **AI agents act in the world. Halyn makes sure they can't break it.**
41
+
42
+ [![PyPI](https://img.shields.io/pypi/v/halyn?style=flat-square&color=0a6e3f)](https://pypi.org/project/halyn/)
43
+ [![Python](https://img.shields.io/badge/python-3.10+-0a6e3f?style=flat-square)](https://pypi.org/project/halyn/)
44
+
45
+ The safety layer for AI agents · Shield rules · Audit chain · Built-in dashboard
46
+
47
+ [Website](https://halyn.dev) · [Quick Start](#quick-start) · [Dashboard](#dashboard) · [Shield Rules](#shield-rules)
48
+
49
+ </div>
50
+
51
+ ---
52
+
53
+ ## The Problem
54
+
55
+ AI agents are acting in the real world — deleting files, restarting servers, controlling robots. Claude has 22 MCP tools. GPT has computer use.
56
+
57
+ But who stops them from breaking things?
58
+
59
+ Today the answer is: the prompt says "be careful." That's like telling a car "don't crash" instead of installing brakes.
60
+
61
+ **Halyn is the brakes.**
62
+
63
+ ## Quick Start
64
+
65
+ ```bash
66
+ pip install halyn
67
+ halyn-mcp --port 8935
68
+ # Open http://localhost:8935 → see the dashboard
69
+ ```
70
+
71
+ 30 seconds. Zero code. Working dashboard.
72
+
73
+ ## Dashboard
74
+
75
+ Built-in web UI. Type commands, see shields, watch the audit chain update in real-time.
76
+
77
+ ## Shield Rules
78
+
79
+ Constraints enforced at protocol level. The AI has **no power** to override them.
80
+
81
+ ```python
82
+ from halyn import ControlPlane, SSHDriver
83
+
84
+ cp = ControlPlane()
85
+ cp.connect(SSHDriver("192.168.1.10", "admin"))
86
+ cp.shield("deny * delete *") # no deletions — ever
87
+
88
+ cp.act("restart nginx") # ✓ allowed
89
+ cp.act("rm -rf /etc") # ✗ blocked — always
90
+ ```
91
+
92
+ Not guidelines. **Physics.**
93
+
94
+ ## Audit Chain
95
+
96
+ Every action recorded in SHA-256 hash chain. Tamper-evident, append-only.
97
+
98
+ ## 12 Drivers
99
+
100
+ SSH, HTTP, WebSocket, Serial, MQTT, OPC-UA, ROS2, DDS, Docker, Browser, Unitree, Socket.
101
+
102
+ ## Built on NRP
103
+
104
+ Halyn implements [NRP](https://nrprotocol.dev) — 6 rules that no AI can break.
105
+
106
+ ---
107
+
108
+ [halyn.dev](https://halyn.dev) · [nrprotocol.dev](https://nrprotocol.dev) · [PyPI](https://pypi.org/project/halyn/) · [contact@halyn.dev](mailto:contact@halyn.dev)
halyn-0.5.0/README.md ADDED
@@ -0,0 +1,73 @@
1
+ <div align="center">
2
+
3
+ # Halyn
4
+
5
+ **AI agents act in the world. Halyn makes sure they can't break it.**
6
+
7
+ [![PyPI](https://img.shields.io/pypi/v/halyn?style=flat-square&color=0a6e3f)](https://pypi.org/project/halyn/)
8
+ [![Python](https://img.shields.io/badge/python-3.10+-0a6e3f?style=flat-square)](https://pypi.org/project/halyn/)
9
+
10
+ The safety layer for AI agents · Shield rules · Audit chain · Built-in dashboard
11
+
12
+ [Website](https://halyn.dev) · [Quick Start](#quick-start) · [Dashboard](#dashboard) · [Shield Rules](#shield-rules)
13
+
14
+ </div>
15
+
16
+ ---
17
+
18
+ ## The Problem
19
+
20
+ AI agents are acting in the real world — deleting files, restarting servers, controlling robots. Claude has 22 MCP tools. GPT has computer use.
21
+
22
+ But who stops them from breaking things?
23
+
24
+ Today the answer is: the prompt says "be careful." That's like telling a car "don't crash" instead of installing brakes.
25
+
26
+ **Halyn is the brakes.**
27
+
28
+ ## Quick Start
29
+
30
+ ```bash
31
+ pip install halyn
32
+ halyn-mcp --port 8935
33
+ # Open http://localhost:8935 → see the dashboard
34
+ ```
35
+
36
+ 30 seconds. Zero code. Working dashboard.
37
+
38
+ ## Dashboard
39
+
40
+ Built-in web UI. Type commands, see shields, watch the audit chain update in real-time.
41
+
42
+ ## Shield Rules
43
+
44
+ Constraints enforced at protocol level. The AI has **no power** to override them.
45
+
46
+ ```python
47
+ from halyn import ControlPlane, SSHDriver
48
+
49
+ cp = ControlPlane()
50
+ cp.connect(SSHDriver("192.168.1.10", "admin"))
51
+ cp.shield("deny * delete *") # no deletions — ever
52
+
53
+ cp.act("restart nginx") # ✓ allowed
54
+ cp.act("rm -rf /etc") # ✗ blocked — always
55
+ ```
56
+
57
+ Not guidelines. **Physics.**
58
+
59
+ ## Audit Chain
60
+
61
+ Every action recorded in SHA-256 hash chain. Tamper-evident, append-only.
62
+
63
+ ## 12 Drivers
64
+
65
+ SSH, HTTP, WebSocket, Serial, MQTT, OPC-UA, ROS2, DDS, Docker, Browser, Unitree, Socket.
66
+
67
+ ## Built on NRP
68
+
69
+ Halyn implements [NRP](https://nrprotocol.dev) — 6 rules that no AI can break.
70
+
71
+ ---
72
+
73
+ [halyn.dev](https://halyn.dev) · [nrprotocol.dev](https://nrprotocol.dev) · [PyPI](https://pypi.org/project/halyn/) · [contact@halyn.dev](mailto:contact@halyn.dev)
@@ -1,16 +1,15 @@
1
1
  [project]
2
2
  name = "halyn"
3
- version = "0.4.2"
4
- description = "Halyn — NRP control plane with domain-scoped authorization."
3
+ version = "0.5.0"
4
+ description = "Halyn — Enforceable safety for AI agents. Shield rules, audit chain, dashboard."
5
5
  requires-python = ">=3.10"
6
- license = {text = "MIT"}
6
+ license = {text = "Proprietary"}
7
7
  authors = [{name = "Elmadani SALKA", email = "contact@halyn.dev"}]
8
8
  readme = "README.md"
9
9
  keywords = ["ai", "browser", "robotics", "iot", "mcp", "nrp", "llm", "infrastructure", "devops"]
10
10
  classifiers = [
11
11
  "Development Status :: 3 - Alpha",
12
- "License :: OSI Approved :: MIT License",
13
- "Programming Language :: Python :: 3",
12
+ "Programming Language :: Python :: 3",
14
13
  "Topic :: Scientific/Engineering :: Artificial Intelligence",
15
14
  "Topic :: System :: Systems Administration",
16
15
  ]
@@ -2,7 +2,7 @@
2
2
  # Licensed under the MIT License. See LICENSE file.
3
3
  """Halyn — Connect any device to any AI."""
4
4
 
5
- __version__ = "0.4.2"
5
+ __version__ = "0.5.0"
6
6
  __author__ = "Elmadani SALKA"
7
7
  __license__ = "MIT"
8
8
 
@@ -0,0 +1,108 @@
1
+ Metadata-Version: 2.4
2
+ Name: halyn
3
+ Version: 0.5.0
4
+ Summary: Halyn — Enforceable safety for AI agents. Shield rules, audit chain, dashboard.
5
+ Author-email: Elmadani SALKA <contact@halyn.dev>
6
+ License: Proprietary
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: Programming Language :: Python :: 3
13
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
14
+ Classifier: Topic :: System :: Systems Administration
15
+ Requires-Python: >=3.10
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Requires-Dist: nrprotocol>=0.1.0
19
+ Requires-Dist: aiohttp>=3.9
20
+ Provides-Extra: enterprise
21
+ Requires-Dist: grpcio>=1.60; extra == "enterprise"
22
+ Requires-Dist: psycopg2-binary; extra == "enterprise"
23
+ Requires-Dist: redis; extra == "enterprise"
24
+ Provides-Extra: robotics
25
+ Requires-Dist: rclpy; extra == "robotics"
26
+ Requires-Dist: unitree-sdk2py; extra == "robotics"
27
+ Provides-Extra: iot
28
+ Requires-Dist: paho-mqtt; extra == "iot"
29
+ Provides-Extra: dev
30
+ Requires-Dist: pytest; extra == "dev"
31
+ Requires-Dist: pytest-asyncio; extra == "dev"
32
+ Requires-Dist: mypy; extra == "dev"
33
+ Requires-Dist: ruff; extra == "dev"
34
+ Dynamic: license-file
35
+
36
+ <div align="center">
37
+
38
+ # Halyn
39
+
40
+ **AI agents act in the world. Halyn makes sure they can't break it.**
41
+
42
+ [![PyPI](https://img.shields.io/pypi/v/halyn?style=flat-square&color=0a6e3f)](https://pypi.org/project/halyn/)
43
+ [![Python](https://img.shields.io/badge/python-3.10+-0a6e3f?style=flat-square)](https://pypi.org/project/halyn/)
44
+
45
+ The safety layer for AI agents · Shield rules · Audit chain · Built-in dashboard
46
+
47
+ [Website](https://halyn.dev) · [Quick Start](#quick-start) · [Dashboard](#dashboard) · [Shield Rules](#shield-rules)
48
+
49
+ </div>
50
+
51
+ ---
52
+
53
+ ## The Problem
54
+
55
+ AI agents are acting in the real world — deleting files, restarting servers, controlling robots. Claude has 22 MCP tools. GPT has computer use.
56
+
57
+ But who stops them from breaking things?
58
+
59
+ Today the answer is: the prompt says "be careful." That's like telling a car "don't crash" instead of installing brakes.
60
+
61
+ **Halyn is the brakes.**
62
+
63
+ ## Quick Start
64
+
65
+ ```bash
66
+ pip install halyn
67
+ halyn-mcp --port 8935
68
+ # Open http://localhost:8935 → see the dashboard
69
+ ```
70
+
71
+ 30 seconds. Zero code. Working dashboard.
72
+
73
+ ## Dashboard
74
+
75
+ Built-in web UI. Type commands, see shields, watch the audit chain update in real-time.
76
+
77
+ ## Shield Rules
78
+
79
+ Constraints enforced at protocol level. The AI has **no power** to override them.
80
+
81
+ ```python
82
+ from halyn import ControlPlane, SSHDriver
83
+
84
+ cp = ControlPlane()
85
+ cp.connect(SSHDriver("192.168.1.10", "admin"))
86
+ cp.shield("deny * delete *") # no deletions — ever
87
+
88
+ cp.act("restart nginx") # ✓ allowed
89
+ cp.act("rm -rf /etc") # ✗ blocked — always
90
+ ```
91
+
92
+ Not guidelines. **Physics.**
93
+
94
+ ## Audit Chain
95
+
96
+ Every action recorded in SHA-256 hash chain. Tamper-evident, append-only.
97
+
98
+ ## 12 Drivers
99
+
100
+ SSH, HTTP, WebSocket, Serial, MQTT, OPC-UA, ROS2, DDS, Docker, Browser, Unitree, Socket.
101
+
102
+ ## Built on NRP
103
+
104
+ Halyn implements [NRP](https://nrprotocol.dev) — 6 rules that no AI can break.
105
+
106
+ ---
107
+
108
+ [halyn.dev](https://halyn.dev) · [nrprotocol.dev](https://nrprotocol.dev) · [PyPI](https://pypi.org/project/halyn/) · [contact@halyn.dev](mailto:contact@halyn.dev)
halyn-0.4.2/LICENSE DELETED
@@ -1,15 +0,0 @@
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.
halyn-0.4.2/PKG-INFO DELETED
@@ -1,178 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: halyn
3
- Version: 0.4.2
4
- Summary: Halyn — NRP control plane with domain-scoped authorization.
5
- Author-email: Elmadani SALKA <contact@halyn.dev>
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: nrprotocol>=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
- # Halyn
40
-
41
- **Connect any device to any AI.**
42
-
43
- [![PyPI](https://img.shields.io/pypi/v/halyn?style=flat-square&color=0a6e3f)](https://pypi.org/project/halyn/)
44
- [![License](https://img.shields.io/badge/license-MIT-0a6e3f?style=flat-square)](LICENSE)
45
- [![Python](https://img.shields.io/badge/python-3.10+-0a6e3f?style=flat-square)](https://pypi.org/project/halyn/)
46
-
47
- MCP Server · 12 drivers · Shield rules · Audit chain · 5 autonomy levels
48
-
49
- [Website](https://halyn.dev) · [Quickstart](#quickstart) · [MCP Server](#mcp-server) · [Tutorials](https://halyn.dev#tutorials)
50
-
51
- </div>
52
-
53
- ---
54
-
55
- ## The Problem
56
-
57
- MCP connects AI to software. But AI is entering the physical world — robots, drones, factories, farms, hospitals. There's no universal standard for how AI safely controls hardware.
58
-
59
- **Halyn connects AI to everything else.** Servers, sensors, robots, industrial machines, smart homes — with safety rules the AI cannot break.
60
-
61
- ## Quickstart
62
-
63
- ```bash
64
- pip install halyn
65
- ```
66
-
67
- ```python
68
- from halyn import ControlPlane, SSHDriver
69
-
70
- cp = ControlPlane()
71
- cp.connect(SSHDriver("192.168.1.10", "admin"))
72
-
73
- # Safety rules — the AI physically cannot bypass these
74
- cp.shield("deny * delete *")
75
- cp.shield("deny * write /etc/*")
76
-
77
- # Observe
78
- state = cp.observe()
79
- print(state) # {"cpu": 23.4, "mem": 67.2, ...}
80
-
81
- # Act (within shield rules)
82
- cp.act("restart nginx") # ✓ allowed
83
- cp.act("rm -rf /etc") # ✗ blocked by shield
84
- ```
85
-
86
- ## MCP Server
87
-
88
- Connect Claude.ai, ChatGPT, Cursor, or any MCP client directly to your devices:
89
-
90
- ```bash
91
- # Start the MCP Server
92
- halyn-mcp --port 8935
93
-
94
- # In Claude.ai → Settings → MCP → Add Server
95
- # URL: http://your-server:8935/mcp
96
- ```
97
-
98
- Then just talk:
99
- - *"Show me the status of all connected devices"*
100
- - *"What's the temperature in the greenhouse?"*
101
- - *"Restart nginx on server-01"*
102
- - *"Show me the audit trail"*
103
-
104
- The AI sees your devices as tools. Shield rules still apply. Every action is audited.
105
-
106
- ## 12 Drivers
107
-
108
- | Driver | Target | Protocol |
109
- |--------|--------|----------|
110
- | `SSHDriver` | Linux/Mac servers | SSH |
111
- | `HTTPDriver` | REST APIs, webhooks | HTTP |
112
- | `WebSocketDriver` | Real-time streams | WebSocket |
113
- | `SerialDriver` | Arduino, Pi, PLCs | Serial |
114
- | `MQTTDriver` | IoT sensors | MQTT |
115
- | `OPCUADriver` | Industrial machines | OPC-UA |
116
- | `ROS2Driver` | Robots, drones | ROS2/DDS |
117
- | `DDSDriver` | Real-time systems | DDS |
118
- | `DockerDriver` | Containers | Docker API |
119
- | `BrowserDriver` | Web automation | Chrome CDP |
120
- | `UnitreeDriver` | Unitree robots | UDP |
121
- | `SocketDriver` | Raw TCP/UDP | Socket |
122
-
123
- ## Safety
124
-
125
- **Shield Rules** — Constraints enforced at protocol level. The AI has no power to override them.
126
-
127
- ```python
128
- cp.shield("deny * delete *") # no deletions
129
- cp.shield("deny * write temperature > 180") # thermal limit
130
- cp.shield("deny lock unlock between 23:00-06:00") # doors locked at night
131
- ```
132
-
133
- **Audit Chain** — Every action recorded in SHA-256 hash chain. Tamper-evident. Append-only.
134
-
135
- **Consent Protocol** — Devices and AI negotiate permissions before any interaction.
136
-
137
- **5 Autonomy Levels** — From fully manual to fully autonomous. You choose.
138
-
139
- | Level | Name | Who Decides |
140
- |-------|------|-------------|
141
- | 0 | Manual | Human does everything |
142
- | 1 | Advisory | AI suggests, human acts |
143
- | 2 | Supervised | AI acts, human approves |
144
- | 3 | Monitored | AI acts freely, human watches |
145
- | 4 | Autonomous | AI decides within shield rules |
146
-
147
- ## Works with Every LLM
148
-
149
- ```python
150
- # Claude
151
- import anthropic
152
- client = anthropic.Anthropic()
153
- response = client.messages.create(model="claude-sonnet-4-6", ...)
154
- cp.act(response.content[0].text)
155
-
156
- # GPT
157
- from openai import OpenAI
158
- client = OpenAI()
159
- response = client.chat.completions.create(model="gpt-5", ...)
160
-
161
- # Local (Ollama — no internet needed)
162
- import ollama
163
- response = ollama.chat(model="llama4", ...)
164
-
165
- # All use the same shield rules. Same audit chain.
166
- ```
167
-
168
- ## Built on NRP
169
-
170
- Halyn implements [NRP (Node Reach Protocol)](https://nrprotocol.dev) — the open standard for AI-to-device communication. 6 primitives: Manifest, Observe, Act, Shield, Audit, Consent.
171
-
172
- ## Free. Open Source. Forever.
173
-
174
- MIT licensed. Use it for anything. Modify it. Build a company on it. No fees, no limits, no lock-in.
175
-
176
- ---
177
-
178
- [halyn.dev](https://halyn.dev) · [nrprotocol.dev](https://nrprotocol.dev) · [PyPI](https://pypi.org/project/halyn/) · [contact@halyn.dev](mailto:contact@halyn.dev)
halyn-0.4.2/README.md DELETED
@@ -1,142 +0,0 @@
1
- <div align="center">
2
-
3
- # Halyn
4
-
5
- **Connect any device to any AI.**
6
-
7
- [![PyPI](https://img.shields.io/pypi/v/halyn?style=flat-square&color=0a6e3f)](https://pypi.org/project/halyn/)
8
- [![License](https://img.shields.io/badge/license-MIT-0a6e3f?style=flat-square)](LICENSE)
9
- [![Python](https://img.shields.io/badge/python-3.10+-0a6e3f?style=flat-square)](https://pypi.org/project/halyn/)
10
-
11
- MCP Server · 12 drivers · Shield rules · Audit chain · 5 autonomy levels
12
-
13
- [Website](https://halyn.dev) · [Quickstart](#quickstart) · [MCP Server](#mcp-server) · [Tutorials](https://halyn.dev#tutorials)
14
-
15
- </div>
16
-
17
- ---
18
-
19
- ## The Problem
20
-
21
- MCP connects AI to software. But AI is entering the physical world — robots, drones, factories, farms, hospitals. There's no universal standard for how AI safely controls hardware.
22
-
23
- **Halyn connects AI to everything else.** Servers, sensors, robots, industrial machines, smart homes — with safety rules the AI cannot break.
24
-
25
- ## Quickstart
26
-
27
- ```bash
28
- pip install halyn
29
- ```
30
-
31
- ```python
32
- from halyn import ControlPlane, SSHDriver
33
-
34
- cp = ControlPlane()
35
- cp.connect(SSHDriver("192.168.1.10", "admin"))
36
-
37
- # Safety rules — the AI physically cannot bypass these
38
- cp.shield("deny * delete *")
39
- cp.shield("deny * write /etc/*")
40
-
41
- # Observe
42
- state = cp.observe()
43
- print(state) # {"cpu": 23.4, "mem": 67.2, ...}
44
-
45
- # Act (within shield rules)
46
- cp.act("restart nginx") # ✓ allowed
47
- cp.act("rm -rf /etc") # ✗ blocked by shield
48
- ```
49
-
50
- ## MCP Server
51
-
52
- Connect Claude.ai, ChatGPT, Cursor, or any MCP client directly to your devices:
53
-
54
- ```bash
55
- # Start the MCP Server
56
- halyn-mcp --port 8935
57
-
58
- # In Claude.ai → Settings → MCP → Add Server
59
- # URL: http://your-server:8935/mcp
60
- ```
61
-
62
- Then just talk:
63
- - *"Show me the status of all connected devices"*
64
- - *"What's the temperature in the greenhouse?"*
65
- - *"Restart nginx on server-01"*
66
- - *"Show me the audit trail"*
67
-
68
- The AI sees your devices as tools. Shield rules still apply. Every action is audited.
69
-
70
- ## 12 Drivers
71
-
72
- | Driver | Target | Protocol |
73
- |--------|--------|----------|
74
- | `SSHDriver` | Linux/Mac servers | SSH |
75
- | `HTTPDriver` | REST APIs, webhooks | HTTP |
76
- | `WebSocketDriver` | Real-time streams | WebSocket |
77
- | `SerialDriver` | Arduino, Pi, PLCs | Serial |
78
- | `MQTTDriver` | IoT sensors | MQTT |
79
- | `OPCUADriver` | Industrial machines | OPC-UA |
80
- | `ROS2Driver` | Robots, drones | ROS2/DDS |
81
- | `DDSDriver` | Real-time systems | DDS |
82
- | `DockerDriver` | Containers | Docker API |
83
- | `BrowserDriver` | Web automation | Chrome CDP |
84
- | `UnitreeDriver` | Unitree robots | UDP |
85
- | `SocketDriver` | Raw TCP/UDP | Socket |
86
-
87
- ## Safety
88
-
89
- **Shield Rules** — Constraints enforced at protocol level. The AI has no power to override them.
90
-
91
- ```python
92
- cp.shield("deny * delete *") # no deletions
93
- cp.shield("deny * write temperature > 180") # thermal limit
94
- cp.shield("deny lock unlock between 23:00-06:00") # doors locked at night
95
- ```
96
-
97
- **Audit Chain** — Every action recorded in SHA-256 hash chain. Tamper-evident. Append-only.
98
-
99
- **Consent Protocol** — Devices and AI negotiate permissions before any interaction.
100
-
101
- **5 Autonomy Levels** — From fully manual to fully autonomous. You choose.
102
-
103
- | Level | Name | Who Decides |
104
- |-------|------|-------------|
105
- | 0 | Manual | Human does everything |
106
- | 1 | Advisory | AI suggests, human acts |
107
- | 2 | Supervised | AI acts, human approves |
108
- | 3 | Monitored | AI acts freely, human watches |
109
- | 4 | Autonomous | AI decides within shield rules |
110
-
111
- ## Works with Every LLM
112
-
113
- ```python
114
- # Claude
115
- import anthropic
116
- client = anthropic.Anthropic()
117
- response = client.messages.create(model="claude-sonnet-4-6", ...)
118
- cp.act(response.content[0].text)
119
-
120
- # GPT
121
- from openai import OpenAI
122
- client = OpenAI()
123
- response = client.chat.completions.create(model="gpt-5", ...)
124
-
125
- # Local (Ollama — no internet needed)
126
- import ollama
127
- response = ollama.chat(model="llama4", ...)
128
-
129
- # All use the same shield rules. Same audit chain.
130
- ```
131
-
132
- ## Built on NRP
133
-
134
- Halyn implements [NRP (Node Reach Protocol)](https://nrprotocol.dev) — the open standard for AI-to-device communication. 6 primitives: Manifest, Observe, Act, Shield, Audit, Consent.
135
-
136
- ## Free. Open Source. Forever.
137
-
138
- MIT licensed. Use it for anything. Modify it. Build a company on it. No fees, no limits, no lock-in.
139
-
140
- ---
141
-
142
- [halyn.dev](https://halyn.dev) · [nrprotocol.dev](https://nrprotocol.dev) · [PyPI](https://pypi.org/project/halyn/) · [contact@halyn.dev](mailto:contact@halyn.dev)
@@ -1,178 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: halyn
3
- Version: 0.4.2
4
- Summary: Halyn — NRP control plane with domain-scoped authorization.
5
- Author-email: Elmadani SALKA <contact@halyn.dev>
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: nrprotocol>=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
- # Halyn
40
-
41
- **Connect any device to any AI.**
42
-
43
- [![PyPI](https://img.shields.io/pypi/v/halyn?style=flat-square&color=0a6e3f)](https://pypi.org/project/halyn/)
44
- [![License](https://img.shields.io/badge/license-MIT-0a6e3f?style=flat-square)](LICENSE)
45
- [![Python](https://img.shields.io/badge/python-3.10+-0a6e3f?style=flat-square)](https://pypi.org/project/halyn/)
46
-
47
- MCP Server · 12 drivers · Shield rules · Audit chain · 5 autonomy levels
48
-
49
- [Website](https://halyn.dev) · [Quickstart](#quickstart) · [MCP Server](#mcp-server) · [Tutorials](https://halyn.dev#tutorials)
50
-
51
- </div>
52
-
53
- ---
54
-
55
- ## The Problem
56
-
57
- MCP connects AI to software. But AI is entering the physical world — robots, drones, factories, farms, hospitals. There's no universal standard for how AI safely controls hardware.
58
-
59
- **Halyn connects AI to everything else.** Servers, sensors, robots, industrial machines, smart homes — with safety rules the AI cannot break.
60
-
61
- ## Quickstart
62
-
63
- ```bash
64
- pip install halyn
65
- ```
66
-
67
- ```python
68
- from halyn import ControlPlane, SSHDriver
69
-
70
- cp = ControlPlane()
71
- cp.connect(SSHDriver("192.168.1.10", "admin"))
72
-
73
- # Safety rules — the AI physically cannot bypass these
74
- cp.shield("deny * delete *")
75
- cp.shield("deny * write /etc/*")
76
-
77
- # Observe
78
- state = cp.observe()
79
- print(state) # {"cpu": 23.4, "mem": 67.2, ...}
80
-
81
- # Act (within shield rules)
82
- cp.act("restart nginx") # ✓ allowed
83
- cp.act("rm -rf /etc") # ✗ blocked by shield
84
- ```
85
-
86
- ## MCP Server
87
-
88
- Connect Claude.ai, ChatGPT, Cursor, or any MCP client directly to your devices:
89
-
90
- ```bash
91
- # Start the MCP Server
92
- halyn-mcp --port 8935
93
-
94
- # In Claude.ai → Settings → MCP → Add Server
95
- # URL: http://your-server:8935/mcp
96
- ```
97
-
98
- Then just talk:
99
- - *"Show me the status of all connected devices"*
100
- - *"What's the temperature in the greenhouse?"*
101
- - *"Restart nginx on server-01"*
102
- - *"Show me the audit trail"*
103
-
104
- The AI sees your devices as tools. Shield rules still apply. Every action is audited.
105
-
106
- ## 12 Drivers
107
-
108
- | Driver | Target | Protocol |
109
- |--------|--------|----------|
110
- | `SSHDriver` | Linux/Mac servers | SSH |
111
- | `HTTPDriver` | REST APIs, webhooks | HTTP |
112
- | `WebSocketDriver` | Real-time streams | WebSocket |
113
- | `SerialDriver` | Arduino, Pi, PLCs | Serial |
114
- | `MQTTDriver` | IoT sensors | MQTT |
115
- | `OPCUADriver` | Industrial machines | OPC-UA |
116
- | `ROS2Driver` | Robots, drones | ROS2/DDS |
117
- | `DDSDriver` | Real-time systems | DDS |
118
- | `DockerDriver` | Containers | Docker API |
119
- | `BrowserDriver` | Web automation | Chrome CDP |
120
- | `UnitreeDriver` | Unitree robots | UDP |
121
- | `SocketDriver` | Raw TCP/UDP | Socket |
122
-
123
- ## Safety
124
-
125
- **Shield Rules** — Constraints enforced at protocol level. The AI has no power to override them.
126
-
127
- ```python
128
- cp.shield("deny * delete *") # no deletions
129
- cp.shield("deny * write temperature > 180") # thermal limit
130
- cp.shield("deny lock unlock between 23:00-06:00") # doors locked at night
131
- ```
132
-
133
- **Audit Chain** — Every action recorded in SHA-256 hash chain. Tamper-evident. Append-only.
134
-
135
- **Consent Protocol** — Devices and AI negotiate permissions before any interaction.
136
-
137
- **5 Autonomy Levels** — From fully manual to fully autonomous. You choose.
138
-
139
- | Level | Name | Who Decides |
140
- |-------|------|-------------|
141
- | 0 | Manual | Human does everything |
142
- | 1 | Advisory | AI suggests, human acts |
143
- | 2 | Supervised | AI acts, human approves |
144
- | 3 | Monitored | AI acts freely, human watches |
145
- | 4 | Autonomous | AI decides within shield rules |
146
-
147
- ## Works with Every LLM
148
-
149
- ```python
150
- # Claude
151
- import anthropic
152
- client = anthropic.Anthropic()
153
- response = client.messages.create(model="claude-sonnet-4-6", ...)
154
- cp.act(response.content[0].text)
155
-
156
- # GPT
157
- from openai import OpenAI
158
- client = OpenAI()
159
- response = client.chat.completions.create(model="gpt-5", ...)
160
-
161
- # Local (Ollama — no internet needed)
162
- import ollama
163
- response = ollama.chat(model="llama4", ...)
164
-
165
- # All use the same shield rules. Same audit chain.
166
- ```
167
-
168
- ## Built on NRP
169
-
170
- Halyn implements [NRP (Node Reach Protocol)](https://nrprotocol.dev) — the open standard for AI-to-device communication. 6 primitives: Manifest, Observe, Act, Shield, Audit, Consent.
171
-
172
- ## Free. Open Source. Forever.
173
-
174
- MIT licensed. Use it for anything. Modify it. Build a company on it. No fees, no limits, no lock-in.
175
-
176
- ---
177
-
178
- [halyn.dev](https://halyn.dev) · [nrprotocol.dev](https://nrprotocol.dev) · [PyPI](https://pypi.org/project/halyn/) · [contact@halyn.dev](mailto:contact@halyn.dev)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes