Halyn — NRP control plane with domain-scoped authorization.
Project description
Halyn
Connect any device to any AI.
MCP Server · 12 drivers · Shield rules · Audit chain · 5 autonomy levels
Website · Quickstart · MCP Server · Tutorials
The Problem
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.
Halyn connects AI to everything else. Servers, sensors, robots, industrial machines, smart homes — with safety rules the AI cannot break.
Quickstart
pip install halyn
from halyn import ControlPlane, SSHDriver
cp = ControlPlane()
cp.connect(SSHDriver("192.168.1.10", "admin"))
# Safety rules — the AI physically cannot bypass these
cp.shield("deny * delete *")
cp.shield("deny * write /etc/*")
# Observe
state = cp.observe()
print(state) # {"cpu": 23.4, "mem": 67.2, ...}
# Act (within shield rules)
cp.act("restart nginx") # ✓ allowed
cp.act("rm -rf /etc") # ✗ blocked by shield
MCP Server
Connect Claude.ai, ChatGPT, Cursor, or any MCP client directly to your devices:
# Start the MCP Server
halyn-mcp --port 8935
# In Claude.ai → Settings → MCP → Add Server
# URL: http://your-server:8935/mcp
Then just talk:
- "Show me the status of all connected devices"
- "What's the temperature in the greenhouse?"
- "Restart nginx on server-01"
- "Show me the audit trail"
The AI sees your devices as tools. Shield rules still apply. Every action is audited.
12 Drivers
| Driver | Target | Protocol |
|---|---|---|
SSHDriver |
Linux/Mac servers | SSH |
HTTPDriver |
REST APIs, webhooks | HTTP |
WebSocketDriver |
Real-time streams | WebSocket |
SerialDriver |
Arduino, Pi, PLCs | Serial |
MQTTDriver |
IoT sensors | MQTT |
OPCUADriver |
Industrial machines | OPC-UA |
ROS2Driver |
Robots, drones | ROS2/DDS |
DDSDriver |
Real-time systems | DDS |
DockerDriver |
Containers | Docker API |
BrowserDriver |
Web automation | Chrome CDP |
UnitreeDriver |
Unitree robots | UDP |
SocketDriver |
Raw TCP/UDP | Socket |
Safety
Shield Rules — Constraints enforced at protocol level. The AI has no power to override them.
cp.shield("deny * delete *") # no deletions
cp.shield("deny * write temperature > 180") # thermal limit
cp.shield("deny lock unlock between 23:00-06:00") # doors locked at night
Audit Chain — Every action recorded in SHA-256 hash chain. Tamper-evident. Append-only.
Consent Protocol — Devices and AI negotiate permissions before any interaction.
5 Autonomy Levels — From fully manual to fully autonomous. You choose.
| Level | Name | Who Decides |
|---|---|---|
| 0 | Manual | Human does everything |
| 1 | Advisory | AI suggests, human acts |
| 2 | Supervised | AI acts, human approves |
| 3 | Monitored | AI acts freely, human watches |
| 4 | Autonomous | AI decides within shield rules |
Works with Every LLM
# Claude
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(model="claude-sonnet-4-6", ...)
cp.act(response.content[0].text)
# GPT
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(model="gpt-5", ...)
# Local (Ollama — no internet needed)
import ollama
response = ollama.chat(model="llama4", ...)
# All use the same shield rules. Same audit chain.
Built on NRP
Halyn implements NRP (Node Reach Protocol) — the open standard for AI-to-device communication. 6 primitives: Manifest, Observe, Act, Shield, Audit, Consent.
Free. Open Source. Forever.
MIT licensed. Use it for anything. Modify it. Build a company on it. No fees, no limits, no lock-in.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file halyn-0.4.1.tar.gz.
File metadata
- Download URL: halyn-0.4.1.tar.gz
- Upload date:
- Size: 76.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b60a16747d25c7bf38a36aa21ce4be8c815f068d8c44ab3bd49cc66f74a8e8db
|
|
| MD5 |
e52d56e79f99827b151b2a1c651066b3
|
|
| BLAKE2b-256 |
45789f3cf14f7acbb0ff5677a13bab75db0bb11d3d929a9b0df9de0cdd9d85cd
|
File details
Details for the file halyn-0.4.1-py3-none-any.whl.
File metadata
- Download URL: halyn-0.4.1-py3-none-any.whl
- Upload date:
- Size: 86.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08ef797cf9bd35a680ffa6415705d1192d69688651a4616870a9d4c09c278d4e
|
|
| MD5 |
411e94ac5cc03653cd49ded76631d865
|
|
| BLAKE2b-256 |
f74d5c8ee760c1110a8f548f7cb2aba1f189252d61c0cbc50559ea9ad5dae5a2
|