{
  "schema": "localendpoint.endpoint-plugin-submission-process.v1",
  "lastReviewedUtc": "2026-07-25T22:00:00Z",
  "humanGuideUrl": "/developers/plugins/",
  "catalogUrl": "/endpoint-plugin-catalog.json",
  "installManifestSchemaUrl": "/schemas/localendpoint.endpoint-plugin-install.schema.json",
  "submissionSchemaUrl": "/schemas/localendpoint.endpoint-plugin-submission.schema.json",
  "templateUrls": {
    "readme": "/downloads/plugins/README.md",
    "remoteEndpointsInstallManifest": "/downloads/plugins/remoteendpoints.com.plugin.template.json",
    "memoryEndpointsInstallManifest": "/downloads/plugins/memoryendpoints.com.plugin.template.json",
    "submissionPacket": "/downloads/plugins/localendpoint-plugin-submission-template.json",
    "starterKitZip": "/downloads/plugins/localendpoint-plugin-starter-kit.zip",
    "starterKitReadme": "/downloads/plugins/starter-kit/README.md",
    "proposedInstallManifest": "/downloads/plugins/starter-kit/proposed-endpoint.plugin.template.json",
    "proposedSubmissionPacket": "/downloads/plugins/starter-kit/proposed-endpoint-submission.template.json",
    "validationChecklist": "/downloads/plugins/starter-kit/validation-checklist.md",
    "starterKitInstallSchema": "/downloads/plugins/starter-kit/schemas/localendpoint.endpoint-plugin-install.schema.json",
    "starterKitSubmissionSchema": "/downloads/plugins/starter-kit/schemas/localendpoint.endpoint-plugin-submission.schema.json"
  },
  "currentSelectablePluginIds": [
    "remoteendpoints.com",
    "memoryendpoints.com"
  ],
  "localInstallPathTemplate": "%LOCALAPPDATA%\\LocalEndpoint\\Connect\\Plugins\\{pluginId}.plugin.json",
  "reviewPacketAssembly": [
    {
      "fileName": "{pluginId}.plugin.json",
      "description": "Validated install manifest copied from the starter kit or an accepted RemoteEndpoints.com or MemoryEndpoints.com template."
    },
    {
      "fileName": "{pluginId}-submission.json",
      "description": "Validated submission packet with catalog state, capability justification, privacy URL, threat summary, and evidence links."
    },
    {
      "fileName": "{pluginId}-schema-validation.txt",
      "description": "Redacted syntax and JSON Schema validation output for both manifest and submission packet."
    },
    {
      "fileName": "{pluginId}-connect-evidence.md",
      "description": "Settings > Plugins search, plugin detail, top-level Settings tab behavior for supported tab-ready plugins, and blocked or accepted intake findings."
    },
    {
      "fileName": "{pluginId}-privacy-boundary.md",
      "description": "What stays local; which authenticated private RemoteEndpoints prompts, desktop pictures, progress, and results may traverse the paired channel; and which materials are excluded from public evidence."
    },
    {
      "fileName": "{pluginId}-threat-model.md",
      "description": "Ordinary owner-gated actions, RemoteEndpoints standing authority after install plus enablement plus one-time pairing, exact request/session binding, revocation behavior, and why catalog selection or install metadata alone cannot run anything."
    }
  ],
  "acceptedRemoteEndpointsCapabilities": [
    "away-review",
    "protected-remote-messages",
    "remote-operator-approval"
  ],
  "acceptedRemoteEndpointsCapabilitySemantics": {
    "away-review": "Legacy protocol identifier for the unattended remote-control workflow; it does not limit the product to optional review.",
    "protected-remote-messages": "Authenticated private intent, desktop pictures, progress, and results exchanged through the RemoteEndpoints workflow.",
    "remote-operator-approval": "Legacy protocol identifier; it does not require a human at the target PC to approve each prompt. Independent install, local enablement, and one-time pairing establish standing unattended authority."
  },
  "acceptedMemoryEndpointsCapabilities": [
    "shared-agent-memory",
    "public-safe-memory-save",
    "hosted-memory-search",
    "agent-current-message-lane"
  ],
  "submissionSteps": [
    {
      "id": "download-starter-kit",
      "title": "Download the starter kit",
      "description": "Download the starter-kit ZIP or start from the starter-kit README, proposed install manifest template, proposed submission packet, and validation checklist instead of inventing fields."
    },
    {
      "id": "download-template",
      "title": "Use an accepted template for RemoteEndpoints.com or MemoryEndpoints.com",
      "description": "Use the matching accepted install manifest template for either current search-selectable plugin."
    },
    {
      "id": "validate-schema",
      "title": "Validate schemas",
      "description": "Validate the install manifest and submission packet against the bundled starter-kit schema copies or the published JSON Schemas."
    },
    {
      "id": "assemble-review-packet",
      "title": "Assemble the review packet folder",
      "description": "Create one {pluginId}-review-packet folder containing {pluginId}.plugin.json, {pluginId}-submission.json, {pluginId}-schema-validation.txt, {pluginId}-connect-evidence.md, {pluginId}-privacy-boundary.md, and {pluginId}-threat-model.md."
    },
    {
      "id": "capture-local-evidence",
      "title": "Capture local evidence",
      "description": "Use LocalEndpoint Connect to show plugin search, plugin detail, top-level Settings tab behavior, and blocked or accepted intake findings. RemoteEndpoints evidence must separately show install, enablement, one-time pairing, zero target-side approval per later prompt, and distinct Stop, Pause, Disable, and Revoke behavior."
    },
    {
      "id": "submit-review-packet",
      "title": "Submit review packet",
      "description": "Send the redacted submission JSON, manifest, capability notes, threat model, privacy statement, screenshots, and test evidence through the current LocalEndpoint review channel."
    },
    {
      "id": "wait-for-catalog-state",
      "title": "Wait for catalog state",
      "description": "A plugin is search-selectable or tab-ready only after review and catalog state agree with LocalEndpoint Connect intake behavior."
    }
  ],
  "requiredReviewArtifacts": [
    "install manifest",
    "submission packet",
    "review packet assembly folder",
    "starter-kit validation checklist",
    "capability justification",
    "privacy statement",
    "threat model summary",
    "schema validation evidence",
    "bundled starter-kit schema validation output",
    "LocalEndpoint Connect screenshots or exported evidence",
    "blocked/accepted intake findings"
  ],
  "deniedSubmissionMaterials": [
    "credentials",
    "private logs",
    "raw prompts",
    "generated private text",
    "localhost targets",
    "private network addresses",
    "command strings",
    "model files",
    "local endpoint data"
  ],
  "reviewOutcomes": [
    "accepted",
    "available",
    "planned",
    "blocked"
  ],
  "trustBoundary": "Plugin submission, catalog selection, and setup-file installation alone do not grant runtime authority. Ordinary protected local actions remain owner-gated. For RemoteEndpoints, independent install plus local enablement plus one-time pairing is the explicit standing-authority decision; later authenticated private prompts require zero target-side approvals, and LocalEndpoint Connect performs the Windows work. Stop, Pause, Disable, and Revoke do not roll back completed effects."
}
