Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ Executor discovery helpers stay inside Executor's runtime and are meant to be us
- `execute` mirrors MCP guidance and namespace discovery as closely as Pi allows
- when Pi has UI, `execute` handles Executor interaction inline
- when Pi has no UI, `execute` returns a paused interaction and `resume` is available
- the opt-in persistent client channel lets Executor call bounded, read-only workspace capabilities provided by Pi

## Install

Expand All @@ -80,7 +81,9 @@ Configure the extension in `~/.pi/agent/settings.json` or `.pi/settings.json`:
"autoStart": true,
"remoteUrl": "",
"showFooterStatus": true,
"stopLocalOnShutdown": true
"stopLocalOnShutdown": true,
"clientChannelEnabled": false,
"clientChannelProtocol": "auto"
}
}
```
Expand All @@ -90,6 +93,26 @@ Configure the extension in `~/.pi/agent/settings.json` or `.pi/settings.json`:
- `remoteUrl`: required for remote mode
- `showFooterStatus`: show the footer readiness dot
- `stopLocalOnShutdown`: stop Pi-owned local sidecars on session shutdown
- `clientChannelEnabled`: opt in to expose read-only workspace tools, a workspace index resource, and an overview prompt to authenticated Executor sessions
- `clientChannelProtocol`: `"auto"` uses self-host framing for local sidecars and Cloud registration for remote endpoints; set `"self-host"` for a remote self-hosted Executor

The client channel requires `EXECUTOR_ACCESS_TOKEN` in Pi's environment. The
bearer token is sent in `Authorization` headers; Executor's opaque channel
binding is kept in memory and sent in `x-executor-client-token` headers on the
WebSocket and MCP requests. Remote endpoints require HTTPS/WSS; plain HTTP/WS
is allowed only for localhost. Neither token is stored in project settings.
The channel is disabled by default. When enabled, Executor can read
UTF-8 files (up to 1 MiB) and list files under Pi's current workspace; it cannot
write files, follow symbolic links, or traverse outside the workspace. Common
credential paths (including `.env`, `.ssh`, `.aws`, and `.kube`) are excluded.
The connection is session-scoped and reconnects automatically. When enabled, capabilities
from an active `pi-mcp-adapter` session are proxied through its versioned in-process Pi events
bridge; pi-executor does not read MCP configuration files or start/close MCP transports.
Calls use the adapter-managed connections. The opt-in remote channel grants its endpoint the
ability to invoke configured MCP tools, read resources, and get prompts using the adapter
session's authority. Enable it only for trusted Executor endpoints and server configurations.
The channel is opt-in and does not expose local servers when disabled. Enable it with
`/executor-settings`; restart the Pi session after changing the setting.

You can also manage these interactively with `/executor-settings`.

Expand Down
11 changes: 8 additions & 3 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,13 @@
"@executor-js/sdk": "^0.0.1-beta.2",
"@modelcontextprotocol/sdk": "^1.29.0",
"executor": "^1.4.4",
"ws": "^8.20.0",
"zod": "^4.3.6"
},
"devDependencies": {
"@changesets/cli": "^2.30.0",
"@types/bun": "latest",
"@types/ws": "^8.18.1",
"husky": "^9.1.7",
"oxfmt": "^0.43.0",
"oxlint": "^1.58.0",
Expand Down
Loading