open-edison 0.1.19__tar.gz → 0.1.26__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.
- {open_edison-0.1.19 → open_edison-0.1.26}/.gitignore +2 -1
- {open_edison-0.1.19 → open_edison-0.1.26}/PKG-INFO +60 -41
- {open_edison-0.1.19 → open_edison-0.1.26}/README.md +59 -40
- {open_edison-0.1.19 → open_edison-0.1.26}/config.json +1 -1
- {open_edison-0.1.19 → open_edison-0.1.26}/desktop_ext/README.md +3 -3
- {open_edison-0.1.19 → open_edison-0.1.26}/docs/deployment/local.md +1 -1
- {open_edison-0.1.19 → open_edison-0.1.26}/docs/development/contributing.md +2 -2
- {open_edison-0.1.19 → open_edison-0.1.26}/pyproject.toml +1 -1
- {open_edison-0.1.19 → open_edison-0.1.26}/src/cli.py +2 -1
- {open_edison-0.1.19 → open_edison-0.1.26}/src/config.py +63 -51
- open_edison-0.1.26/src/events.py +153 -0
- open_edison-0.1.26/src/middleware/data_access_tracker.py +370 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/src/middleware/session_tracking.py +93 -29
- open_edison-0.1.26/src/oauth_manager.py +281 -0
- open_edison-0.1.26/src/permissions.py +292 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/src/server.py +484 -132
- open_edison-0.1.26/src/single_user_mcp.py +448 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/src/telemetry.py +4 -40
- {open_edison-0.1.19 → open_edison-0.1.26}/tool_permissions.json +32 -126
- open_edison-0.1.19/src/middleware/data_access_tracker.py +0 -640
- open_edison-0.1.19/src/single_user_mcp.py +0 -386
- {open_edison-0.1.19 → open_edison-0.1.26}/LICENSE +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/docs/README.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/docs/architecture/single_user_design.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/docs/core/configuration.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/docs/core/project_structure.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/docs/core/proxy_usage.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/docs/deployment/docker.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/docs/development/development_guide.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/docs/development/testing.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/docs/quick-reference/api_reference.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/docs/quick-reference/config_quick_start.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/prompt_permissions.json +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/resource_permissions.json +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/src/__init__.py +0 -0
- {open_edison-0.1.19 → open_edison-0.1.26}/src/__main__.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: open-edison
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.26
|
4
4
|
Summary: Open-source MCP security, aggregation, and monitoring. Single-user, self-hosted MCP proxy.
|
5
5
|
Author-email: Hugo Berg <hugo@edison.watch>
|
6
6
|
License-File: LICENSE
|
@@ -25,24 +25,40 @@ Requires-Dist: pytest>=8.3.3; extra == 'dev'
|
|
25
25
|
Requires-Dist: ruff>=0.12.3; extra == 'dev'
|
26
26
|
Description-Content-Type: text/markdown
|
27
27
|
|
28
|
-
# OpenEdison
|
28
|
+
# OpenEdison 🔒⚡️
|
29
29
|
|
30
|
-
|
30
|
+
MCP security gateway that prevents data exfiltration—via direct access or tool chaining—with full monitoring for local single‑user deployments. Provides core functionality of <https://edison.watch> for local use.
|
31
|
+
|
32
|
+
<p align="center">
|
33
|
+
<img src="media/trifecta520p.gif" alt="Trifecta Security Risk Animation" width="520">
|
34
|
+
</p>
|
31
35
|
|
32
36
|
<div align="center">
|
33
|
-
<h2>📧
|
37
|
+
<h2>📧 To get visibility, control and exfiltration blocker into AI's interaction with your company software, systems of record, DBs, <a href="mailto:hello@edison.watch">Contact us</a> to discuss.</h2>
|
34
38
|
</div>
|
35
39
|
|
36
|
-
|
40
|
+
<p align="center">
|
41
|
+
<img alt="Project Version" src="https://img.shields.io/pypi/v/open-edison?label=version&color=blue">
|
42
|
+
<img alt="Python Version" src="https://img.shields.io/badge/python-3.12-blue?logo=python">
|
43
|
+
<img src="https://img.shields.io/badge/License-GPLv3-blue" alt="License">
|
44
|
+
|
45
|
+
|
46
|
+
</p>
|
47
|
+
|
48
|
+
---
|
49
|
+
|
50
|
+
|
51
|
+
## Features ✨
|
37
52
|
|
38
|
-
- **
|
39
|
-
- **
|
40
|
-
- **
|
41
|
-
- **
|
42
|
-
- **
|
43
|
-
- **
|
53
|
+
- 🛑 **Prevent Data Leaks** - Edison automatically blocks any data leaks, even if your AI gets jailbroken
|
54
|
+
- 👤 **Single-user MCP proxy** - No multi-user complexity, just a simple proxy for your MCP servers
|
55
|
+
- 🗂️ **JSON configuration** - Easy to configure and manage your MCP servers
|
56
|
+
- 🖥️ **Simple local frontend** - Track and monitor your MCP interactions, servers, and sessions.
|
57
|
+
- 📊 **Session tracking** - Track and monitor your MCP interactions
|
58
|
+
- 🔗 **Simple API** - REST API for managing MCP servers and proxying requests
|
59
|
+
- 🐳 **Docker support** - Run in a container for easy deployment
|
44
60
|
|
45
|
-
## Quick Start
|
61
|
+
## Quick Start 🚀
|
46
62
|
|
47
63
|
The fastest way to get started:
|
48
64
|
|
@@ -55,7 +71,7 @@ curl -fsSL https://raw.githubusercontent.com/Edison-Watch/open-edison/main/curl_
|
|
55
71
|
Run locally with uvx: `uvx open-edison --config-dir ~/edison-config`
|
56
72
|
|
57
73
|
<details>
|
58
|
-
<summary
|
74
|
+
<summary>⬇️ Install Node.js/npm (optional for MCP tools)</summary>
|
59
75
|
|
60
76
|
If you need `npx` (for Node-based MCP tools like `mcp-remote`), install Node.js as well:
|
61
77
|
|
@@ -75,6 +91,7 @@ If you need `npx` (for Node-based MCP tools like `mcp-remote`), install Node.js
|
|
75
91
|
- Node/npx: `winget install -e --id OpenJS.NodeJS`
|
76
92
|
|
77
93
|
After installation, ensure that `npx` is available on PATH.
|
94
|
+
</details>
|
78
95
|
|
79
96
|
<details>
|
80
97
|
<summary><img src="https://img.shields.io/badge/pypi-3775A9?style=for-the-badge&logo=pypi&logoColor=white" alt="PyPI"> Install from PyPI</summary>
|
@@ -109,18 +126,18 @@ There is a dockerfile for simple local setup.
|
|
109
126
|
|
110
127
|
```bash
|
111
128
|
# Single-line:
|
112
|
-
git clone https://github.com/
|
129
|
+
git clone https://github.com/Edison-Watch/open-edison.git && cd open-edison && make docker_run
|
113
130
|
|
114
131
|
# Or
|
115
132
|
# Clone repo
|
116
|
-
git clone https://github.com/
|
133
|
+
git clone https://github.com/Edison-Watch/open-edison.git
|
117
134
|
# Enter repo
|
118
135
|
cd open-edison
|
119
136
|
# Build and run
|
120
137
|
make docker_run
|
121
138
|
```
|
122
139
|
|
123
|
-
The MCP server will be available at `http://localhost:3000` and the api + frontend at `http://localhost:3001`.
|
140
|
+
The MCP server will be available at `http://localhost:3000` and the api + frontend at `http://localhost:3001`. 🌐
|
124
141
|
|
125
142
|
</details>
|
126
143
|
|
@@ -130,7 +147,7 @@ The MCP server will be available at `http://localhost:3000` and the api + fronte
|
|
130
147
|
1. Clone the repository:
|
131
148
|
|
132
149
|
```bash
|
133
|
-
git clone https://github.com/
|
150
|
+
git clone https://github.com/Edison-Watch/open-edison.git
|
134
151
|
cd open-edison
|
135
152
|
```
|
136
153
|
|
@@ -161,12 +178,12 @@ make run
|
|
161
178
|
open-edison run
|
162
179
|
```
|
163
180
|
|
164
|
-
The server will be available at `http://localhost:3000`.
|
181
|
+
The server will be available at `http://localhost:3000`. 🌐
|
165
182
|
|
166
183
|
</details>
|
167
184
|
|
168
185
|
<details>
|
169
|
-
<summary
|
186
|
+
<summary>🔌 MCP Connection</summary>
|
170
187
|
|
171
188
|
Connect any MCP client to Open Edison (requires Node.js/npm for `npx`):
|
172
189
|
|
@@ -190,20 +207,20 @@ Or add to your MCP client config:
|
|
190
207
|
</details>
|
191
208
|
|
192
209
|
<details>
|
193
|
-
<summary
|
210
|
+
<summary>🧭 Usage</summary>
|
194
211
|
|
195
212
|
### API Endpoints
|
196
213
|
|
197
214
|
See [API Reference](docs/quick-reference/api_reference.md) for full API documentation.
|
198
215
|
|
199
216
|
<details>
|
200
|
-
<summary
|
217
|
+
<summary>🛠️ Development</summary>
|
201
218
|
|
202
|
-
### Setup
|
219
|
+
### Setup 🧰
|
203
220
|
|
204
221
|
Setup from source as above.
|
205
222
|
|
206
|
-
### Run
|
223
|
+
### Run ▶️
|
207
224
|
|
208
225
|
Server doesn't have any auto-reload at the moment, so you'll need to run & ctrl-c this during development.
|
209
226
|
|
@@ -211,7 +228,7 @@ Server doesn't have any auto-reload at the moment, so you'll need to run & ctrl-
|
|
211
228
|
make run
|
212
229
|
```
|
213
230
|
|
214
|
-
### Tests/code quality
|
231
|
+
### Tests/code quality ✅
|
215
232
|
|
216
233
|
We expect `make ci` to return cleanly.
|
217
234
|
|
@@ -224,7 +241,7 @@ make ci
|
|
224
241
|
<details>
|
225
242
|
<summary>⚙️ Configuration (config.json)</summary>
|
226
243
|
|
227
|
-
## Configuration
|
244
|
+
## Configuration ⚙️
|
228
245
|
|
229
246
|
The `config.json` file contains all configuration:
|
230
247
|
|
@@ -246,18 +263,20 @@ Each MCP server configuration includes:
|
|
246
263
|
|
247
264
|
</details>
|
248
265
|
|
266
|
+
## 🔐 How Edison prevents data leakages
|
267
|
+
|
249
268
|
<details>
|
250
|
-
<summary
|
269
|
+
<summary>🔱 The lethal trifecta, agent lifecycle management</summary>
|
251
270
|
|
252
271
|
Open Edison includes a comprehensive security monitoring system that tracks the "lethal trifecta" of AI agent risks, as described in [Simon Willison's blog post](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/):
|
253
272
|
|
254
|
-
<img src="media/lethal-trifecta.png" alt="The lethal trifecta diagram showing the three key AI agent security risks" width="
|
273
|
+
<img src="media/lethal-trifecta.png" alt="The lethal trifecta diagram showing the three key AI agent security risks" width="70%">
|
255
274
|
|
256
275
|
1. **Private data access** - Access to sensitive local files/data
|
257
276
|
2. **Untrusted content exposure** - Exposure to external/web content
|
258
277
|
3. **External communication** - Ability to write/send data externally
|
259
278
|
|
260
|
-
<img src="media/pam-diagram.png" alt="Privileged Access Management (PAM) example showing the lethal trifecta in action" width="
|
279
|
+
<img src="media/pam-diagram.png" alt="Privileged Access Management (PAM) example showing the lethal trifecta in action" width="90%">
|
261
280
|
|
262
281
|
The configuration allows you to classify these risks across **tools**, **resources**, and **prompts** using separate configuration files.
|
263
282
|
|
@@ -265,7 +284,7 @@ In addition to trifecta, we track Access Control Level (ACL) for each tool call,
|
|
265
284
|
that is, each tool has an ACL level (one of PUBLIC, PRIVATE, or SECRET), and we track the highest ACL level for each session.
|
266
285
|
If a write operation is attempted to a lower ACL level, it is blocked.
|
267
286
|
|
268
|
-
### Tool Permissions (`tool_permissions.json`)
|
287
|
+
### 🧰 Tool Permissions (`tool_permissions.json`)
|
269
288
|
|
270
289
|
Defines security classifications for MCP tools. See full file: [tool_permissions.json](tool_permissions.json), it looks like:
|
271
290
|
|
@@ -283,7 +302,7 @@ Defines security classifications for MCP tools. See full file: [tool_permissions
|
|
283
302
|
```
|
284
303
|
|
285
304
|
<details>
|
286
|
-
<summary
|
305
|
+
<summary>📁 Resource Permissions (`resource_permissions.json`)</summary>
|
287
306
|
|
288
307
|
### Resource Permissions (`resource_permissions.json`)
|
289
308
|
|
@@ -299,7 +318,7 @@ Defines security classifications for resource access patterns. See full file: [r
|
|
299
318
|
</details>
|
300
319
|
|
301
320
|
<details>
|
302
|
-
<summary
|
321
|
+
<summary>💬 Prompt Permissions (`prompt_permissions.json`)</summary>
|
303
322
|
|
304
323
|
### Prompt Permissions (`prompt_permissions.json`)
|
305
324
|
|
@@ -314,7 +333,7 @@ Defines security classifications for prompt types. See full file: [prompt_permis
|
|
314
333
|
|
315
334
|
</details>
|
316
335
|
|
317
|
-
### Wildcard Patterns
|
336
|
+
### Wildcard Patterns ✨
|
318
337
|
|
319
338
|
All permission types support wildcard patterns:
|
320
339
|
|
@@ -322,7 +341,7 @@ All permission types support wildcard patterns:
|
|
322
341
|
- **Resources**: `scheme:*` (e.g., `file:*` matches all file resources)
|
323
342
|
- **Prompts**: `type:*` (e.g., `template:*` matches all template prompts)
|
324
343
|
|
325
|
-
### Security Monitoring
|
344
|
+
### Security Monitoring 🕵️
|
326
345
|
|
327
346
|
**All items must be explicitly configured** - unknown tools/resources/prompts will be rejected for security.
|
328
347
|
|
@@ -330,20 +349,20 @@ Use the `get_security_status` tool to monitor your session's current risk level
|
|
330
349
|
|
331
350
|
</details>
|
332
351
|
|
333
|
-
|
334
|
-
|
352
|
+
|
353
|
+
|
354
|
+
## Documentation 📚
|
335
355
|
|
336
356
|
📚 **Complete documentation available in [`docs/`](docs/)**
|
337
357
|
|
338
|
-
- **[Getting Started](docs/quick-reference/config_quick_start.md)** - Quick setup guide
|
339
|
-
- **[Configuration](docs/core/configuration.md)** - Complete configuration reference
|
340
|
-
- **[API Reference](docs/quick-reference/api_reference.md)** - REST API documentation
|
341
|
-
- **[Development Guide](docs/development/development_guide.md)** - Contributing and development
|
358
|
+
- 🚀 **[Getting Started](docs/quick-reference/config_quick_start.md)** - Quick setup guide
|
359
|
+
- ⚙️ **[Configuration](docs/core/configuration.md)** - Complete configuration reference
|
360
|
+
- 📡 **[API Reference](docs/quick-reference/api_reference.md)** - REST API documentation
|
361
|
+
- 🧑💻 **[Development Guide](docs/development/development_guide.md)** - Contributing and development
|
342
362
|
|
343
|
-
</details>
|
344
363
|
|
345
364
|
<details>
|
346
|
-
<summary
|
365
|
+
<summary>📄 License</summary>
|
347
366
|
|
348
367
|
GPL-3.0 License - see [LICENSE](LICENSE) for details.
|
349
368
|
|
@@ -1,21 +1,37 @@
|
|
1
|
-
# OpenEdison
|
1
|
+
# OpenEdison 🔒⚡️
|
2
2
|
|
3
|
-
|
3
|
+
MCP security gateway that prevents data exfiltration—via direct access or tool chaining—with full monitoring for local single‑user deployments. Provides core functionality of <https://edison.watch> for local use.
|
4
|
+
|
5
|
+
<p align="center">
|
6
|
+
<img src="media/trifecta520p.gif" alt="Trifecta Security Risk Animation" width="520">
|
7
|
+
</p>
|
4
8
|
|
5
9
|
<div align="center">
|
6
|
-
<h2>📧
|
10
|
+
<h2>📧 To get visibility, control and exfiltration blocker into AI's interaction with your company software, systems of record, DBs, <a href="mailto:hello@edison.watch">Contact us</a> to discuss.</h2>
|
7
11
|
</div>
|
8
12
|
|
9
|
-
|
13
|
+
<p align="center">
|
14
|
+
<img alt="Project Version" src="https://img.shields.io/pypi/v/open-edison?label=version&color=blue">
|
15
|
+
<img alt="Python Version" src="https://img.shields.io/badge/python-3.12-blue?logo=python">
|
16
|
+
<img src="https://img.shields.io/badge/License-GPLv3-blue" alt="License">
|
17
|
+
|
18
|
+
|
19
|
+
</p>
|
20
|
+
|
21
|
+
---
|
22
|
+
|
23
|
+
|
24
|
+
## Features ✨
|
10
25
|
|
11
|
-
- **
|
12
|
-
- **
|
13
|
-
- **
|
14
|
-
- **
|
15
|
-
- **
|
16
|
-
- **
|
26
|
+
- 🛑 **Prevent Data Leaks** - Edison automatically blocks any data leaks, even if your AI gets jailbroken
|
27
|
+
- 👤 **Single-user MCP proxy** - No multi-user complexity, just a simple proxy for your MCP servers
|
28
|
+
- 🗂️ **JSON configuration** - Easy to configure and manage your MCP servers
|
29
|
+
- 🖥️ **Simple local frontend** - Track and monitor your MCP interactions, servers, and sessions.
|
30
|
+
- 📊 **Session tracking** - Track and monitor your MCP interactions
|
31
|
+
- 🔗 **Simple API** - REST API for managing MCP servers and proxying requests
|
32
|
+
- 🐳 **Docker support** - Run in a container for easy deployment
|
17
33
|
|
18
|
-
## Quick Start
|
34
|
+
## Quick Start 🚀
|
19
35
|
|
20
36
|
The fastest way to get started:
|
21
37
|
|
@@ -28,7 +44,7 @@ curl -fsSL https://raw.githubusercontent.com/Edison-Watch/open-edison/main/curl_
|
|
28
44
|
Run locally with uvx: `uvx open-edison --config-dir ~/edison-config`
|
29
45
|
|
30
46
|
<details>
|
31
|
-
<summary
|
47
|
+
<summary>⬇️ Install Node.js/npm (optional for MCP tools)</summary>
|
32
48
|
|
33
49
|
If you need `npx` (for Node-based MCP tools like `mcp-remote`), install Node.js as well:
|
34
50
|
|
@@ -48,6 +64,7 @@ If you need `npx` (for Node-based MCP tools like `mcp-remote`), install Node.js
|
|
48
64
|
- Node/npx: `winget install -e --id OpenJS.NodeJS`
|
49
65
|
|
50
66
|
After installation, ensure that `npx` is available on PATH.
|
67
|
+
</details>
|
51
68
|
|
52
69
|
<details>
|
53
70
|
<summary><img src="https://img.shields.io/badge/pypi-3775A9?style=for-the-badge&logo=pypi&logoColor=white" alt="PyPI"> Install from PyPI</summary>
|
@@ -82,18 +99,18 @@ There is a dockerfile for simple local setup.
|
|
82
99
|
|
83
100
|
```bash
|
84
101
|
# Single-line:
|
85
|
-
git clone https://github.com/
|
102
|
+
git clone https://github.com/Edison-Watch/open-edison.git && cd open-edison && make docker_run
|
86
103
|
|
87
104
|
# Or
|
88
105
|
# Clone repo
|
89
|
-
git clone https://github.com/
|
106
|
+
git clone https://github.com/Edison-Watch/open-edison.git
|
90
107
|
# Enter repo
|
91
108
|
cd open-edison
|
92
109
|
# Build and run
|
93
110
|
make docker_run
|
94
111
|
```
|
95
112
|
|
96
|
-
The MCP server will be available at `http://localhost:3000` and the api + frontend at `http://localhost:3001`.
|
113
|
+
The MCP server will be available at `http://localhost:3000` and the api + frontend at `http://localhost:3001`. 🌐
|
97
114
|
|
98
115
|
</details>
|
99
116
|
|
@@ -103,7 +120,7 @@ The MCP server will be available at `http://localhost:3000` and the api + fronte
|
|
103
120
|
1. Clone the repository:
|
104
121
|
|
105
122
|
```bash
|
106
|
-
git clone https://github.com/
|
123
|
+
git clone https://github.com/Edison-Watch/open-edison.git
|
107
124
|
cd open-edison
|
108
125
|
```
|
109
126
|
|
@@ -134,12 +151,12 @@ make run
|
|
134
151
|
open-edison run
|
135
152
|
```
|
136
153
|
|
137
|
-
The server will be available at `http://localhost:3000`.
|
154
|
+
The server will be available at `http://localhost:3000`. 🌐
|
138
155
|
|
139
156
|
</details>
|
140
157
|
|
141
158
|
<details>
|
142
|
-
<summary
|
159
|
+
<summary>🔌 MCP Connection</summary>
|
143
160
|
|
144
161
|
Connect any MCP client to Open Edison (requires Node.js/npm for `npx`):
|
145
162
|
|
@@ -163,20 +180,20 @@ Or add to your MCP client config:
|
|
163
180
|
</details>
|
164
181
|
|
165
182
|
<details>
|
166
|
-
<summary
|
183
|
+
<summary>🧭 Usage</summary>
|
167
184
|
|
168
185
|
### API Endpoints
|
169
186
|
|
170
187
|
See [API Reference](docs/quick-reference/api_reference.md) for full API documentation.
|
171
188
|
|
172
189
|
<details>
|
173
|
-
<summary
|
190
|
+
<summary>🛠️ Development</summary>
|
174
191
|
|
175
|
-
### Setup
|
192
|
+
### Setup 🧰
|
176
193
|
|
177
194
|
Setup from source as above.
|
178
195
|
|
179
|
-
### Run
|
196
|
+
### Run ▶️
|
180
197
|
|
181
198
|
Server doesn't have any auto-reload at the moment, so you'll need to run & ctrl-c this during development.
|
182
199
|
|
@@ -184,7 +201,7 @@ Server doesn't have any auto-reload at the moment, so you'll need to run & ctrl-
|
|
184
201
|
make run
|
185
202
|
```
|
186
203
|
|
187
|
-
### Tests/code quality
|
204
|
+
### Tests/code quality ✅
|
188
205
|
|
189
206
|
We expect `make ci` to return cleanly.
|
190
207
|
|
@@ -197,7 +214,7 @@ make ci
|
|
197
214
|
<details>
|
198
215
|
<summary>⚙️ Configuration (config.json)</summary>
|
199
216
|
|
200
|
-
## Configuration
|
217
|
+
## Configuration ⚙️
|
201
218
|
|
202
219
|
The `config.json` file contains all configuration:
|
203
220
|
|
@@ -219,18 +236,20 @@ Each MCP server configuration includes:
|
|
219
236
|
|
220
237
|
</details>
|
221
238
|
|
239
|
+
## 🔐 How Edison prevents data leakages
|
240
|
+
|
222
241
|
<details>
|
223
|
-
<summary
|
242
|
+
<summary>🔱 The lethal trifecta, agent lifecycle management</summary>
|
224
243
|
|
225
244
|
Open Edison includes a comprehensive security monitoring system that tracks the "lethal trifecta" of AI agent risks, as described in [Simon Willison's blog post](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/):
|
226
245
|
|
227
|
-
<img src="media/lethal-trifecta.png" alt="The lethal trifecta diagram showing the three key AI agent security risks" width="
|
246
|
+
<img src="media/lethal-trifecta.png" alt="The lethal trifecta diagram showing the three key AI agent security risks" width="70%">
|
228
247
|
|
229
248
|
1. **Private data access** - Access to sensitive local files/data
|
230
249
|
2. **Untrusted content exposure** - Exposure to external/web content
|
231
250
|
3. **External communication** - Ability to write/send data externally
|
232
251
|
|
233
|
-
<img src="media/pam-diagram.png" alt="Privileged Access Management (PAM) example showing the lethal trifecta in action" width="
|
252
|
+
<img src="media/pam-diagram.png" alt="Privileged Access Management (PAM) example showing the lethal trifecta in action" width="90%">
|
234
253
|
|
235
254
|
The configuration allows you to classify these risks across **tools**, **resources**, and **prompts** using separate configuration files.
|
236
255
|
|
@@ -238,7 +257,7 @@ In addition to trifecta, we track Access Control Level (ACL) for each tool call,
|
|
238
257
|
that is, each tool has an ACL level (one of PUBLIC, PRIVATE, or SECRET), and we track the highest ACL level for each session.
|
239
258
|
If a write operation is attempted to a lower ACL level, it is blocked.
|
240
259
|
|
241
|
-
### Tool Permissions (`tool_permissions.json`)
|
260
|
+
### 🧰 Tool Permissions (`tool_permissions.json`)
|
242
261
|
|
243
262
|
Defines security classifications for MCP tools. See full file: [tool_permissions.json](tool_permissions.json), it looks like:
|
244
263
|
|
@@ -256,7 +275,7 @@ Defines security classifications for MCP tools. See full file: [tool_permissions
|
|
256
275
|
```
|
257
276
|
|
258
277
|
<details>
|
259
|
-
<summary
|
278
|
+
<summary>📁 Resource Permissions (`resource_permissions.json`)</summary>
|
260
279
|
|
261
280
|
### Resource Permissions (`resource_permissions.json`)
|
262
281
|
|
@@ -272,7 +291,7 @@ Defines security classifications for resource access patterns. See full file: [r
|
|
272
291
|
</details>
|
273
292
|
|
274
293
|
<details>
|
275
|
-
<summary
|
294
|
+
<summary>💬 Prompt Permissions (`prompt_permissions.json`)</summary>
|
276
295
|
|
277
296
|
### Prompt Permissions (`prompt_permissions.json`)
|
278
297
|
|
@@ -287,7 +306,7 @@ Defines security classifications for prompt types. See full file: [prompt_permis
|
|
287
306
|
|
288
307
|
</details>
|
289
308
|
|
290
|
-
### Wildcard Patterns
|
309
|
+
### Wildcard Patterns ✨
|
291
310
|
|
292
311
|
All permission types support wildcard patterns:
|
293
312
|
|
@@ -295,7 +314,7 @@ All permission types support wildcard patterns:
|
|
295
314
|
- **Resources**: `scheme:*` (e.g., `file:*` matches all file resources)
|
296
315
|
- **Prompts**: `type:*` (e.g., `template:*` matches all template prompts)
|
297
316
|
|
298
|
-
### Security Monitoring
|
317
|
+
### Security Monitoring 🕵️
|
299
318
|
|
300
319
|
**All items must be explicitly configured** - unknown tools/resources/prompts will be rejected for security.
|
301
320
|
|
@@ -303,20 +322,20 @@ Use the `get_security_status` tool to monitor your session's current risk level
|
|
303
322
|
|
304
323
|
</details>
|
305
324
|
|
306
|
-
|
307
|
-
|
325
|
+
|
326
|
+
|
327
|
+
## Documentation 📚
|
308
328
|
|
309
329
|
📚 **Complete documentation available in [`docs/`](docs/)**
|
310
330
|
|
311
|
-
- **[Getting Started](docs/quick-reference/config_quick_start.md)** - Quick setup guide
|
312
|
-
- **[Configuration](docs/core/configuration.md)** - Complete configuration reference
|
313
|
-
- **[API Reference](docs/quick-reference/api_reference.md)** - REST API documentation
|
314
|
-
- **[Development Guide](docs/development/development_guide.md)** - Contributing and development
|
331
|
+
- 🚀 **[Getting Started](docs/quick-reference/config_quick_start.md)** - Quick setup guide
|
332
|
+
- ⚙️ **[Configuration](docs/core/configuration.md)** - Complete configuration reference
|
333
|
+
- 📡 **[API Reference](docs/quick-reference/api_reference.md)** - REST API documentation
|
334
|
+
- 🧑💻 **[Development Guide](docs/development/development_guide.md)** - Contributing and development
|
315
335
|
|
316
|
-
</details>
|
317
336
|
|
318
337
|
<details>
|
319
|
-
<summary
|
338
|
+
<summary>📄 License</summary>
|
320
339
|
|
321
340
|
GPL-3.0 License - see [LICENSE](LICENSE) for details.
|
322
341
|
|
@@ -146,7 +146,7 @@ This extension operates securely:
|
|
146
146
|
1. **Clone the repository**:
|
147
147
|
|
148
148
|
```bash
|
149
|
-
git clone https://github.com/
|
149
|
+
git clone https://github.com/Edison-Watch/open-edison
|
150
150
|
cd open-edison/desktop_ext
|
151
151
|
```
|
152
152
|
|
@@ -181,11 +181,11 @@ desktop_ext/
|
|
181
181
|
## Contributing
|
182
182
|
|
183
183
|
This extension is part of the Open Edison project. See the main repository for contribution guidelines:
|
184
|
-
<https://github.com/
|
184
|
+
<https://github.com/Edison-Watch/open-edison>
|
185
185
|
|
186
186
|
## Related Resources
|
187
187
|
|
188
|
-
- [Open Edison Main Repository](https://github.com/
|
188
|
+
- [Open Edison Main Repository](https://github.com/Edison-Watch/open-edison)
|
189
189
|
- [mcp-remote Package](https://www.npmjs.com/package/mcp-remote)
|
190
190
|
- [Model Context Protocol](https://modelcontextprotocol.io/)
|
191
191
|
- [Anthropic Desktop Extensions](https://support.anthropic.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop)
|
@@ -24,7 +24,7 @@ This guide covers installing and running Open Edison directly on your local mach
|
|
24
24
|
|
25
25
|
```bash
|
26
26
|
# Clone the repository
|
27
|
-
git clone https://github.com/
|
27
|
+
git clone https://github.com/Edison-Watch/open-edison.git
|
28
28
|
cd open-edison
|
29
29
|
```
|
30
30
|
|
@@ -24,7 +24,7 @@ Open Edison is designed to be:
|
|
24
24
|
|
25
25
|
```bash
|
26
26
|
# Clone the repository
|
27
|
-
git clone https://github.com/
|
27
|
+
git clone https://github.com/Edison-Watch/open-edison.git
|
28
28
|
cd open-edison
|
29
29
|
|
30
30
|
# Install dependencies
|
@@ -177,7 +177,7 @@ git clone https://github.com/your-username/open-edison.git
|
|
177
177
|
cd open-edison
|
178
178
|
|
179
179
|
# Add upstream remote
|
180
|
-
git remote add upstream https://github.com/
|
180
|
+
git remote add upstream https://github.com/Edison-Watch/open-edison.git
|
181
181
|
```
|
182
182
|
|
183
183
|
### 2. **Create Feature Branch**
|
@@ -177,6 +177,7 @@ def _spawn_frontend_dev( # noqa: C901 - pragmatic complexity for env probing
|
|
177
177
|
|
178
178
|
|
179
179
|
async def _run_server(args: Any) -> None:
|
180
|
+
# TODO check this works as we want it to
|
180
181
|
# Resolve config dir and expose via env for the rest of the app
|
181
182
|
config_dir_arg = getattr(args, "config_dir", None)
|
182
183
|
if config_dir_arg is not None:
|
@@ -184,7 +185,7 @@ async def _run_server(args: Any) -> None:
|
|
184
185
|
config_dir = get_config_dir()
|
185
186
|
|
186
187
|
# Load config after setting env override
|
187
|
-
cfg = Config
|
188
|
+
cfg = Config(config_dir)
|
188
189
|
|
189
190
|
host = getattr(args, "host", None) or cfg.server.host
|
190
191
|
port = getattr(args, "port", None) or cfg.server.port
|