halyn 2.1.0__tar.gz → 2.1.1__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.
- {halyn-2.1.0/src/halyn.egg-info → halyn-2.1.1}/PKG-INFO +7 -7
- {halyn-2.1.0 → halyn-2.1.1}/README.md +6 -6
- {halyn-2.1.0 → halyn-2.1.1}/pyproject.toml +1 -1
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/__init__.py +1 -1
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/llm.py +2 -2
- {halyn-2.1.0 → halyn-2.1.1/src/halyn.egg-info}/PKG-INFO +7 -7
- {halyn-2.1.0 → halyn-2.1.1}/LICENSE +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/setup.cfg +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/__main__.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/audit.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/auth.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/autonomy.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/cli.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/config.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/consent.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/control_plane.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/dashboard.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/discovery.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/drivers/__init__.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/drivers/browser.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/drivers/dds.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/drivers/docker.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/drivers/http_auto.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/drivers/mqtt.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/drivers/opcua.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/drivers/ros2.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/drivers/serial.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/drivers/socket_raw.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/drivers/ssh.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/drivers/unitree.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/drivers/websocket.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/engine.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/integrations/__init__.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/intent.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/mcp.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/mcp_serve.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/memory/__init__.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/memory/store.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/nrp_bridge.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/py.typed +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/sanitizer.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/security/__init__.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/security/audit_guard.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/security/ebpf_monitor.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/security/fs_watch.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/security/process_guard.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/security/proxy.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/server.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/shield.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/types.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn/watchdog.py +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn.egg-info/SOURCES.txt +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn.egg-info/dependency_links.txt +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn.egg-info/entry_points.txt +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn.egg-info/requires.txt +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/src/halyn.egg-info/top_level.txt +0 -0
- {halyn-2.1.0 → halyn-2.1.1}/tests/test_halyn.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: halyn
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.1
|
|
4
4
|
Summary: Halyn — The governance layer for AI agents. Every action intercepted. Every decision auditable.
|
|
5
5
|
Author-email: Elmadani SALKA <contact@halyn.dev>
|
|
6
6
|
License: BSL-1.1
|
|
@@ -52,12 +52,12 @@ Every action intercepted. Every decision auditable. The AI cannot bypass it.
|
|
|
52
52
|
|
|
53
53
|
## Why Halyn
|
|
54
54
|
|
|
55
|
-
AI agents — Claude, GPT, Gemini, local models — act on your machine. They read files, send emails, control browsers, call APIs. With no independent proof of what happened.
|
|
55
|
+
AI agents — Claude, GPT-4.1, Gemini 3.1, local models — act on your machine. They read files, send emails, control browsers, call APIs. With no independent proof of what happened.
|
|
56
56
|
|
|
57
57
|
**Halyn is the independent layer that sits between any AI agent and your system.**
|
|
58
58
|
|
|
59
59
|
```
|
|
60
|
-
Claude / GPT / Gemini / Ollama / Any agent
|
|
60
|
+
Claude / GPT-4.1 / Gemini 3.1 / Ollama / Any agent
|
|
61
61
|
│
|
|
62
62
|
▼
|
|
63
63
|
┌─────────────────────────────┐
|
|
@@ -125,7 +125,7 @@ print(result.allowed) # True
|
|
|
125
125
|
Halyn intercepts at three independent layers simultaneously:
|
|
126
126
|
|
|
127
127
|
### Layer 1 — API Proxy
|
|
128
|
-
All LLM API calls (Claude, GPT, Gemini) pass through a local proxy on `127.0.0.1`.
|
|
128
|
+
All LLM API calls (Claude, GPT-4.1, Gemini 3.1, etc.) pass through a local proxy on `127.0.0.1`.
|
|
129
129
|
Intent is read before transmission. Shield rules apply before the request reaches the provider.
|
|
130
130
|
Implemented via `iptables REDIRECT` — kernel-level, not a library hook.
|
|
131
131
|
|
|
@@ -161,9 +161,9 @@ Deployed via `/etc/opt/chrome/policies/managed/halyn.json` — the agent cannot
|
|
|
161
161
|
|
|
162
162
|
| Agent | Type | Integration |
|
|
163
163
|
|-------|------|-------------|
|
|
164
|
-
| Claude (Anthropic) | Cloud | Proxy + MCP |
|
|
165
|
-
| GPT-
|
|
166
|
-
| Gemini (Google) | Cloud | Proxy |
|
|
164
|
+
| Claude Sonnet 4.6 / Opus 4.6 (Anthropic) | Cloud | Proxy + MCP |
|
|
165
|
+
| GPT-4.1 / o3 (OpenAI) | Cloud | Proxy |
|
|
166
|
+
| Gemini 3.1 Pro / Flash (Google) | Cloud | Proxy |
|
|
167
167
|
| Ollama | Local | Direct |
|
|
168
168
|
| LM Studio | Local | Direct |
|
|
169
169
|
| Jan.ai | Local | Direct |
|
|
@@ -19,12 +19,12 @@ Every action intercepted. Every decision auditable. The AI cannot bypass it.
|
|
|
19
19
|
|
|
20
20
|
## Why Halyn
|
|
21
21
|
|
|
22
|
-
AI agents — Claude, GPT, Gemini, local models — act on your machine. They read files, send emails, control browsers, call APIs. With no independent proof of what happened.
|
|
22
|
+
AI agents — Claude, GPT-4.1, Gemini 3.1, local models — act on your machine. They read files, send emails, control browsers, call APIs. With no independent proof of what happened.
|
|
23
23
|
|
|
24
24
|
**Halyn is the independent layer that sits between any AI agent and your system.**
|
|
25
25
|
|
|
26
26
|
```
|
|
27
|
-
Claude / GPT / Gemini / Ollama / Any agent
|
|
27
|
+
Claude / GPT-4.1 / Gemini 3.1 / Ollama / Any agent
|
|
28
28
|
│
|
|
29
29
|
▼
|
|
30
30
|
┌─────────────────────────────┐
|
|
@@ -92,7 +92,7 @@ print(result.allowed) # True
|
|
|
92
92
|
Halyn intercepts at three independent layers simultaneously:
|
|
93
93
|
|
|
94
94
|
### Layer 1 — API Proxy
|
|
95
|
-
All LLM API calls (Claude, GPT, Gemini) pass through a local proxy on `127.0.0.1`.
|
|
95
|
+
All LLM API calls (Claude, GPT-4.1, Gemini 3.1, etc.) pass through a local proxy on `127.0.0.1`.
|
|
96
96
|
Intent is read before transmission. Shield rules apply before the request reaches the provider.
|
|
97
97
|
Implemented via `iptables REDIRECT` — kernel-level, not a library hook.
|
|
98
98
|
|
|
@@ -128,9 +128,9 @@ Deployed via `/etc/opt/chrome/policies/managed/halyn.json` — the agent cannot
|
|
|
128
128
|
|
|
129
129
|
| Agent | Type | Integration |
|
|
130
130
|
|-------|------|-------------|
|
|
131
|
-
| Claude (Anthropic) | Cloud | Proxy + MCP |
|
|
132
|
-
| GPT-
|
|
133
|
-
| Gemini (Google) | Cloud | Proxy |
|
|
131
|
+
| Claude Sonnet 4.6 / Opus 4.6 (Anthropic) | Cloud | Proxy + MCP |
|
|
132
|
+
| GPT-4.1 / o3 (OpenAI) | Cloud | Proxy |
|
|
133
|
+
| Gemini 3.1 Pro / Flash (Google) | Cloud | Proxy |
|
|
134
134
|
| Ollama | Local | Direct |
|
|
135
135
|
| LM Studio | Local | Direct |
|
|
136
136
|
| Jan.ai | Local | Direct |
|
|
@@ -39,7 +39,7 @@ class LLMConnector(ABC):
|
|
|
39
39
|
class ClaudeConnector(LLMConnector):
|
|
40
40
|
"""Anthropic Claude API."""
|
|
41
41
|
|
|
42
|
-
def __init__(self, api_key: str = "", model: str = "claude-sonnet-4-
|
|
42
|
+
def __init__(self, api_key: str = "", model: str = "claude-sonnet-4-6") -> None:
|
|
43
43
|
self.api_key = api_key or os.environ.get("ANTHROPIC_API_KEY", "")
|
|
44
44
|
self.model = model
|
|
45
45
|
self.endpoint = "https://api.anthropic.com/v1/messages"
|
|
@@ -70,7 +70,7 @@ class ClaudeConnector(LLMConnector):
|
|
|
70
70
|
class OpenAIConnector(LLMConnector):
|
|
71
71
|
"""OpenAI or any OpenAI-compatible API (vLLM, LiteLLM, etc.)."""
|
|
72
72
|
|
|
73
|
-
def __init__(self, api_key: str = "", model: str = "gpt-
|
|
73
|
+
def __init__(self, api_key: str = "", model: str = "gpt-4.1",
|
|
74
74
|
endpoint: str = "https://api.openai.com/v1") -> None:
|
|
75
75
|
self.api_key = api_key or os.environ.get("OPENAI_API_KEY", "")
|
|
76
76
|
self.model = model
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: halyn
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.1
|
|
4
4
|
Summary: Halyn — The governance layer for AI agents. Every action intercepted. Every decision auditable.
|
|
5
5
|
Author-email: Elmadani SALKA <contact@halyn.dev>
|
|
6
6
|
License: BSL-1.1
|
|
@@ -52,12 +52,12 @@ Every action intercepted. Every decision auditable. The AI cannot bypass it.
|
|
|
52
52
|
|
|
53
53
|
## Why Halyn
|
|
54
54
|
|
|
55
|
-
AI agents — Claude, GPT, Gemini, local models — act on your machine. They read files, send emails, control browsers, call APIs. With no independent proof of what happened.
|
|
55
|
+
AI agents — Claude, GPT-4.1, Gemini 3.1, local models — act on your machine. They read files, send emails, control browsers, call APIs. With no independent proof of what happened.
|
|
56
56
|
|
|
57
57
|
**Halyn is the independent layer that sits between any AI agent and your system.**
|
|
58
58
|
|
|
59
59
|
```
|
|
60
|
-
Claude / GPT / Gemini / Ollama / Any agent
|
|
60
|
+
Claude / GPT-4.1 / Gemini 3.1 / Ollama / Any agent
|
|
61
61
|
│
|
|
62
62
|
▼
|
|
63
63
|
┌─────────────────────────────┐
|
|
@@ -125,7 +125,7 @@ print(result.allowed) # True
|
|
|
125
125
|
Halyn intercepts at three independent layers simultaneously:
|
|
126
126
|
|
|
127
127
|
### Layer 1 — API Proxy
|
|
128
|
-
All LLM API calls (Claude, GPT, Gemini) pass through a local proxy on `127.0.0.1`.
|
|
128
|
+
All LLM API calls (Claude, GPT-4.1, Gemini 3.1, etc.) pass through a local proxy on `127.0.0.1`.
|
|
129
129
|
Intent is read before transmission. Shield rules apply before the request reaches the provider.
|
|
130
130
|
Implemented via `iptables REDIRECT` — kernel-level, not a library hook.
|
|
131
131
|
|
|
@@ -161,9 +161,9 @@ Deployed via `/etc/opt/chrome/policies/managed/halyn.json` — the agent cannot
|
|
|
161
161
|
|
|
162
162
|
| Agent | Type | Integration |
|
|
163
163
|
|-------|------|-------------|
|
|
164
|
-
| Claude (Anthropic) | Cloud | Proxy + MCP |
|
|
165
|
-
| GPT-
|
|
166
|
-
| Gemini (Google) | Cloud | Proxy |
|
|
164
|
+
| Claude Sonnet 4.6 / Opus 4.6 (Anthropic) | Cloud | Proxy + MCP |
|
|
165
|
+
| GPT-4.1 / o3 (OpenAI) | Cloud | Proxy |
|
|
166
|
+
| Gemini 3.1 Pro / Flash (Google) | Cloud | Proxy |
|
|
167
167
|
| Ollama | Local | Direct |
|
|
168
168
|
| LM Studio | Local | Direct |
|
|
169
169
|
| Jan.ai | Local | Direct |
|
|
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
|
|
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
|