open-edison 0.1.17__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.
Files changed (39) hide show
  1. {open_edison-0.1.17 → open_edison-0.1.26}/.gitignore +3 -1
  2. {open_edison-0.1.17 → open_edison-0.1.26}/PKG-INFO +124 -51
  3. {open_edison-0.1.17 → open_edison-0.1.26}/README.md +123 -50
  4. {open_edison-0.1.17 → open_edison-0.1.26}/config.json +16 -2
  5. {open_edison-0.1.17 → open_edison-0.1.26}/desktop_ext/README.md +3 -3
  6. {open_edison-0.1.17 → open_edison-0.1.26}/docs/deployment/local.md +1 -1
  7. {open_edison-0.1.17 → open_edison-0.1.26}/docs/development/contributing.md +2 -2
  8. {open_edison-0.1.17 → open_edison-0.1.26}/pyproject.toml +2 -1
  9. {open_edison-0.1.17 → open_edison-0.1.26}/src/cli.py +2 -1
  10. {open_edison-0.1.17 → open_edison-0.1.26}/src/config.py +63 -51
  11. open_edison-0.1.26/src/events.py +153 -0
  12. open_edison-0.1.26/src/middleware/data_access_tracker.py +370 -0
  13. {open_edison-0.1.17 → open_edison-0.1.26}/src/middleware/session_tracking.py +93 -29
  14. open_edison-0.1.26/src/oauth_manager.py +281 -0
  15. open_edison-0.1.26/src/permissions.py +292 -0
  16. {open_edison-0.1.17 → open_edison-0.1.26}/src/server.py +525 -98
  17. open_edison-0.1.26/src/single_user_mcp.py +448 -0
  18. {open_edison-0.1.17 → open_edison-0.1.26}/src/telemetry.py +4 -40
  19. {open_edison-0.1.17 → open_edison-0.1.26}/tool_permissions.json +57 -72
  20. open_edison-0.1.17/frontend/configurations/prompt_permissions.json +0 -14
  21. open_edison-0.1.17/frontend/configurations/resource_permissions.json +0 -14
  22. open_edison-0.1.17/frontend/configurations/tool_permissions.json +0 -170
  23. open_edison-0.1.17/src/middleware/data_access_tracker.py +0 -611
  24. open_edison-0.1.17/src/single_user_mcp.py +0 -386
  25. {open_edison-0.1.17 → open_edison-0.1.26}/LICENSE +0 -0
  26. {open_edison-0.1.17 → open_edison-0.1.26}/docs/README.md +0 -0
  27. {open_edison-0.1.17 → open_edison-0.1.26}/docs/architecture/single_user_design.md +0 -0
  28. {open_edison-0.1.17 → open_edison-0.1.26}/docs/core/configuration.md +0 -0
  29. {open_edison-0.1.17 → open_edison-0.1.26}/docs/core/project_structure.md +0 -0
  30. {open_edison-0.1.17 → open_edison-0.1.26}/docs/core/proxy_usage.md +0 -0
  31. {open_edison-0.1.17 → open_edison-0.1.26}/docs/deployment/docker.md +0 -0
  32. {open_edison-0.1.17 → open_edison-0.1.26}/docs/development/development_guide.md +0 -0
  33. {open_edison-0.1.17 → open_edison-0.1.26}/docs/development/testing.md +0 -0
  34. {open_edison-0.1.17 → open_edison-0.1.26}/docs/quick-reference/api_reference.md +0 -0
  35. {open_edison-0.1.17 → open_edison-0.1.26}/docs/quick-reference/config_quick_start.md +0 -0
  36. {open_edison-0.1.17 → open_edison-0.1.26}/prompt_permissions.json +0 -0
  37. {open_edison-0.1.17 → open_edison-0.1.26}/resource_permissions.json +0 -0
  38. {open_edison-0.1.17 → open_edison-0.1.26}/src/__init__.py +0 -0
  39. {open_edison-0.1.17 → open_edison-0.1.26}/src/__main__.py +0 -0
@@ -215,4 +215,6 @@ test.db
215
215
  src/frontend_dist/
216
216
  frontend_dist/
217
217
  frontend/node_modules/
