Skip to content

Commit 942499d

Browse files
authored
docs: polish public docs wording (#12)
Align the security and trust-model language across the site, architecture docs, and package READMEs. Clarify the remote executor setup by separating the host-side and runner-side examples.
1 parent 4939d93 commit 942499d

16 files changed

Lines changed: 41 additions & 31 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
# execbox
44

5-
Secure code execution for [Model Context Protocol](https://modelcontextprotocol.io/) tools and wrapped MCP servers.
5+
Portable code execution for [Model Context Protocol](https://modelcontextprotocol.io/) tools and wrapped MCP servers.
66

77
[![License](https://img.shields.io/github/license/aallam/execbox?style=flat-square)](https://github.com/aallam/execbox/blob/main/LICENSE)
88
[![Docs](https://img.shields.io/badge/docs-site-0ea5e9?style=flat-square)](https://execbox.aallam.com)
99
[![Packages](https://img.shields.io/badge/packages-7-111827?style=flat-square)](#package-map)
1010

1111
</div>
1212

13-
Execbox turns host tool catalogs into callable guest namespaces, supports MCP wrapping on both sides of the boundary, and lets you choose where guest JavaScript runs: in-process, in a worker, in a child process, or behind your own remote transport.
13+
Execbox turns host tool catalogs into callable guest namespaces, supports MCP wrapping on both sides of the boundary, and lets you place guest JavaScript where it fits your deployment: in-process, in a worker, in a child process, or behind your own remote transport.
1414

1515
## Package Map
1616

docs/architecture/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ sequenceDiagram
8585

8686
## Trust Model and Security Posture
8787

88-
Execbox reduces accidental exposure, but it does not claim a hard security boundary for hostile code in its default deployment model.
88+
Execbox provides defense-in-depth controls around guest execution, but hard isolation still depends on the executor and deployment boundary you choose.
8989

9090
```mermaid
9191
flowchart LR
@@ -103,7 +103,7 @@ flowchart LR
103103

104104
Key implications:
105105

106-
- The real capability boundary is the provider/tool surface, not the JavaScript syntax itself.
106+
- The provider/tool surface is the capability boundary, not the JavaScript syntax itself.
107107
- Fresh runtimes, schema validation, JSON-only boundaries, timeouts, memory limits, and bounded logs are defense-in-depth features.
108108
- In-process execution still shares the host process. Use a separate process, container, VM, or similar boundary when the code source is hostile or multi-tenant.
109109
- Wrapping third-party MCP servers is a separate dependency-trust decision from letting end users author guest code.

docs/architecture/execbox-executors.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ The four executors expose the same public result shape, but they enforce limits
122122

123123
## Security and Operational Trade-offs
124124

125-
- All four executors are documented as best-effort isolation, not hard hostile-code boundaries.
125+
- All four executors provide defense-in-depth measures, not standalone hard hostile-code boundaries.
126126
- QuickJS is the easiest operational default and has the cleanest shared runtime story.
127127
- Remote execution keeps the same executor API while moving the runtime behind an app-defined boundary, but execbox deliberately does not ship the network stack for you.
128128
- Process-backed QuickJS gives a stronger lifecycle split than worker threads, but it is still not equivalent to a container or VM boundary.

docs/architecture/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@ At a high level, execbox always follows the same model:
5656

5757
## Trust model and security posture
5858

59-
Execbox reduces accidental exposure, but it does not claim a hard security boundary for hostile code in its default deployment model.
59+
Execbox provides defense-in-depth controls around guest execution, but hard isolation still depends on the executor and deployment boundary you choose.
6060

6161
Key implications:
6262

63-
- The real capability boundary is the provider/tool surface, not the JavaScript syntax itself.
63+
- The provider/tool surface is the capability boundary, not the JavaScript syntax itself.
6464
- Fresh runtimes, schema validation, JSON-only boundaries, timeouts, memory limits, and bounded logs are defense-in-depth features.
6565
- In-process execution still shares the host process. Use a separate process, container, VM, or similar boundary when the code source is hostile or multi-tenant.
6666
- Wrapping third-party MCP servers is a separate dependency-trust decision from letting end users author guest code.

docs/examples.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Examples
22

3-
Use the examples when you want a runnable starting point rather than package-by-package reference material.
3+
Use these examples when you want a runnable starting point instead of reading package-by-package reference material first.
44

55
## Run everything
66

@@ -17,7 +17,7 @@ npm run examples
1717
| [`execbox-basic.ts`](https://github.com/aallam/execbox/blob/main/examples/execbox-basic.ts) | Resolve a provider and execute guest code with QuickJS. | You want the smallest end-to-end example. |
1818
| [`execbox-process.ts`](https://github.com/aallam/execbox/blob/main/examples/execbox-process.ts) | Run the same provider flow inside a child-process executor. | You want a stronger lifecycle boundary than in-process execution. |
1919
| [`execbox-worker.ts`](https://github.com/aallam/execbox/blob/main/examples/execbox-worker.ts) | Run the same provider flow inside a worker-thread executor. | You want QuickJS off the main thread. |
20-
| [`execbox-remote.ts`](https://github.com/aallam/execbox/blob/main/examples/execbox-remote.ts) | Run the same provider flow through a transport-backed executor. | You already own the remote boundary and want execbox to plug into it. |
20+
| [`execbox-remote.ts`](https://github.com/aallam/execbox/blob/main/examples/execbox-remote.ts) | Run the same provider flow through a transport-backed executor. | You already own the runtime boundary and want execbox to plug into it. |
2121
| [`execbox-mcp-provider.ts`](https://github.com/aallam/execbox/blob/main/examples/execbox-mcp-provider.ts) | Wrap MCP tools into a provider and execute against them. | You want guest code to call upstream MCP tools as code. |
2222
| [`execbox-mcp-server.ts`](https://github.com/aallam/execbox/blob/main/examples/execbox-mcp-server.ts) | Expose `mcp_search_tools`, `mcp_execute_code`, and `mcp_code`. | You want downstream MCP clients to execute code against a wrapped tool namespace. |
2323
| [`execbox-isolated-vm-basic.ts`](https://github.com/aallam/execbox/blob/main/examples/execbox-isolated-vm-basic.ts) | Run the same provider flow on the `isolated-vm` backend. | You explicitly want the `isolated-vm` runtime. |

docs/getting-started.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Getting Started
22

3-
Execbox works best when you start small: define one provider, run one snippet, then choose a stronger boundary only when your deployment needs it.
3+
Execbox works best when you start with QuickJS, get one provider flow working, and then choose a stronger boundary only when your deployment needs it.
44

55
## Requirements
66

@@ -46,7 +46,7 @@ console.log(result);
4646

4747
## Which package should I use?
4848

49-
- Use `@execbox/quickjs` first unless you already know you need a stronger boundary.
49+
- Use `@execbox/quickjs` first unless you already know you need a separate runtime boundary.
5050
- Use `@execbox/process` when you want QuickJS semantics in a separate child process.
5151
- Use `@execbox/worker` when you want QuickJS off the main thread with pooled workers.
5252
- Use `@execbox/remote` when your runtime already lives behind an application-owned transport.

docs/index.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ titleTemplate: false
66
hero:
77
name: execbox
88
text: Portable code execution for MCP tools
9-
tagline: Turn host tool catalogs into callable code, choose the execution boundary that fits your deployment, and keep your security claims honest.
9+
tagline: Turn host tool catalogs into callable code, add defense-in-depth controls around guest execution, and choose the boundary that fits your deployment.
1010
actions:
1111
- theme: brand
1212
text: Getting Started
@@ -49,10 +49,10 @@ That split gives you one execution contract across QuickJS, worker-thread, child
4949

5050
## Security posture
5151

52-
Execbox is intentionally conservative about its claims:
52+
Execbox provides defense-in-depth controls around guest code execution:
5353

5454
- It provides fresh runtimes, JSON-only boundaries, schema validation, bounded logs, and execution limits.
55-
- It does **not** claim a hard security boundary for hostile code in its default deployment model.
56-
- The real capability boundary is the provider/tool surface you expose.
55+
- Hard isolation depends on the executor and deployment boundary you choose.
56+
- The provider/tool surface is the capability boundary.
5757

5858
Read [Security](/security) before deciding which executor to use in production.

docs/security.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Security & Boundaries
22

3-
Execbox reduces accidental exposure, but it does not market itself as a hard security boundary for hostile code in its default deployment model.
3+
Execbox provides defense-in-depth controls for guest code execution. The isolation level you get depends on the executor and deployment boundary you choose.
44

55
## What execbox does provide
66

@@ -21,7 +21,7 @@ Execbox reduces accidental exposure, but it does not market itself as a hard sec
2121

2222
The provider/tool surface is the capability boundary.
2323

24-
If guest code can call a dangerous tool, guest code can exercise that authority. Execbox changes how tool access is exposed and controlled; it does not erase the authority behind the tool itself.
24+
Providers are explicit capability grants. If guest code can call a dangerous tool, guest code can exercise that authority. Execbox changes how tool access is exposed and controlled; it does not erase the authority behind the tool itself.
2525

2626
## Choosing the right boundary
2727

examples/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Runnable examples for the `@execbox/*` package family.
55
[![Examples](https://img.shields.io/badge/examples-runnable-0ea5e9?style=flat-square)](https://github.com/aallam/execbox/tree/main/examples)
66
[![CI](https://img.shields.io/github/actions/workflow/status/aallam/execbox/ci.yml?branch=main&style=flat-square&label=CI)](https://github.com/aallam/execbox/actions/workflows/ci.yml)
77

8-
## Run Them
8+
## Run the examples
99

1010
```bash
1111
npm install
@@ -20,6 +20,8 @@ npm run example:execbox-isolated-vm
2020
npm run verify:isolated-vm
2121
```
2222

23+
See the public [Examples docs](https://execbox.aallam.com/examples) for when to start with each example.
24+
2325
## Execbox
2426

2527
| File | What it shows |

packages/core/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ Swap in `@execbox/remote` when you want the same API but a caller-managed remote
5050
## Security Posture
5151

5252
- Execbox gives you fresh execution state, JSON-only tool boundaries, schema validation, timeout handling, memory limits, and bounded logs.
53-
- Execbox does not give you a hard security boundary for hostile code by itself. The actual boundary depends on which executor you pair it with.
53+
- Hard isolation depends on the executor and deployment boundary you pair with `@execbox/core`.
5454
- Providers are explicit capability grants. Every tool you expose is authority you are handing to guest code.
5555
- In the default deployment model, provider and MCP tool definitions are controlled by the application, not by the end user.
5656
- Third-party MCP integrations should be reviewed as dependency-trust decisions, not folded into the primary end-user attacker model.

0 commit comments

Comments
 (0)