aion-core 0.8.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.
- aion_core-0.8.0/LICENSE +21 -0
- aion_core-0.8.0/MANIFEST.in +5 -0
- aion_core-0.8.0/PKG-INFO +220 -0
- aion_core-0.8.0/README.md +195 -0
- aion_core-0.8.0/SECURITY.md +32 -0
- aion_core-0.8.0/docs/ARCHITECTURE.md +60 -0
- aion_core-0.8.0/docs/DEMO_VIDEO_SCRIPT.md +56 -0
- aion_core-0.8.0/docs/FILESYSTEM_MCP_EXAMPLE.md +48 -0
- aion_core-0.8.0/docs/GITHUB_LAUNCH.md +59 -0
- aion_core-0.8.0/docs/GUARD.md +54 -0
- aion_core-0.8.0/docs/INSTALL.md +32 -0
- aion_core-0.8.0/docs/LAUNCH_CHECKLIST.md +56 -0
- aion_core-0.8.0/docs/LAUNCH_POST.md +43 -0
- aion_core-0.8.0/docs/OUTREACH_TARGETS.md +37 -0
- aion_core-0.8.0/docs/PYPI_RELEASE.md +65 -0
- aion_core-0.8.0/docs/REAL_MCP_INTEGRATION.md +51 -0
- aion_core-0.8.0/docs/RECEIPTS.md +80 -0
- aion_core-0.8.0/docs/REPO_STRUCTURE.md +43 -0
- aion_core-0.8.0/docs/ROADMAP.md +40 -0
- aion_core-0.8.0/docs/SCAN.md +50 -0
- aion_core-0.8.0/docs/STAGE5_CLOUD_ALIGNMENT.md +53 -0
- aion_core-0.8.0/docs/STAGE6_COMPLETION_REPORT.md +61 -0
- aion_core-0.8.0/docs/STAGE6_DEMO.md +41 -0
- aion_core-0.8.0/docs/STAGE8_CONTROL_PANEL.md +44 -0
- aion_core-0.8.0/docs/STAGE_STATUS.md +19 -0
- aion_core-0.8.0/docs/TEAM_POLICY_APPROVALS.md +41 -0
- aion_core-0.8.0/docs/USE_CASES.md +48 -0
- aion_core-0.8.0/docs/VERIFICATION.md +87 -0
- aion_core-0.8.0/docs/WEBSITE_COPY.md +32 -0
- aion_core-0.8.0/examples/actions/destructive_shell_args.json +3 -0
- aion_core-0.8.0/examples/actions/production_delete_args.json +4 -0
- aion_core-0.8.0/examples/actions/safe_read_args.json +3 -0
- aion_core-0.8.0/examples/attacks/destructive_shell.json +11 -0
- aion_core-0.8.0/examples/attacks/safe_read.json +11 -0
- aion_core-0.8.0/examples/attacks/secret_exfiltration.json +12 -0
- aion_core-0.8.0/examples/demo_mcp_server.py +76 -0
- aion_core-0.8.0/examples/integrations/claude_desktop_filesystem_aion.json +22 -0
- aion_core-0.8.0/examples/integrations/local_python_filesystem_aion.json +27 -0
- aion_core-0.8.0/examples/integrations/unprotected_filesystem_mcp.json +12 -0
- aion_core-0.8.0/examples/policies/stage6-default.json +50 -0
- aion_core-0.8.0/examples/team_policies/stage7-default.json +40 -0
- aion_core-0.8.0/pyproject.toml +42 -0
- aion_core-0.8.0/setup.cfg +4 -0
- aion_core-0.8.0/src/aion_core/__init__.py +19 -0
- aion_core-0.8.0/src/aion_core/__main__.py +4 -0
- aion_core-0.8.0/src/aion_core/cli.py +93 -0
- aion_core-0.8.0/src/aion_core/demo.py +404 -0
- aion_core-0.8.0/src/aion_core/firewall.py +204 -0
- aion_core-0.8.0/src/aion_core/guard.py +63 -0
- aion_core-0.8.0/src/aion_core/guard_cli.py +96 -0
- aion_core-0.8.0/src/aion_core/policy.py +164 -0
- aion_core-0.8.0/src/aion_core/receipt_cli.py +53 -0
- aion_core-0.8.0/src/aion_core/receipts.py +154 -0
- aion_core-0.8.0/src/aion_core/scan.py +182 -0
- aion_core-0.8.0/src/aion_core/scan_cli.py +45 -0
- aion_core-0.8.0/src/aion_core/team_cli.py +106 -0
- aion_core-0.8.0/src/aion_core/team_policy.py +301 -0
- aion_core-0.8.0/src/aion_core.egg-info/PKG-INFO +220 -0
- aion_core-0.8.0/src/aion_core.egg-info/SOURCES.txt +67 -0
- aion_core-0.8.0/src/aion_core.egg-info/dependency_links.txt +1 -0
- aion_core-0.8.0/src/aion_core.egg-info/entry_points.txt +8 -0
- aion_core-0.8.0/src/aion_core.egg-info/top_level.txt +1 -0
- aion_core-0.8.0/tests/test_demo.py +25 -0
- aion_core-0.8.0/tests/test_firewall.py +119 -0
- aion_core-0.8.0/tests/test_guard.py +91 -0
- aion_core-0.8.0/tests/test_policy.py +87 -0
- aion_core-0.8.0/tests/test_receipts.py +97 -0
- aion_core-0.8.0/tests/test_scan.py +93 -0
- aion_core-0.8.0/tests/test_team_policy.py +118 -0
aion_core-0.8.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 AION Protocol
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
aion_core-0.8.0/PKG-INFO
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aion-core
|
|
3
|
+
Version: 0.8.0
|
|
4
|
+
Summary: AION Core runtime security layer for AI agent tool-call control, receipts, scanning, and approvals.
|
|
5
|
+
Author: Sourabh Ranjan Sahoo
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://sourabh1845.github.io/aion-core/
|
|
8
|
+
Project-URL: Repository, https://github.com/Sourabh1845/aion-core
|
|
9
|
+
Project-URL: Issues, https://github.com/Sourabh1845/aion-core/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/Sourabh1845/aion-core/tree/main/docs
|
|
11
|
+
Keywords: ai-agents,mcp,firewall,security,policy
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Topic :: Security
|
|
20
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Dynamic: license-file
|
|
25
|
+
|
|
26
|
+
# AION Core
|
|
27
|
+
|
|
28
|
+
Runtime action control, receipt, and firewall layer for AI agents.
|
|
29
|
+
|
|
30
|
+
AION Core contains the open-source infrastructure pieces behind AION: Guard, Receipts, Scan, Team Policy, and the MCP Firewall.
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
AI Agent -> AION Guard / MCP Firewall -> Tool/API/System
|
|
34
|
+
|
|
|
35
|
+
+-> verified JSONL receipt log
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## One-Command Demo
|
|
39
|
+
|
|
40
|
+
From the repo root:
|
|
41
|
+
|
|
42
|
+
```powershell
|
|
43
|
+
$env:PYTHONPATH='src'
|
|
44
|
+
python -m aion_core.demo
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
After local install or PyPI install:
|
|
48
|
+
|
|
49
|
+
```powershell
|
|
50
|
+
python -m pip install aion-core
|
|
51
|
+
aion-demo
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
For editable development installs:
|
|
55
|
+
|
|
56
|
+
```powershell
|
|
57
|
+
python -m pip install -e .
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Expected result:
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
[PASS] scan detected unprotected MCP server
|
|
64
|
+
[PASS] guard blocked generic shell action
|
|
65
|
+
[PASS] guard allowed generic safe read
|
|
66
|
+
[PASS] team policy required approval
|
|
67
|
+
[PASS] blocked destructive shell command
|
|
68
|
+
[PASS] blocked secret exfiltration
|
|
69
|
+
[PASS] allowed safe read
|
|
70
|
+
Receipts written to: aion-demo-output/receipts.jsonl
|
|
71
|
+
Approvals written to: aion-demo-output/approvals.jsonl
|
|
72
|
+
Receipt verification: PASS (6 receipt(s), hash-verified)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
This proves the infrastructure wedge:
|
|
76
|
+
|
|
77
|
+
- generic Guard actions can be allowed or blocked
|
|
78
|
+
- dangerous shell action is blocked before reaching the tool
|
|
79
|
+
- secret exfiltration attempt is blocked before reaching the tool
|
|
80
|
+
- safe file-read style action is allowed
|
|
81
|
+
- approval-required team actions create approval records
|
|
82
|
+
- every decision gets a receipt
|
|
83
|
+
|
|
84
|
+
## Run Guard
|
|
85
|
+
|
|
86
|
+
Check a generic action:
|
|
87
|
+
|
|
88
|
+
```powershell
|
|
89
|
+
$env:PYTHONPATH='src'
|
|
90
|
+
python -m aion_core.guard_cli check --policy examples\policies\stage6-default.json --receipt-log receipts\guard.jsonl --action-type shell.command --tool shell --arguments-file examples\actions\destructive_shell_args.json --agent-id demo --owner local
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Run The Firewall
|
|
94
|
+
|
|
95
|
+
Run AION in front of any stdio MCP server:
|
|
96
|
+
|
|
97
|
+
```powershell
|
|
98
|
+
aion-mcp-firewall --policy examples/policies/stage6-default.json --receipt-log receipts/aion.jsonl -- python path/to/mcp_server.py
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
For local development without installing:
|
|
102
|
+
|
|
103
|
+
```powershell
|
|
104
|
+
$env:PYTHONPATH='src'
|
|
105
|
+
python -m aion_core.cli --policy examples/policies/stage6-default.json --receipt-log receipts/aion.jsonl -- python path/to/mcp_server.py
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Manual Attack Demo
|
|
109
|
+
|
|
110
|
+
Blocked dangerous command:
|
|
111
|
+
|
|
112
|
+
```powershell
|
|
113
|
+
$env:PYTHONPATH='src'
|
|
114
|
+
Get-Content examples/attacks/destructive_shell.json | python -m aion_core.cli --policy examples/policies/stage6-default.json --receipt-log receipts/demo.jsonl -- python examples/demo_mcp_server.py
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Allowed safe call:
|
|
118
|
+
|
|
119
|
+
```powershell
|
|
120
|
+
$env:PYTHONPATH='src'
|
|
121
|
+
Get-Content examples/attacks/safe_read.json | python -m aion_core.cli --policy examples/policies/stage6-default.json --receipt-log receipts/demo.jsonl -- python examples/demo_mcp_server.py
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Policy Shape
|
|
125
|
+
|
|
126
|
+
Policies are JSON so the MVP has zero runtime dependencies.
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"default_action": "allow",
|
|
131
|
+
"rules": [
|
|
132
|
+
{
|
|
133
|
+
"id": "block-shell-delete",
|
|
134
|
+
"match": {
|
|
135
|
+
"tool": ["shell", "run_command"],
|
|
136
|
+
"argument_contains": ["rm -rf", "Remove-Item", "del /s"]
|
|
137
|
+
},
|
|
138
|
+
"action": "block",
|
|
139
|
+
"reason": "Destructive shell command patterns require explicit approval."
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Supported rule matchers:
|
|
146
|
+
|
|
147
|
+
- `tool`: exact tool names or `*` wildcards.
|
|
148
|
+
- `argument_contains`: risky strings searched inside serialized arguments.
|
|
149
|
+
- `argument_regex`: risky regular expressions searched inside serialized arguments.
|
|
150
|
+
- `owner`: optional agent owner/team identity.
|
|
151
|
+
|
|
152
|
+
Supported actions:
|
|
153
|
+
|
|
154
|
+
- `allow`
|
|
155
|
+
- `block`
|
|
156
|
+
|
|
157
|
+
## Receipt Example
|
|
158
|
+
|
|
159
|
+
Every MCP `tools/call` decision is logged as JSONL:
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
{"decision":"block","tool":"shell","rule_id":"block-shell-delete","reason":"Destructive shell command patterns require explicit approval."}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Development
|
|
166
|
+
|
|
167
|
+
Run tests:
|
|
168
|
+
|
|
169
|
+
```powershell
|
|
170
|
+
$env:PYTHONPATH='src'
|
|
171
|
+
python -m unittest discover -s tests
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Useful docs:
|
|
175
|
+
|
|
176
|
+
- [Stage status](docs/STAGE_STATUS.md)
|
|
177
|
+
- [AION Guard](docs/GUARD.md)
|
|
178
|
+
- [AION Receipts](docs/RECEIPTS.md)
|
|
179
|
+
- [AION Scan](docs/SCAN.md)
|
|
180
|
+
- [Team policy and approvals](docs/TEAM_POLICY_APPROVALS.md)
|
|
181
|
+
- [Stage 5 Cloud alignment](docs/STAGE5_CLOUD_ALIGNMENT.md)
|
|
182
|
+
- [AION Cloud control panel](docs/STAGE8_CONTROL_PANEL.md)
|
|
183
|
+
- [Stage 6 completion report](docs/STAGE6_COMPLETION_REPORT.md)
|
|
184
|
+
- [Repo structure](docs/REPO_STRUCTURE.md)
|
|
185
|
+
- [Stage 6 demo guide](docs/STAGE6_DEMO.md)
|
|
186
|
+
- [Install](docs/INSTALL.md)
|
|
187
|
+
- [Real MCP integration](docs/REAL_MCP_INTEGRATION.md)
|
|
188
|
+
- [Filesystem MCP example](docs/FILESYSTEM_MCP_EXAMPLE.md)
|
|
189
|
+
- [Architecture](docs/ARCHITECTURE.md)
|
|
190
|
+
- [Launch checklist](docs/LAUNCH_CHECKLIST.md)
|
|
191
|
+
- [GitHub launch](docs/GITHUB_LAUNCH.md)
|
|
192
|
+
- [PyPI release](docs/PYPI_RELEASE.md)
|
|
193
|
+
- [Website copy](docs/WEBSITE_COPY.md)
|
|
194
|
+
- [Verification](docs/VERIFICATION.md)
|
|
195
|
+
- [Demo video script](docs/DEMO_VIDEO_SCRIPT.md)
|
|
196
|
+
- [Launch post draft](docs/LAUNCH_POST.md)
|
|
197
|
+
- [Roadmap](docs/ROADMAP.md)
|
|
198
|
+
|
|
199
|
+
## Current Scope
|
|
200
|
+
|
|
201
|
+
Current core scope:
|
|
202
|
+
|
|
203
|
+
- generic Guard action checks
|
|
204
|
+
- MCP config and policy scanning
|
|
205
|
+
- stdio MCP firewall proxy
|
|
206
|
+
- runtime policy checks for `tools/call`
|
|
207
|
+
- MCP-compatible JSON-RPC block responses
|
|
208
|
+
- hash-verified JSONL audit receipts
|
|
209
|
+
- team approval-required policy decisions
|
|
210
|
+
- AION Cloud control panel summary and pending approval views
|
|
211
|
+
- dependency-free Python core
|
|
212
|
+
|
|
213
|
+
Next infrastructure layers:
|
|
214
|
+
|
|
215
|
+
- signed receipts
|
|
216
|
+
- agent identity
|
|
217
|
+
- cloud receipt vault
|
|
218
|
+
- tool risk registry
|
|
219
|
+
- real Slack/webhook approval delivery
|
|
220
|
+
- compliance exports
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# AION Core
|
|
2
|
+
|
|
3
|
+
Runtime action control, receipt, and firewall layer for AI agents.
|
|
4
|
+
|
|
5
|
+
AION Core contains the open-source infrastructure pieces behind AION: Guard, Receipts, Scan, Team Policy, and the MCP Firewall.
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
AI Agent -> AION Guard / MCP Firewall -> Tool/API/System
|
|
9
|
+
|
|
|
10
|
+
+-> verified JSONL receipt log
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## One-Command Demo
|
|
14
|
+
|
|
15
|
+
From the repo root:
|
|
16
|
+
|
|
17
|
+
```powershell
|
|
18
|
+
$env:PYTHONPATH='src'
|
|
19
|
+
python -m aion_core.demo
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
After local install or PyPI install:
|
|
23
|
+
|
|
24
|
+
```powershell
|
|
25
|
+
python -m pip install aion-core
|
|
26
|
+
aion-demo
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
For editable development installs:
|
|
30
|
+
|
|
31
|
+
```powershell
|
|
32
|
+
python -m pip install -e .
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Expected result:
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
[PASS] scan detected unprotected MCP server
|
|
39
|
+
[PASS] guard blocked generic shell action
|
|
40
|
+
[PASS] guard allowed generic safe read
|
|
41
|
+
[PASS] team policy required approval
|
|
42
|
+
[PASS] blocked destructive shell command
|
|
43
|
+
[PASS] blocked secret exfiltration
|
|
44
|
+
[PASS] allowed safe read
|
|
45
|
+
Receipts written to: aion-demo-output/receipts.jsonl
|
|
46
|
+
Approvals written to: aion-demo-output/approvals.jsonl
|
|
47
|
+
Receipt verification: PASS (6 receipt(s), hash-verified)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
This proves the infrastructure wedge:
|
|
51
|
+
|
|
52
|
+
- generic Guard actions can be allowed or blocked
|
|
53
|
+
- dangerous shell action is blocked before reaching the tool
|
|
54
|
+
- secret exfiltration attempt is blocked before reaching the tool
|
|
55
|
+
- safe file-read style action is allowed
|
|
56
|
+
- approval-required team actions create approval records
|
|
57
|
+
- every decision gets a receipt
|
|
58
|
+
|
|
59
|
+
## Run Guard
|
|
60
|
+
|
|
61
|
+
Check a generic action:
|
|
62
|
+
|
|
63
|
+
```powershell
|
|
64
|
+
$env:PYTHONPATH='src'
|
|
65
|
+
python -m aion_core.guard_cli check --policy examples\policies\stage6-default.json --receipt-log receipts\guard.jsonl --action-type shell.command --tool shell --arguments-file examples\actions\destructive_shell_args.json --agent-id demo --owner local
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Run The Firewall
|
|
69
|
+
|
|
70
|
+
Run AION in front of any stdio MCP server:
|
|
71
|
+
|
|
72
|
+
```powershell
|
|
73
|
+
aion-mcp-firewall --policy examples/policies/stage6-default.json --receipt-log receipts/aion.jsonl -- python path/to/mcp_server.py
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
For local development without installing:
|
|
77
|
+
|
|
78
|
+
```powershell
|
|
79
|
+
$env:PYTHONPATH='src'
|
|
80
|
+
python -m aion_core.cli --policy examples/policies/stage6-default.json --receipt-log receipts/aion.jsonl -- python path/to/mcp_server.py
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Manual Attack Demo
|
|
84
|
+
|
|
85
|
+
Blocked dangerous command:
|
|
86
|
+
|
|
87
|
+
```powershell
|
|
88
|
+
$env:PYTHONPATH='src'
|
|
89
|
+
Get-Content examples/attacks/destructive_shell.json | python -m aion_core.cli --policy examples/policies/stage6-default.json --receipt-log receipts/demo.jsonl -- python examples/demo_mcp_server.py
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Allowed safe call:
|
|
93
|
+
|
|
94
|
+
```powershell
|
|
95
|
+
$env:PYTHONPATH='src'
|
|
96
|
+
Get-Content examples/attacks/safe_read.json | python -m aion_core.cli --policy examples/policies/stage6-default.json --receipt-log receipts/demo.jsonl -- python examples/demo_mcp_server.py
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Policy Shape
|
|
100
|
+
|
|
101
|
+
Policies are JSON so the MVP has zero runtime dependencies.
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"default_action": "allow",
|
|
106
|
+
"rules": [
|
|
107
|
+
{
|
|
108
|
+
"id": "block-shell-delete",
|
|
109
|
+
"match": {
|
|
110
|
+
"tool": ["shell", "run_command"],
|
|
111
|
+
"argument_contains": ["rm -rf", "Remove-Item", "del /s"]
|
|
112
|
+
},
|
|
113
|
+
"action": "block",
|
|
114
|
+
"reason": "Destructive shell command patterns require explicit approval."
|
|
115
|
+
}
|
|
116
|
+
]
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Supported rule matchers:
|
|
121
|
+
|
|
122
|
+
- `tool`: exact tool names or `*` wildcards.
|
|
123
|
+
- `argument_contains`: risky strings searched inside serialized arguments.
|
|
124
|
+
- `argument_regex`: risky regular expressions searched inside serialized arguments.
|
|
125
|
+
- `owner`: optional agent owner/team identity.
|
|
126
|
+
|
|
127
|
+
Supported actions:
|
|
128
|
+
|
|
129
|
+
- `allow`
|
|
130
|
+
- `block`
|
|
131
|
+
|
|
132
|
+
## Receipt Example
|
|
133
|
+
|
|
134
|
+
Every MCP `tools/call` decision is logged as JSONL:
|
|
135
|
+
|
|
136
|
+
```json
|
|
137
|
+
{"decision":"block","tool":"shell","rule_id":"block-shell-delete","reason":"Destructive shell command patterns require explicit approval."}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Development
|
|
141
|
+
|
|
142
|
+
Run tests:
|
|
143
|
+
|
|
144
|
+
```powershell
|
|
145
|
+
$env:PYTHONPATH='src'
|
|
146
|
+
python -m unittest discover -s tests
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Useful docs:
|
|
150
|
+
|
|
151
|
+
- [Stage status](docs/STAGE_STATUS.md)
|
|
152
|
+
- [AION Guard](docs/GUARD.md)
|
|
153
|
+
- [AION Receipts](docs/RECEIPTS.md)
|
|
154
|
+
- [AION Scan](docs/SCAN.md)
|
|
155
|
+
- [Team policy and approvals](docs/TEAM_POLICY_APPROVALS.md)
|
|
156
|
+
- [Stage 5 Cloud alignment](docs/STAGE5_CLOUD_ALIGNMENT.md)
|
|
157
|
+
- [AION Cloud control panel](docs/STAGE8_CONTROL_PANEL.md)
|
|
158
|
+
- [Stage 6 completion report](docs/STAGE6_COMPLETION_REPORT.md)
|
|
159
|
+
- [Repo structure](docs/REPO_STRUCTURE.md)
|
|
160
|
+
- [Stage 6 demo guide](docs/STAGE6_DEMO.md)
|
|
161
|
+
- [Install](docs/INSTALL.md)
|
|
162
|
+
- [Real MCP integration](docs/REAL_MCP_INTEGRATION.md)
|
|
163
|
+
- [Filesystem MCP example](docs/FILESYSTEM_MCP_EXAMPLE.md)
|
|
164
|
+
- [Architecture](docs/ARCHITECTURE.md)
|
|
165
|
+
- [Launch checklist](docs/LAUNCH_CHECKLIST.md)
|
|
166
|
+
- [GitHub launch](docs/GITHUB_LAUNCH.md)
|
|
167
|
+
- [PyPI release](docs/PYPI_RELEASE.md)
|
|
168
|
+
- [Website copy](docs/WEBSITE_COPY.md)
|
|
169
|
+
- [Verification](docs/VERIFICATION.md)
|
|
170
|
+
- [Demo video script](docs/DEMO_VIDEO_SCRIPT.md)
|
|
171
|
+
- [Launch post draft](docs/LAUNCH_POST.md)
|
|
172
|
+
- [Roadmap](docs/ROADMAP.md)
|
|
173
|
+
|
|
174
|
+
## Current Scope
|
|
175
|
+
|
|
176
|
+
Current core scope:
|
|
177
|
+
|
|
178
|
+
- generic Guard action checks
|
|
179
|
+
- MCP config and policy scanning
|
|
180
|
+
- stdio MCP firewall proxy
|
|
181
|
+
- runtime policy checks for `tools/call`
|
|
182
|
+
- MCP-compatible JSON-RPC block responses
|
|
183
|
+
- hash-verified JSONL audit receipts
|
|
184
|
+
- team approval-required policy decisions
|
|
185
|
+
- AION Cloud control panel summary and pending approval views
|
|
186
|
+
- dependency-free Python core
|
|
187
|
+
|
|
188
|
+
Next infrastructure layers:
|
|
189
|
+
|
|
190
|
+
- signed receipts
|
|
191
|
+
- agent identity
|
|
192
|
+
- cloud receipt vault
|
|
193
|
+
- tool risk registry
|
|
194
|
+
- real Slack/webhook approval delivery
|
|
195
|
+
- compliance exports
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
AION Stage 6 is an early MCP firewall MVP. It should be treated as experimental until hardened.
|
|
4
|
+
|
|
5
|
+
## Current Security Scope
|
|
6
|
+
|
|
7
|
+
AION can:
|
|
8
|
+
|
|
9
|
+
- inspect MCP `tools/call` messages
|
|
10
|
+
- allow or block calls using JSON policy
|
|
11
|
+
- log receipts for decisions
|
|
12
|
+
- return MCP-compatible block errors
|
|
13
|
+
|
|
14
|
+
AION does not yet provide:
|
|
15
|
+
|
|
16
|
+
- cryptographic receipt signing
|
|
17
|
+
- tamper-proof storage
|
|
18
|
+
- authentication
|
|
19
|
+
- network isolation
|
|
20
|
+
- enterprise policy management
|
|
21
|
+
|
|
22
|
+
## Reporting Issues
|
|
23
|
+
|
|
24
|
+
Please open a private security report or contact the maintainers before publishing exploit details.
|
|
25
|
+
|
|
26
|
+
Useful details:
|
|
27
|
+
|
|
28
|
+
- policy file
|
|
29
|
+
- MCP request
|
|
30
|
+
- expected decision
|
|
31
|
+
- actual decision
|
|
32
|
+
- receipt output
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
AION Stage 6 is a stdio MCP firewall proxy.
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
stdin from agent
|
|
7
|
+
|
|
|
8
|
+
v
|
|
9
|
+
AION firewall
|
|
10
|
+
|
|
|
11
|
+
|-- parse JSON-RPC
|
|
12
|
+
|-- inspect tools/call
|
|
13
|
+
|-- evaluate policy
|
|
14
|
+
|-- write receipt
|
|
15
|
+
|
|
|
16
|
+
+-- block response to agent
|
|
17
|
+
|
|
|
18
|
+
v
|
|
19
|
+
upstream MCP server
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Modules
|
|
23
|
+
|
|
24
|
+
- `aion_core.cli`: command-line entry point.
|
|
25
|
+
- `aion_core.firewall`: stdio proxy and MCP request inspection.
|
|
26
|
+
- `aion_core.policy`: dependency-free JSON policy engine.
|
|
27
|
+
- `aion_core.receipts`: JSONL receipt writer.
|
|
28
|
+
- `aion_core.demo`: one-command public demo runner.
|
|
29
|
+
|
|
30
|
+
## Policy Decision Flow
|
|
31
|
+
|
|
32
|
+
1. Parse one JSON-RPC line.
|
|
33
|
+
2. Ignore non-`tools/call` messages.
|
|
34
|
+
3. Extract tool name and arguments.
|
|
35
|
+
4. Evaluate rules in order.
|
|
36
|
+
5. Return first matching allow/block rule.
|
|
37
|
+
6. Fall back to `default_action`.
|
|
38
|
+
7. Write receipt with decision, rule, tool, owner, agent id, and argument fingerprint.
|
|
39
|
+
|
|
40
|
+
## Block Response
|
|
41
|
+
|
|
42
|
+
Blocked calls return a JSON-RPC error:
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"jsonrpc": "2.0",
|
|
47
|
+
"id": 1,
|
|
48
|
+
"error": {
|
|
49
|
+
"code": -32090,
|
|
50
|
+
"message": "AION firewall blocked this MCP tool call."
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Design Constraints
|
|
56
|
+
|
|
57
|
+
- Keep the MVP dependency-free.
|
|
58
|
+
- Keep policies readable as JSON.
|
|
59
|
+
- Keep receipts append-only JSONL.
|
|
60
|
+
- Keep the proxy generic so any stdio MCP server can sit behind it.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# 60-90 Second Demo Video Script
|
|
2
|
+
|
|
3
|
+
## Opening
|
|
4
|
+
|
|
5
|
+
"This is AION Core, a runtime security layer for AI agent actions."
|
|
6
|
+
|
|
7
|
+
"AI agents are starting to call tools that can touch files, shells, APIs, and internal systems. AION sits between the agent and the action."
|
|
8
|
+
|
|
9
|
+
## Show Command
|
|
10
|
+
|
|
11
|
+
```powershell
|
|
12
|
+
$env:PYTHONPATH='src'
|
|
13
|
+
python -m aion_core.demo
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Show Result
|
|
17
|
+
|
|
18
|
+
Point to:
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
[PASS] blocked destructive shell command
|
|
22
|
+
[PASS] blocked secret exfiltration
|
|
23
|
+
[PASS] allowed safe read
|
|
24
|
+
[PASS] scan detected unprotected MCP server
|
|
25
|
+
[PASS] team policy required approval
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Say:
|
|
29
|
+
|
|
30
|
+
"AION Scan detects unprotected MCP servers before runtime."
|
|
31
|
+
|
|
32
|
+
"AION Guard blocks generic risky actions."
|
|
33
|
+
|
|
34
|
+
"AION Team Policy turns production mutations into approval requests."
|
|
35
|
+
|
|
36
|
+
"The agent attempted a destructive shell command. AION blocked it before it reached the tool."
|
|
37
|
+
|
|
38
|
+
"The agent attempted to send a password-like value out through an HTTP tool. AION blocked that too."
|
|
39
|
+
|
|
40
|
+
"A safe read-style call was allowed."
|
|
41
|
+
|
|
42
|
+
## Show Receipts
|
|
43
|
+
|
|
44
|
+
Open:
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
aion-demo-output/receipts.jsonl
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Say:
|
|
51
|
+
|
|
52
|
+
"Every decision creates a hash-verified receipt with the agent id, owner, tool, decision, rule id, reason, and timestamp."
|
|
53
|
+
|
|
54
|
+
## Closing
|
|
55
|
+
|
|
56
|
+
"AION Core is the open-source infrastructure layer. AION Cloud will become the hosted receipt vault, team policy dashboard, and compliance control plane."
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Filesystem MCP Example
|
|
2
|
+
|
|
3
|
+
This example shows how AION can wrap a real filesystem MCP server.
|
|
4
|
+
|
|
5
|
+
The upstream server is `@modelcontextprotocol/server-filesystem`, a Node.js MCP server that exposes filesystem tools such as reading, writing, editing, moving, and listing files. Tool names can vary across package versions, so keep your AION policy aligned with the exact server version you use.
|
|
6
|
+
|
|
7
|
+
## Installed AION Command
|
|
8
|
+
|
|
9
|
+
After installing AION Core locally:
|
|
10
|
+
|
|
11
|
+
```powershell
|
|
12
|
+
aion-mcp-firewall --policy examples/policies/stage6-default.json --receipt-log receipts/filesystem.jsonl --agent-id local-agent --owner local-dev -- npx -y @modelcontextprotocol/server-filesystem "C:\Users\SOURABH RANJAN"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Source Checkout Command
|
|
16
|
+
|
|
17
|
+
Without installing:
|
|
18
|
+
|
|
19
|
+
```powershell
|
|
20
|
+
$env:PYTHONPATH='src'
|
|
21
|
+
python -m aion_core.cli --policy examples/policies/stage6-default.json --receipt-log receipts/filesystem.jsonl --agent-id local-agent --owner local-dev -- npx -y @modelcontextprotocol/server-filesystem "C:\Users\SOURABH RANJAN"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Client Config Templates
|
|
25
|
+
|
|
26
|
+
See:
|
|
27
|
+
|
|
28
|
+
- `examples/integrations/claude_desktop_filesystem_aion.json`
|
|
29
|
+
- `examples/integrations/local_python_filesystem_aion.json`
|
|
30
|
+
|
|
31
|
+
## Policy Notes
|
|
32
|
+
|
|
33
|
+
Filesystem MCP servers often expose powerful tools:
|
|
34
|
+
|
|
35
|
+
- read files
|
|
36
|
+
- write files
|
|
37
|
+
- edit files
|
|
38
|
+
- move files
|
|
39
|
+
- list directories
|
|
40
|
+
- inspect metadata
|
|
41
|
+
|
|
42
|
+
For early testing, AION should at minimum block:
|
|
43
|
+
|
|
44
|
+
- destructive shell-like patterns
|
|
45
|
+
- secret exfiltration patterns
|
|
46
|
+
- risky write/edit/move/delete operations in sensitive directories
|
|
47
|
+
|
|
48
|
+
Stage 6 currently proves the runtime firewall path. Stage 6.2 should add deeper tool-aware policies for specific MCP servers.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# GitHub Launch Checklist
|
|
2
|
+
|
|
3
|
+
Recommended repository: `Sourabh1845/aion-core`
|
|
4
|
+
|
|
5
|
+
## Repository Setup
|
|
6
|
+
|
|
7
|
+
```powershell
|
|
8
|
+
cd C:\Users\SOURABH RANJAN\aion-core
|
|
9
|
+
git init
|
|
10
|
+
git branch -M main
|
|
11
|
+
git add .
|
|
12
|
+
git commit -m "Launch AION Core 0.8.0"
|
|
13
|
+
git remote add origin https://github.com/Sourabh1845/aion-core.git
|
|
14
|
+
git push -u origin main
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## GitHub Settings
|
|
18
|
+
|
|
19
|
+
- Add description:
|
|
20
|
+
- `Runtime security layer for AI agents: MCP firewall, Guard, Scan, receipts, team approvals.`
|
|
21
|
+
- Add topics:
|
|
22
|
+
- `ai-agents`
|
|
23
|
+
- `mcp`
|
|
24
|
+
- `security`
|
|
25
|
+
- `firewall`
|
|
26
|
+
- `agent-security`
|
|
27
|
+
- `audit-logs`
|
|
28
|
+
- Enable GitHub Pages:
|
|
29
|
+
- Source: `Deploy from a branch`
|
|
30
|
+
- Branch: `main`
|
|
31
|
+
- Folder: `/docs`
|
|
32
|
+
- Create release:
|
|
33
|
+
- Tag: `v0.8.0`
|
|
34
|
+
- Title: `AION Core 0.8.0`
|
|
35
|
+
|
|
36
|
+
## Release Notes
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
AION Core 0.8.0 is the first public infrastructure MVP.
|
|
40
|
+
|
|
41
|
+
Includes:
|
|
42
|
+
- AION Guard runtime action checks
|
|
43
|
+
- AION Receipts hash-verified audit logs
|
|
44
|
+
- AION Scan for MCP configs and weak policies
|
|
45
|
+
- MCP Firewall stdio proxy
|
|
46
|
+
- Team policy approval-required decisions
|
|
47
|
+
- AION Cloud receipt/control-panel alignment
|
|
48
|
+
- One-command demo: aion-demo
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Smoke Test After Push
|
|
52
|
+
|
|
53
|
+
```powershell
|
|
54
|
+
git clone https://github.com/Sourabh1845/aion-core.git
|
|
55
|
+
cd aion-core
|
|
56
|
+
$env:PYTHONPATH='src'
|
|
57
|
+
python -m unittest discover -s tests
|
|
58
|
+
python -m aion_core.demo
|
|
59
|
+
```
|