218
- frontend/package-lock.json
218
+ frontend/package-lock.json
219
+ .vscode
220
+ install_id
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: open-edison
3
- Version: 0.1.17
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,11 +25,42 @@ 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
- Open-source 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, single-user use.
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
31
 
32
- Just want to run it?
32
+ <p align="center">
33
+ <img src="media/trifecta520p.gif" alt="Trifecta Security Risk Animation" width="520">
34
+ </p>
35
+
36
+ <div align="center">
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>
38
+ </div>
39
+
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 ✨
52
+
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
60
+
61
+ ## Quick Start 🚀
62
+
63
+ The fastest way to get started:
33
64
 
34
65
  ```bash
35
66
  # Installs uv (via Astral installer) and launches open-edison with uvx.
@@ -39,36 +70,31 @@ curl -fsSL https://raw.githubusercontent.com/Edison-Watch/open-edison/main/curl_
39
70
 
40
71
  Run locally with uvx: `uvx open-edison --config-dir ~/edison-config`
41
72
 
73
+ <details>
74
+ <summary>⬇️ Install Node.js/npm (optional for MCP tools)</summary>
75
+
42
76
  If you need `npx` (for Node-based MCP tools like `mcp-remote`), install Node.js as well:
43
77
 
44
- - macOS:
45
- - uv: `curl -fsSL https://astral.sh/uv/install.sh | sh`
46
- - Node/npx: `brew install node`
47
- - Linux (Debian/Ubuntu):
48
- - uv: `curl -fsSL https://astral.sh/uv/install.sh | sh`
49
- - Node/npx: `sudo apt-get update && sudo apt-get install -y nodejs npm`
50
- - Windows (PowerShell):
51
- - uv: `powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"`
52
- - Node/npx: `winget install -e --id OpenJS.NodeJS`
78
+ ![macOS](https://img.shields.io/badge/mac%20os-000000?style=for-the-badge&logo=apple&logoColor=white)
53
79
 
54
- After installation, ensure that `npx` is available on PATH.
80
+ - uv: `curl -fsSL https://astral.sh/uv/install.sh | sh`
81
+ - Node/npx: `brew install node`
55
82
 
56
- <div align="center">
57
- <h2>📧 Interested in connecting AI to your business software with proper access controls? <a href="mailto:hello@edison.watch">Contact us</a> to discuss.</h2>
58
- </div>
83
+ ![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black)
84
+
85
+ - uv: `curl -fsSL https://astral.sh/uv/install.sh | sh`
86
+ - Node/npx: `sudo apt-get update && sudo apt-get install -y nodejs npm`
59
87
 
60
- ## Features
88
+ ![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white)
61
89
 
62
- - **Single-user MCP proxy** - No multi-user complexity, just a simple proxy for your MCP servers
63
- - **JSON configuration** - Easy to configure and manage your MCP servers
64
- - **Simple local frontend** - Track and monitor your MCP interactions, servers, and sessions.
65
- - **Session tracking** - Track and monitor your MCP interactions
66
- - **Simple API** - REST API for managing MCP servers and proxying requests
67
- - **Docker support** - Run in a container for easy deployment
90
+ - uv: `powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"`
91
+ - Node/npx: `winget install -e --id OpenJS.NodeJS`
68
92
 
69
- ## Quick Start
93
+ After installation, ensure that `npx` is available on PATH.
94
+ </details>
70
95
 
71
- ### Install from PyPI
96
+ <details>
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>
72
98
 
73
99
  #### Prerequisites
74
100
 
@@ -91,31 +117,37 @@ open-edison run --config-dir ~/edison-config
91
117
  OPEN_EDISON_CONFIG_DIR=~/edison-config open-edison run
92
118
  ```
93
119
 
94
- ### Run with Docker
120
+ </details>
121
+
122
+ <details>
123
+ <summary><img src="https://img.shields.io/badge/Docker-2CA5E0?style=for-the-badge&logo=docker&logoColor=white" alt="Docker"> Run with Docker</summary>
95
124
 
96
125
  There is a dockerfile for simple local setup.
97
126
 
98
127
  ```bash
99
128
  # Single-line:
100
- git clone https://github.com/GatlingX/open-edison.git && cd open-edison && make docker_run
129
+ git clone https://github.com/Edison-Watch/open-edison.git && cd open-edison && make docker_run
101
130
 
102
131
  # Or
103
132
  # Clone repo
104
- git clone https://github.com/GatlingX/open-edison.git
133
+ git clone https://github.com/Edison-Watch/open-edison.git
105
134
  # Enter repo
106
135
  cd open-edison
107
136
  # Build and run
108
137
  make docker_run
109
138
  ```
110
139
 
111
- 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`. 🌐
112
141
 
113
- ### Run from source
142
+ </details>
143
+
144
+ <details>
145
+ <summary>⚙️ Run from source</summary>
114
146
 
115
147
  1. Clone the repository:
116
148
 
117
149
  ```bash
118
- git clone https://github.com/GatlingX/open-edison.git
150
+ git clone https://github.com/Edison-Watch/open-edison.git
119
151
  cd open-edison
120
152
  ```
121
153
 
@@ -146,9 +178,12 @@ make run
146
178
  open-edison run
147
179
  ```
148
180
 
149
- The server will be available at `http://localhost:3000`.
181
+ The server will be available at `http://localhost:3000`. 🌐
182
+
183
+ </details>
150
184
 
151
- ## MCP Connection
185
+ <details>
186
+ <summary>🔌 MCP Connection</summary>
152
187
 
153
188
  Connect any MCP client to Open Edison (requires Node.js/npm for `npx`):
154
189
 
@@ -169,19 +204,23 @@ Or add to your MCP client config:
169
204
  }
