Halyn — NRP control plane with domain-scoped authorization.
Project description
Halyn
NRP Control Plane
Connect any device to any LLM through NRP.
NRP control plane with domain-scoped authorization.
you: "How's the factory?"
halyn: All 12 arms running. Arm-7 joint 3 is 12°C above normal.
Soil moisture in the north field dropped to 18%.
3 urgent emails. Hetzner invoice due tomorrow.
Want me to handle any of these?
What It Does
Halyn connects AI to:
| Domain | Examples |
|---|---|
| Servers | Deploy, monitor, fix, scale |
| Robots | Move, pick, navigate, patrol |
| Sensors | Temperature, humidity, soil, air |
| APIs | Stripe, GitHub, Slack — any REST/GraphQL |
| Factories | PLCs, SCADA, OPC-UA, Modbus |
| Smart Home | Lights, climate, security |
| Vehicles | Navigate, charge, maintain |
| Drones | Survey, photograph, deliver |
One protocol. One conversation. Everything.
Quick Start
pip install halyn
halyn scan # discover your world
halyn connect # plug your LLM
halyn serve # start running
Any LLM
# halyn.yml
llm:
provider: claude # or: openai, ollama, huggingface, vllm
model: claude-sonnet-4-20250514
Halyn doesn't lock you in. Claude today. Local Ollama tomorrow. Same nodes. Same drivers. Same safety.
Human Always in Control
5 autonomy levels. Per domain. Per node. Per hour.
| Level | Name | Behavior |
|---|---|---|
| 0 | Manual | AI proposes. You approve every action. |
| 1 | Supervised | AI reads alone. Asks before acting. |
| 2 | Guided | Safe actions alone. Dangerous = confirm. |
| 3 | Autonomous | Does everything. You can interrupt anytime. |
| 4 | Full Auto | Handles routine. Reports daily. |
# halyn.yml
domains:
physical:
level: 1 # supervised
nodes: [robot/*, drone/*]
confirm: [move, pick, deploy]
financial:
level: 0 # manual — confirm everything
nodes: [finance/*, bank/*]
blocked: [delete]
monitoring:
level: 4 # full auto
nodes: [sensor/*, monitor/*]
infrastructure:
level: 2 # guided
nodes: [server/*, cloud/*]
confirm: [restart, deploy, delete]
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.
Security
Not optional. Not a feature. The foundation.
| Layer | What It Does |
|---|---|
| Auth | API key with timing-safe HMAC |
| Autonomy | 5 levels per domain, rate limiting |
| Shield | Per-node safety rules from NRP |
| Sanitizer | Injection, traversal, overflow protection |
| Audit | SHA-256 hash-chain on disk, tamper-detectable |
| Watchdog | Health monitoring, failsafe on crash |
| Redaction | No internal paths or secrets in errors |
If Halyn crashes, nodes enter safe state automatically.
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.
Architecture
Any LLM
│ MCP
▼
Halyn Control Plane
│ ┌─ Autonomy (5 levels)
│ ├─ Audit (SHA-256 chain)
│ ├─ Watchdog (failsafe)
│ ├─ Auth + Sanitizer
│ └─ Memory (SQLite + FTS5)
│
│ NRP (Node Reach Protocol)
│
├──→ SSH (servers)
├──→ Docker (containers)
├──→ Chrome CDP (browsers)
├──→ ROS2 (robots)
├──→ Unitree (humanoids)
├──→ MQTT (IoT sensors)
├──→ OPC-UA (industrial PLCs)
├──→ HTTP Auto (any API — auto-introspected)
└──→ Your driver (~100 lines)
HTTP Auto-Introspection
Point Halyn at any API. It reads the OpenAPI/GraphQL spec. Generates the manifest. Creates the tools. Automatically.
nodes:
- id: nrp://cloud/api/stripe
driver: http_auto
base_url: https://api.stripe.com/v1
auth_token: Bearer ${STRIPE_API_KEY}
- id: nrp://cloud/api/github
driver: http_auto
base_url: https://api.github.com
auth_token: Bearer ${GITHUB_TOKEN}
Any API in the world becomes an NRP node. Zero custom code.
Docker
docker compose up -d
# docker-compose.yml included — non-root, healthcheck, resource limits
Stats
| Metric | Value |
|---|---|
| Source lines | ~5,200 |
| Drivers | 9 |
| LLM connectors | 5 (Claude, GPT, Ollama, HF, vLLM) |
| Tests | 48 passed, 0 failed |
| Dependencies | 1 (aiohttp) |
| Docker image | ~150MB |
| MCP native | Yes (Claude.ai direct) |
| Tested on | Real hardware across 3 countries |
Built on NRP
Halyn implements the Node Reach Protocol — the universal standard for AI-to-world control. Any NRP-compatible device works with Halyn automatically.
Contributing
See CONTRIBUTING.md.
Security
See SECURITY.md. Report vulnerabilities to Elmadani.SALKA@proton.me.
License
MIT
Author
Elmadani SALKA
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.2.2.tar.gz.
File metadata
- Download URL: halyn-0.2.2.tar.gz
- Upload date:
- Size: 67.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
816e3bd91d3fe870cb05c1890d5820e82568abba06110ee2849c6b3c8f88f4d5
|
|
| MD5 |
70075727db4c76bc1018b4799bc13cf4
|
|
| BLAKE2b-256 |
6c31639c7fbed2806cfd2d17734336b3a332344cc109d884f21bd0731445f66f
|
File details
Details for the file halyn-0.2.2-py3-none-any.whl.
File metadata
- Download URL: halyn-0.2.2-py3-none-any.whl
- Upload date:
- Size: 75.5 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 |
0fe8047ee59f9c4a12c8f1d2430a5eb9f930ace4476082a57f7fbbbfbf5e57df
|
|
| MD5 |
8393f4c56c113005db36baa091e8681d
|
|
| BLAKE2b-256 |
bfda5bc5135de637ba2c3f5b4a563efd9ff8fe7f6870be229a666f5274ec9e68
|