docs: reflect the plugin-runner security tiers
- plugins: the Windows runner task runs as LocalService now, and public-registry names need --allow-public-registry - automation + SDK README: connect()'s zero-config credential is the scoped plugin token; pairing administration and hook registration need an explicit PUNKTFUNK_MGMT_TOKEN opt-in Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -157,6 +157,13 @@ The canonical "decide, don't just observe" pattern — approve pairing from your
|
||||
`POST /api/v1/native/pending/{id}/approve` when you tap yes. The full API is documented at
|
||||
[`/api/docs`](/api) on your host.
|
||||
|
||||
> A unit under the runner auto-connects with the host's **scoped plugin token**, which covers
|
||||
> the everyday surface (status, library, sessions, events) but deliberately not **hook
|
||||
> registration** or **pairing administration** — so a plugin defect can't admit new devices or
|
||||
> install commands. A script that should administer pairing (like the approval pattern above)
|
||||
> opts into the full-admin credential explicitly: set `PUNKTFUNK_MGMT_TOKEN` on the unit (e.g.
|
||||
> a `systemctl --user edit punktfunk-scripting` drop-in) or pass `{ token }` to `connect()`.
|
||||
|
||||
## Recipe: full controller passthrough (VirtualHere)
|
||||
|
||||
To get a controller's *native* features on the host — DualSense gyro, touchpad, adaptive
|
||||
|
||||
@@ -31,8 +31,9 @@ punktfunk-host plugins enable # turn the runner on (once)
|
||||
<Tab value="Windows">
|
||||
|
||||
Run these from an **elevated** PowerShell — right-click **PowerShell** → **Run as administrator**.
|
||||
The plugins directory lives under `%ProgramData%\punktfunk`, which is admin-owned, and the runner
|
||||
task runs as SYSTEM.
|
||||
The plugins directory lives under `%ProgramData%\punktfunk`, which is admin-owned. The runner task
|
||||
itself runs as the low-privilege `NT AUTHORITY\LocalService` account — `plugins enable` sets that
|
||||
up (including read access to the runner's scoped API token).
|
||||
|
||||
```powershell
|
||||
punktfunk-host plugins add playnite # or: rom-manager
|
||||
@@ -62,11 +63,13 @@ The runner is **opt-in**: `plugins add` installs, `plugins enable` turns it on.
|
||||
| `punktfunk-host plugins disable` | Stop + disable the runner. |
|
||||
| `punktfunk-host plugins status` | Is the runner enabled and running? |
|
||||
|
||||
A bare name resolves to the first-party package — `playnite` installs `@punktfunk/plugin-playnite`.
|
||||
A scoped (`@scope/pkg`) or `punktfunk-plugin-*` name is used verbatim, so third-party plugins work
|
||||
the same way.
|
||||
A bare name resolves to the first-party package — `playnite` installs `@punktfunk/plugin-playnite`,
|
||||
always from Punktfunk's own package registry. Any other name (`punktfunk-plugin-*`, a foreign
|
||||
`@scope/pkg`) would install from the **public npm registry** and is refused unless you add
|
||||
`--allow-public-registry` — a guard against typos and look-alike packages pulling untrusted code
|
||||
onto your host.
|
||||
|
||||
> Plugins are operator-installed code that runs as the host user — they can launch games and run
|
||||
> Plugins are operator-installed code with operator privileges — they can launch games and run
|
||||
> commands. Install only plugins you trust, from a registry you control.
|
||||
|
||||
## ROM Manager
|
||||
|
||||
Reference in New Issue
Block a user