170
205
  ```
171
206
 
172
- ## Usage
207
+ </details>
208
+
209
+ <details>
210
+ <summary>🧭 Usage</summary>
173
211
 
174
212
  ### API Endpoints
175
213
 
176
214
  See [API Reference](docs/quick-reference/api_reference.md) for full API documentation.
177
215
 
178
- ## Development
216
+ <details>
217
+ <summary>🛠️ Development</summary>
179
218
 
180
- ### Setup
219
+ ### Setup 🧰
181
220
 
182
221
  Setup from source as above.
183
222
 
184
- ### Run
223
+ ### Run ▶️
185
224
 
186
225
  Server doesn't have any auto-reload at the moment, so you'll need to run & ctrl-c this during development.
187
226
 
@@ -189,7 +228,7 @@ Server doesn't have any auto-reload at the moment, so you'll need to run & ctrl-
189
228
  make run
190
229
  ```
191
230
 
192
- ### Tests/code quality
231
+ ### Tests/code quality
193
232
 
194
233
  We expect `make ci` to return cleanly.
195
234
 
@@ -197,7 +236,12 @@ We expect `make ci` to return cleanly.
197
236
  make ci
198
237
  ```
199
238
 
200
- ## Configuration
239
+ </details>
240
+
241
+ <details>
242
+ <summary>⚙️ Configuration (config.json)</summary>
243
+
244
+ ## Configuration ⚙️
201
245
 
202
246
  The `config.json` file contains all configuration:
203
247
 
@@ -215,21 +259,32 @@ Each MCP server configuration includes:
215
259
  - `env` - Environment variables (optional)
216
260
  - `enabled` - Whether to auto-start this server
217
261
 
218
- ## Security & Permissions System
262
+ </details>
219
263
 
220
- Open Edison includes a comprehensive security monitoring system that tracks the "lethal trifecta" of AI agent risks:
264
+ </details>
265
+
266
+ ## 🔐 How Edison prevents data leakages
267
+
268
+ <details>
269
+ <summary>🔱 The lethal trifecta, agent lifecycle management</summary>
270
+
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/):
272
+
273
+ <img src="media/lethal-trifecta.png" alt="The lethal trifecta diagram showing the three key AI agent security risks" width="70%">
221
274
 
222
275
  1. **Private data access** - Access to sensitive local files/data
223
276
  2. **Untrusted content exposure** - Exposure to external/web content
224
277
  3. **External communication** - Ability to write/send data externally
225
278
 
279
+ <img src="media/pam-diagram.png" alt="Privileged Access Management (PAM) example showing the lethal trifecta in action" width="90%">
280
+
226
281
  The configuration allows you to classify these risks across **tools**, **resources**, and **prompts** using separate configuration files.
227
282
 
228
283
  In addition to trifecta, we track Access Control Level (ACL) for each tool call,
229
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.
230
285
  If a write operation is attempted to a lower ACL level, it is blocked.
231
286
 
232
- ### Tool Permissions (`tool_permissions.json`)
287
+ ### 🧰 Tool Permissions (`tool_permissions.json`)
233
288
 
234
289
  Defines security classifications for MCP tools. See full file: [tool_permissions.json](tool_permissions.json), it looks like:
235
290
 
@@ -246,6 +301,9 @@ Defines security classifications for MCP tools. See full file: [tool_permissions
246
301
  }
247
302
  ```
