# AetherDesk Plugin+

AetherDesk should run as two things at once:

- a local desktop at `http://127.0.0.1:5717`
- an AI tool/plugin surface that MCP-aware agents can attach to

The plugin surface is intentionally not a raw host shell. It exposes bounded tools for status, fast AI reads, the tool view plane, desktop actions, and connector routes.

## Build The Plugin Pack

```powershell
cd C:\Users\issda\AetherDesk
npm run aetherdesk:package:plugin
```

Output:

```text
C:\Users\issda\AetherDesk\dist\aetherdesk-plugin-plus
```

The pack includes:

- `AETHERDESK-PLUGIN-PLUS.json`
- `aetherdesk-plugin-plus.mcp.json`
- `claude_desktop_config.snippet.json`
- `codex-plugin\.codex-plugin\plugin.json`
- `codex-plugin\.mcp.json`
- `codex-plugin\skills\aetherdesk-plugin-plus\SKILL.md`

## MCP Server

The stdio MCP bridge is:

```powershell
node C:\Users\issda\AetherDesk\scripts\aetherdesk-tool-mcp.js
```

An MCP client can use:

```json
{
  "mcpServers": {
    "aetherdesk-plugin-plus": {
      "command": "node",
      "args": ["C:\\Users\\issda\\AetherDesk\\scripts\\aetherdesk-tool-mcp.js"],
      "cwd": "C:\\Users\\issda\\AetherDesk",
      "env": {
        "AETHERDESK_CONNECTOR_BASE_URL": "http://127.0.0.1:5717",
        "AETHERDESK_PORT": "5717"
      }
    }
  }
}
```

## Tool Order For Agents

1. `aetherdesk_local_status`
2. `aetherdesk_start_local` if the server is offline
3. `aetherdesk_ai_desktop` for the fast robotext read
4. `aetherdesk_tool_view_plane` to see every app/tool, including closed virtual views
5. `aetherdesk_open_app` only when a visual window is actually needed

## HTTP Connector

If AetherDesk is already running, agents can also use:

```text
http://127.0.0.1:5717/mcp
http://127.0.0.1:5717/connector
```

The connector exposes the same desktop tools plus ecosystem tools.

## Safety Boundary

- No secrets are hardcoded into the plugin pack.
- Shell profile execution is disabled unless the server explicitly sets `AETHERDESK_CONNECTOR_ALLOW_SHELL=1`.
- Localhost usage does not require token auth.
- Any public/tunneled connector should set `AETHERDESK_CONNECTOR_AUTH_MODE=token` and use a bearer token.

This makes AetherDesk usable by multiple AIs as a shared local computer surface while keeping the human-visible desktop available when needed.