248
303
 
304
+ <details>
305
+ <summary>📁 Resource Permissions (`resource_permissions.json`)</summary>
306
+
249
307
  ### Resource Permissions (`resource_permissions.json`)
250
308
 
251
309
  Defines security classifications for resource access patterns. See full file: [resource_permissions.json](resource_permissions.json), it looks like:
@@ -257,6 +315,11 @@ Defines security classifications for resource access patterns. See full file: [r
257
315
  }
258
316
  ```
259
317
 
318
+ </details>
319
+
320
+ <details>
321
+ <summary>💬 Prompt Permissions (`prompt_permissions.json`)</summary>
322
+
260
323
  ### Prompt Permissions (`prompt_permissions.json`)
261
324
 
262
325
  Defines security classifications for prompt types. See full file: [prompt_permissions.json](prompt_permissions.json), it looks like:
@@ -268,7 +331,9 @@ Defines security classifications for prompt types. See full file: [prompt_permis
268
331
  }
269
332
  ```
270
333
 
271
- ### Wildcard Patterns
334
+ </details>
335
+
336
+ ### Wildcard Patterns ✨
272
337
 
273
338
  All permission types support wildcard patterns:
274
339
 
@@ -276,21 +341,29 @@ All permission types support wildcard patterns:
276
341
  - **Resources**: `scheme:*` (e.g., `file:*` matches all file resources)
277
342
  - **Prompts**: `type:*` (e.g., `template:*` matches all template prompts)
278
343
 
279
- ### Security Monitoring
344
+ ### Security Monitoring 🕵️
280
345
 
281
346
  **All items must be explicitly configured** - unknown tools/resources/prompts will be rejected for security.
282
347
 
283
348
  Use the `get_security_status` tool to monitor your session's current risk level and see which capabilities have been accessed. When the lethal trifecta is achieved (all three risk flags set), further potentially dangerous operations are blocked.
284
349
 
285
- ## Documentation
350
+ </details>
351
+
352
+
353
+
354
+ ## Documentation 📚
286
355
 
287
356
  📚 **Complete documentation available in [`docs/`](docs/)**
288
357
 
289
- - **[Getting Started](docs/quick-reference/config_quick_start.md)** - Quick setup guide
290
- - **[Configuration](docs/core/configuration.md)** - Complete configuration reference
291
- - **[API Reference](docs/quick-reference/api_reference.md)** - REST API documentation
292
- - **[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
293
362
 
294
- ## License
363
+
364
+ <details>
365
+ <summary>📄 License</summary>
295
366
 
296
367
  GPL-3.0 License - see [LICENSE](LICENSE) for details.
368
+
369
+ </details>
@@ -1,8 +1,39 @@
1
- # OpenEdison
1
+ # OpenEdison 🔒⚡️
2
2
 
3
- Open-source 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, single-user use.
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
4
 
5
- Just want to run it?
5
+ <p align="center">
6
+ <img src="media/trifecta520p.gif" alt="Trifecta Security Risk Animation" width="520">
7
+ </p>
8
+
9
+ <div align="center">
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>
11
+ </div>
12
+
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 ✨
25
+
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
33
+
34
+ ## Quick Start 🚀
35
+
36
+ The fastest way to get started:
6
37
 
7
38
  ```bash
8
39
  # Installs uv (via Astral installer) and launches open-edison with uvx.
@@ -12,36 +43,31 @@ curl -fsSL https://raw.githubusercontent.com/Edison-Watch/open-edison/main/curl_
12
43
 
13
44
  Run locally with uvx: `uvx open-edison --config-dir ~/edison-config`
14
45
 
46
+ <details>
47
+ <summary>⬇️ Install Node.js/npm (optional for MCP tools)</summary>
48
+
15
49
  If you need `npx` (for Node-based MCP tools like `mcp-remote`), install Node.js as well:
16
50
 
17
- - macOS:
18
- - uv: `curl -fsSL https://astral.sh/uv/install.sh | sh`
19
- - Node/npx: `brew install node`
20
- - Linux (Debian/Ubuntu):
21
- - uv: `curl -fsSL https://astral.sh/uv/install.sh | sh`
22
- - Node/npx: `sudo apt-get update && sudo apt-get install -y nodejs npm`
23
- - Windows (PowerShell):
24
- - uv: `powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"`
25
- - Node/npx: `winget install -e --id OpenJS.NodeJS`
51
+ ![macOS](https://img.shields.io/badge/mac%20os-000000?style=for-the-badge&logo=apple&logoColor=white)
26
52
 
27
- After installation, ensure that `npx` is available on PATH.
53
+ - uv: `curl -fsSL https://astral.sh/uv/install.sh | sh`
54
+ - Node/npx: `brew install node`
28
55
 
29
- <div align="center">
30
- <h2>📧 Interested in connecting AI to your business software with proper access controls? <a href="mailto:hello@edison.watch">Contact us</a> to discuss.</h2>
31
- </div>
56
+ ![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black)
57
+
58
+ - uv: `curl -fsSL https://astral.sh/uv/install.sh | sh`
59
+ - Node/npx: `sudo apt-get update && sudo apt-get install -y nodejs npm`
32
60
 
33
- ## Features
61
+ ![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white)
34
62
 
35
- - **Single-user MCP proxy** - No multi-user complexity, just a simple proxy for your MCP servers
36
- - **JSON configuration** - Easy to configure and manage your MCP servers
37
- - **Simple local frontend** - Track and monitor your MCP interactions, servers, and sessions.
38
- - **Session tracking** - Track and monitor your MCP interactions
39
- - **Simple API** - REST API for managing MCP servers and proxying requests
40
- - **Docker support** - Run in a container for easy deployment
63
+ - uv: `powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"`
64
+ - Node/npx: `winget install -e --id OpenJS.NodeJS`
41
65
 
42
- ## Quick Start
66
+ After installation, ensure that `npx` is available on PATH.
67
+ </details>
43
68
 
44
- ### Install from PyPI
69
+ <details>
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>
45
71
 
46
72
  #### Prerequisites
47
73
 
@@ -64,31 +90,37 @@ open-edison run --config-dir ~/edison-config
64
90
  OPEN_EDISON_CONFIG_DIR=~/edison-config open-edison run
65
91
  ```
66
92
 
67
- ### Run with Docker
93
+ </details>
94
+
95
+ <details>
96
+ <summary><img src="https://img.shields.io/badge/Docker-2CA5E0?style=for-the-badge&logo=docker&logoColor=white" alt="Docker"> Run with Docker</summary>
68
97
 
69
98
  There is a dockerfile for simple local setup.
70
99
 
71
100
  ```bash
72
101
  # Single-line:
73
- git clone https://github.com/GatlingX/open-edison.git && cd open-edison && make docker_run
102
+ git clone https://github.com/Edison-Watch/open-edison.git && cd open-edison && make docker_run
74
103
 
75
104
  # Or
76
105
  # Clone repo
77
- git clone https://github.com/GatlingX/open-edison.git
106
+ git clone https://github.com/Edison-Watch/open-edison.git
78
107
  # Enter repo
79
108
  cd open-edison
80
109
  # Build and run
81
110
  make docker_run
82
111
  ```
83
112
 
84
- 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`. 🌐
85
114
 
86
- ### Run from source
115
+ </details>
116
+
117
+ <details>
118
+ <summary>⚙️ Run from source</summary>
87
119
 
88
120
  1. Clone the repository:
89
121
 
90
122
  ```bash
91
- git clone https://github.com/GatlingX/open-edison.git
123
+ git clone https://github.com/Edison-Watch/open-edison.git
92
124
  cd open-edison
93
125
  ```
94
126
 
@@ -119,9 +151,12 @@ make run
119
151
  open-edison run
120
152
  ```
121
153
 
122
- The server will be available at `http://localhost:3000`.
154
+ The server will be available at `http://localhost:3000`. 🌐
155
+
156
+ </details>
123
157
 
124
- ## MCP Connection
158
+ <details>
159
+ <summary>🔌 MCP Connection</summary>
125
160
 
126
161
  Connect any MCP client to Open Edison (requires Node.js/npm for `npx`):
127
162
 
@@ -142,19 +177,23 @@ Or add to your MCP client config:
142
177
  }
143
178
  ```
144
179
 
145
- ## Usage
180
+ </details>
181
+
182
+ <details>
183
+ <summary>🧭 Usage</summary>
146
184
 
147
185
  ### API Endpoints
148
186
 
149
187
  See [API Reference](docs/quick-reference/api_reference.md) for full API documentation.
150
188
 
151
- ## Development
189
+ <details>
190
+ <summary>🛠️ Development</summary>
152
191
 
153
- ### Setup
192
+ ### Setup 🧰
154
193
 
155
194
  Setup from source as above.
156
195
 
157
- ### Run
196
+ ### Run ▶️
158
197
 
159
198
  Server doesn't have any auto-reload at the moment, so you'll need to run & ctrl-c this during development.
160
199
 
@@ -162,7 +201,7 @@ Server doesn't have any auto-reload at the moment, so you'll need to run & ctrl-
162
201
  make run
163
202
  ```
164
203
 
165
- ### Tests/code quality
204
+ ### Tests/code quality
166
205
 
167
206
  We expect `make ci` to return cleanly.
168
207
 
@@ -170,7 +209,12 @@ We expect `make ci` to return cleanly.
170
209
  make ci
171
210
  ```
172
211
 
173
- ## Configuration
212
+ </details>
213
+
214
+ <details>
215
+ <summary>⚙️ Configuration (config.json)</summary>
216
+
217
+ ## Configuration ⚙️
174
218
 
175
219
  The `config.json` file contains all configuration:
176
220
 
@@ -188,21 +232,32 @@ Each MCP server configuration includes:
188
232
  - `env` - Environment variables (optional)
189
233
  - `enabled` - Whether to auto-start this server
190
234
 
191
- ## Security & Permissions System
235
+ </details>
192
236
 
193
- Open Edison includes a comprehensive security monitoring system that tracks the "lethal trifecta" of AI agent risks:
237
+ </details>
238
+
239
+ ## 🔐 How Edison prevents data leakages
240
+
241
+ <details>
242
+ <summary>🔱 The lethal trifecta, agent lifecycle management</summary>
243
+
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/):
245
+
246
+ <img src="media/lethal-trifecta.png" alt="The lethal trifecta diagram showing the three key AI agent security risks" width="70%">
194
247
 
195
248
  1. **Private data access** - Access to sensitive local files/data
196
249
  2. **Untrusted content exposure** - Exposure to external/web content
197
250
  3. **External communication** - Ability to write/send data externally
198
251
 
252
+ <img src="media/pam-diagram.png" alt="Privileged Access Management (PAM) example showing the lethal trifecta in action" width="90%">
253
+
199
254
  The configuration allows you to classify these risks across **tools**, **resources**, and **prompts** using separate configuration files.
200
255
 
201
256
  In addition to trifecta, we track Access Control Level (ACL) for each tool call,
202
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.
203
258
  If a write operation is attempted to a lower ACL level, it is blocked.
204
259
 
205
- ### Tool Permissions (`tool_permissions.json`)
260
+ ### 🧰 Tool Permissions (`tool_permissions.json`)
206
261
 
207
262
  Defines security classifications for MCP tools. See full file: [tool_permissions.json](tool_permissions.json), it looks like:
208
263
 
@@ -219,6 +274,9 @@ Defines security classifications for MCP tools. See full file: [tool_permissions
219
274
  }
220
275
  ```
221
276
 
277
+ <details>
278
+ <summary>📁 Resource Permissions (`resource_permissions.json`)</summary>
279
+
222
280
  ### Resource Permissions (`resource_permissions.json`)
223
281
 
224
282
  Defines security classifications for resource access patterns. See full file: [resource_permissions.json](resource_permissions.json), it looks like:
@@ -230,6 +288,11 @@ Defines security classifications for resource access patterns. See full file: [r
230
288
  }
231
289
  ```
232
290
 
291
+ </details>
292
+
293
+ <details>
294
+ <summary>💬 Prompt Permissions (`prompt_permissions.json`)</summary>
295
+
233
296
  ### Prompt Permissions (`prompt_permissions.json`)
234
297
 
235
298
  Defines security classifications for prompt types. See full file: [prompt_permissions.json](prompt_permissions.json), it looks like:
@@ -241,7 +304,9 @@ Defines security classifications for prompt types. See full file: [prompt_permis
241
304
  }
242
305
  ```
243
306
 
244
- ### Wildcard Patterns
307
+ </details>
308
+
309
+ ### Wildcard Patterns ✨
245
310
 
246
311
  All permission types support wildcard patterns:
247
312
 
@@ -249,21 +314,29 @@ All permission types support wildcard patterns:
249
314
  - **Resources**: `scheme:*` (e.g., `file:*` matches all file resources)
250
315
  - **Prompts**: `type:*` (e.g., `template:*` matches all template prompts)
251
316
 
252
- ### Security Monitoring
317
+ ### Security Monitoring 🕵️
253
318
 
254
319
  **All items must be explicitly configured** - unknown tools/resources/prompts will be rejected for security.
255
320
 
256
321
  Use the `get_security_status` tool to monitor your session's current risk level and see which capabilities have been accessed. When the lethal trifecta is achieved (all three risk flags set), further potentially dangerous operations are blocked.
257
322
 
258
- ## Documentation
323
+ </details>
324
+
325
+
326
+
327
+ ## Documentation 📚
259
328
 
260
329
  📚 **Complete documentation available in [`docs/`](docs/)**
261
330
 
262
- - **[Getting Started](docs/quick-reference/config_quick_start.md)** - Quick setup guide
263
- - **[Configuration](docs/core/configuration.md)** - Complete configuration reference
264
- - **[API Reference](docs/quick-reference/api_reference.md)** - REST API documentation
265
- - **[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
266
335
 
267
- ## License
336
+
337
+ <details>
338
+ <summary>📄 License</summary>
268
339
 
269
340
  GPL-3.0 License - see [LICENSE](LICENSE) for details.
341
+
342
+ </details>
@@ -2,12 +2,14 @@
2
2
  "server": {
3
3
  "host": "0.0.0.0",
4
4
  "port": 3000,
5
- "api_key": "dev-api-key-change-me-2"
5
+ "api_key": "dev-api-key-change-me"
6
6
  },
7
+ "autoconfig_url": "https://api.edison.watch/api/config-perms",
7
8
  "logging": {
8
9
  "level": "INFO",
9
10
  "database_path": "sessions.db"
10
11
  },
12
+ "edison-watch-api-key": "change-me",
11
13
  "mcp_servers": [
12
14
  {
13
15
  "name": "filesystem",
@@ -52,7 +54,7 @@
52
54
  "./test.db"
53
55
  ],
54
56
  "env": {},
55
- "enabled": false,
57
+ "enabled": true,
56
58
  "roots": []
57
59
  },
58
60
  {
@@ -90,6 +92,18 @@
90
92
  ],
91
93
  "env": {},
92
94
  "enabled": false
95
+ },
96
+ {
97
+ "name": "zapier",
98
+ "command": "npx",
99
+ "args": [
100
+ "-y",
101
+ "mcp-remote",
102
+ "https://mcp.zapier.com/api/mcp/s/{access_token}/mcp"
103
+ ],
104
+ "env": {},
105
+ "enabled": false,
106
+ "roots": []
93
107
  }
94
108
  ]
95
109
  }