openvibers/openvibe.examples Commits
README and STATUS.json are current (roadmap WS-U task 3): the README gains Purpose, Capabilities (none implemented; the developer-app grants the examples use at Media, Events, Tools and Codes, and the chat bot's Live token), Security (SECURITY.md, env-only configuration, the public-surface and offline checks) and Deploy (nothing deployed; CI only) sections. The pins it names are the ones the packages use: openvibe-sdk v0.11.0 (was v0.4.0) and openvibe-contracts v0.49.0 for the mod manifest (was v0.28.0). STATUS.json names the same pins, gains deployed false and features, and is updated 2026-09-28. npm test passes on Node 22 (14/14).
Changes
@@@ -9,13 +9,19 @@ of them (Media, Events pull, a Tools job) against the real platform with your owis not part of CI or `npm test`, and it was not run against production as part of this release.`npm run developer-path` is the Wave 20 exit check (account to Media and Events to revokedcredentials); CI runs it against the mock platform, and a person runs it against production.--**Built on:** [openvibe-sdk v0.4.0](https://github.com/OpenVibers/OpenVibe.SDK/tree/v0.4.0), and--openvibe-contracts v0.28.0 for the mod manifest.++**Built on:** [openvibe-sdk v0.11.0](https://github.com/OpenVibers/OpenVibe.SDK/tree/v0.11.0), and++openvibe-contracts v0.49.0 for the mod manifest.**Plan:** OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026), §15.1and §18.9; roadmap Wave 20, §30 (public SDK surface), ADR-014 (developer projects).**License:** MIT ([LICENSE](LICENSE)), so you can copy any example into your own project. TheOpenVibe services themselves are AGPL-3.0.++## Purpose++++Show, with code a developer can copy, how an app outside the network uses OpenVibe: only the public++SDK, scoped developer-app credentials and public APIs, never a loopback key or a first-party database.++Each example is small, runs on its own and proves one thing with a smoke test.++## The examples| Example | What it proves | Uses |@@@ -259,7 +265,7 @@ Repository checks (`test/`):value in a `.env.example`.- `structure.test.js` checks the nine examples are complete and copyable: README with "What itproves" and "Run it against the real platform", a `.env.example` that names every variable the-- code reads, MIT license, `openvibe-sdk` pinned to the v0.4.0 tag, no `file:` links; and that++ code reads, MIT license, `openvibe-sdk` pinned to the v0.11.0 tag, no `file:` links; and that`npm run e2e` is outside CI and `npm test` and refuses to start without its variables; and thatCI runs the developer path against the mock platform only.- `developer-path.test.js` runs the developer path against the mock platform and checks the@@@ -292,10 +298,19 @@ test/public-surface.test.js, test/structure.test.js## Depends on--- OpenVibe.SDK (v0.4.0), OpenVibe.Contracts (v0.28.0, mod manifest only)++- OpenVibe.SDK (v0.11.0), OpenVibe.Contracts (v0.49.0, mod manifest only)- at run time against the real platform: Network (tokens, registry, developer projects), Events,Media, Tools, Chat (on openvibe.live)++## Capabilities++++Examples implements no capability (its manifest lists none). The examples call the platform as a++developer app with the grants a sandbox project asks for (`npm run new-app`): `media.object.upload`++and `media.object.read` (Media), `events.app.publish`, `events.app.read` and `events.app.subscribe`++(Events), and `tools.job.create`, `tools.job.read` and `tools.job.cancel` (Tools); a public browser app++gets `media.object.read` only. The developer path check also uses `codes.release.manage` (Codes). The++chat bot uses a Live `hbt_` token with scope `chat`, because `chat.message.send` is first-party.++## Acceptance- CI runs every example: **yes**, against the SDK's mock platform (and a small Chat WebSocket@@@ -314,6 +329,21 @@ test/public-surface.test.js, test/structure.test.js- No example needs a loopback-only internal key or first-party database access: **yes**, enforcedby `test/public-surface.test.js`.++## Security++++Reporting a vulnerability: [SECURITY.md](SECURITY.md). Configuration is environment variables only;++secrets are never logged or sent to a browser, and `.env.example` files hold names, not values++(`test/public-surface.test.js` fails on a secret value there, on the loopback shared-key header and on++internal routes or ports). Every smoke test replaces `fetch` with one that throws, so no test reaches the++network. `npm run developer-path` refuses to run against production in CI.++++## Deploy++++Nothing is deployed from this repository: it has no unit, port or env file and is not published as a++package. CI (`.github/workflows/ci.yml`) runs `npm test` and the developer path against the mock++platform on every push. Copy an example, or start one with `create-openvibe-app`, and deploy it as your++own app.++---Part of the [OpenVibe network](https://openvibe.network). Built in the open by [OpenVibers](https://github.com/OpenVibers).@@@ -4,8 +4,18 @@"code": true,"wave": "W20","version": "0.3.0",-- "sdk": "openvibe-sdk v0.4.0",-- "contracts": "openvibe-contracts v0.28.0 (mod-manifest example)",++ "sdk": "openvibe-sdk v0.11.0",++ "contracts": "openvibe-contracts v0.49.0 (mod-manifest example)",++ "deployed": false,++ "deployment": "none: a repository with CI, not a runtime and not a published package",++ "features": [++ "nine copyable examples: browser app, Node server app, Media uploader, event subscriber, webhook consumer, tool job, OAuth app, chat bot, mod manifest",++ "smoke tests against openvibe-sdk/testing's mock platform, offline",++ "create-openvibe-app scaffolder",++ "npm run e2e against the real platform (on demand)",++ "developer path check (mock in CI, real on demand)",++ "public-surface check: no loopback keys, internal routes or secret values"++ ],"ci": "every example's smoke test runs on Node 22.22.1 against openvibe-sdk/testing's mock platform (developer-app rules for Events, Media and Tools as in production) plus a local Chat WebSocket mock; none reaches the network; a second job runs the developer path check (scripts/developer-path.js) against the same mock platform","e2e": "npm run e2e runs media-uploader, event-subscriber (pull) and tool-job against the real platform with a sandbox app's OV_CLIENT_ID/OV_CLIENT_SECRET/OV_PROJECT_ID; on demand only, not in CI or npm test; not run against production as part of this release","platform": "sandbox developer path (projects, sandbox grants, app tokens for openvibe.media/events/tools, Media project tenant, Events app.<project_key>.* events, Tools jobs, CORS-open discovery) verified in production on 2026-09-23 by the platform's W20 exit check (a curl script against the public endpoints); that check is now committed as npm run developer-path (SDK and examples, plus credential rotation, revocation and archive), which runs in CI against the mock platform and on demand against production (credentials from env only; refuses in CI against production); not yet run against production",@@@ -17,5 +27,5 @@"mod publishing is first-party"],"plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026), §15.1, §18.9; roadmap Wave 20, §30, ADR-014",-- "updated": "2026-09-23"++ "updated": "2026-09-28"}
@@ -9,13 +9,19 @@ of them (Media, Events pull, a Tools job) against the real platform with your ow
@@ -9,13 +9,19 @@ of them (Media, Events pull, a Tools job) against the real platform with your ow
is not part of CI or `npm test`, and it was not run against production as part of this release.
is not part of CI or `npm test`, and it was not run against production as part of this release.
`npm run developer-path` is the Wave 20 exit check (account to Media and Events to revoked
`npm run developer-path` is the Wave 20 exit check (account to Media and Events to revoked
credentials); CI runs it against the mock platform, and a person runs it against production.
credentials); CI runs it against the mock platform, and a person runs it against production.
-**Built on:** [openvibe-sdk v0.4.0](https://github.com/OpenVibers/OpenVibe.SDK/tree/v0.4.0), and
-openvibe-contracts v0.28.0 for the mod manifest.
+**Built on:** [openvibe-sdk v0.11.0](https://github.com/OpenVibers/OpenVibe.SDK/tree/v0.11.0), and
+openvibe-contracts v0.49.0 for the mod manifest.
**Plan:** OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026), §15.1
**Plan:** OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026), §15.1
and §18.9; roadmap Wave 20, §30 (public SDK surface), ADR-014 (developer projects).
and §18.9; roadmap Wave 20, §30 (public SDK surface), ADR-014 (developer projects).
**License:** MIT ([LICENSE](LICENSE)), so you can copy any example into your own project. The
**License:** MIT ([LICENSE](LICENSE)), so you can copy any example into your own project. The
OpenVibe services themselves are AGPL-3.0.
OpenVibe services themselves are AGPL-3.0.
+## Purpose
+
+Show, with code a developer can copy, how an app outside the network uses OpenVibe: only the public
+SDK, scoped developer-app credentials and public APIs, never a loopback key or a first-party database.
+Each example is small, runs on its own and proves one thing with a smoke test.
+
## The examples
## The examples
| Example | What it proves | Uses |
| Example | What it proves | Uses |
@@ -259,7 +265,7 @@ Repository checks (`test/`):
@@ -259,7 +265,7 @@ Repository checks (`test/`):
value in a `.env.example`.
value in a `.env.example`.
- `structure.test.js` checks the nine examples are complete and copyable: README with "What it
- `structure.test.js` checks the nine examples are complete and copyable: README with "What it
proves" and "Run it against the real platform", a `.env.example` that names every variable the
proves" and "Run it against the real platform", a `.env.example` that names every variable the
- code reads, MIT license, `openvibe-sdk` pinned to the v0.4.0 tag, no `file:` links; and that
+ code reads, MIT license, `openvibe-sdk` pinned to the v0.11.0 tag, no `file:` links; and that
`npm run e2e` is outside CI and `npm test` and refuses to start without its variables; and that
`npm run e2e` is outside CI and `npm test` and refuses to start without its variables; and that
CI runs the developer path against the mock platform only.
CI runs the developer path against the mock platform only.
- `developer-path.test.js` runs the developer path against the mock platform and checks the
- `developer-path.test.js` runs the developer path against the mock platform and checks the
@@ -292,10 +298,19 @@ test/public-surface.test.js, test/structure.test.js
@@ -292,10 +298,19 @@ test/public-surface.test.js, test/structure.test.js
## Depends on
## Depends on
-- OpenVibe.SDK (v0.4.0), OpenVibe.Contracts (v0.28.0, mod manifest only)
+- OpenVibe.SDK (v0.11.0), OpenVibe.Contracts (v0.49.0, mod manifest only)
- at run time against the real platform: Network (tokens, registry, developer projects), Events,
- at run time against the real platform: Network (tokens, registry, developer projects), Events,
Media, Tools, Chat (on openvibe.live)
Media, Tools, Chat (on openvibe.live)
+## Capabilities
+
+Examples implements no capability (its manifest lists none). The examples call the platform as a
+developer app with the grants a sandbox project asks for (`npm run new-app`): `media.object.upload`
+and `media.object.read` (Media), `events.app.publish`, `events.app.read` and `events.app.subscribe`
+(Events), and `tools.job.create`, `tools.job.read` and `tools.job.cancel` (Tools); a public browser app
+gets `media.object.read` only. The developer path check also uses `codes.release.manage` (Codes). The
+chat bot uses a Live `hbt_` token with scope `chat`, because `chat.message.send` is first-party.
+
## Acceptance
## Acceptance
- CI runs every example: **yes**, against the SDK's mock platform (and a small Chat WebSocket
- CI runs every example: **yes**, against the SDK's mock platform (and a small Chat WebSocket
@@ -314,6 +329,21 @@ test/public-surface.test.js, test/structure.test.js
@@ -314,6 +329,21 @@ test/public-surface.test.js, test/structure.test.js
- No example needs a loopback-only internal key or first-party database access: **yes**, enforced
- No example needs a loopback-only internal key or first-party database access: **yes**, enforced
by `test/public-surface.test.js`.
by `test/public-surface.test.js`.
+## Security
+
+Reporting a vulnerability: [SECURITY.md](SECURITY.md). Configuration is environment variables only;
+secrets are never logged or sent to a browser, and `.env.example` files hold names, not values
+(`test/public-surface.test.js` fails on a secret value there, on the loopback shared-key header and on
+internal routes or ports). Every smoke test replaces `fetch` with one that throws, so no test reaches the
+network. `npm run developer-path` refuses to run against production in CI.
+
+## Deploy
+
+Nothing is deployed from this repository: it has no unit, port or env file and is not published as a
+package. CI (`.github/workflows/ci.yml`) runs `npm test` and the developer path against the mock
+platform on every push. Copy an example, or start one with `create-openvibe-app`, and deploy it as your
+own app.
+
---
---
Part of the [OpenVibe network](https://openvibe.network). Built in the open by [OpenVibers](https://github.com/OpenVibers).
Part of the [OpenVibe network](https://openvibe.network). Built in the open by [OpenVibers](https://github.com/OpenVibers).
@@ -4,8 +4,18 @@
@@ -4,8 +4,18 @@
"code": true,
"code": true,
"wave": "W20",
"wave": "W20",
"version": "0.3.0",
"version": "0.3.0",
- "sdk": "openvibe-sdk v0.4.0",
- "contracts": "openvibe-contracts v0.28.0 (mod-manifest example)",
+ "sdk": "openvibe-sdk v0.11.0",
+ "contracts": "openvibe-contracts v0.49.0 (mod-manifest example)",
+ "deployed": false,
+ "deployment": "none: a repository with CI, not a runtime and not a published package",
+ "features": [
+ "nine copyable examples: browser app, Node server app, Media uploader, event subscriber, webhook consumer, tool job, OAuth app, chat bot, mod manifest",
+ "smoke tests against openvibe-sdk/testing's mock platform, offline",
+ "create-openvibe-app scaffolder",
+ "npm run e2e against the real platform (on demand)",
+ "developer path check (mock in CI, real on demand)",
+ "public-surface check: no loopback keys, internal routes or secret values"
+ ],
"ci": "every example's smoke test runs on Node 22.22.1 against openvibe-sdk/testing's mock platform (developer-app rules for Events, Media and Tools as in production) plus a local Chat WebSocket mock; none reaches the network; a second job runs the developer path check (scripts/developer-path.js) against the same mock platform",
"ci": "every example's smoke test runs on Node 22.22.1 against openvibe-sdk/testing's mock platform (developer-app rules for Events, Media and Tools as in production) plus a local Chat WebSocket mock; none reaches the network; a second job runs the developer path check (scripts/developer-path.js) against the same mock platform",
"e2e": "npm run e2e runs media-uploader, event-subscriber (pull) and tool-job against the real platform with a sandbox app's OV_CLIENT_ID/OV_CLIENT_SECRET/OV_PROJECT_ID; on demand only, not in CI or npm test; not run against production as part of this release",
"e2e": "npm run e2e runs media-uploader, event-subscriber (pull) and tool-job against the real platform with a sandbox app's OV_CLIENT_ID/OV_CLIENT_SECRET/OV_PROJECT_ID; on demand only, not in CI or npm test; not run against production as part of this release",
"platform": "sandbox developer path (projects, sandbox grants, app tokens for openvibe.media/events/tools, Media project tenant, Events app.<project_key>.* events, Tools jobs, CORS-open discovery) verified in production on 2026-09-23 by the platform's W20 exit check (a curl script against the public endpoints); that check is now committed as npm run developer-path (SDK and examples, plus credential rotation, revocation and archive), which runs in CI against the mock platform and on demand against production (credentials from env only; refuses in CI against production); not yet run against production",
"platform": "sandbox developer path (projects, sandbox grants, app tokens for openvibe.media/events/tools, Media project tenant, Events app.<project_key>.* events, Tools jobs, CORS-open discovery) verified in production on 2026-09-23 by the platform's W20 exit check (a curl script against the public endpoints); that check is now committed as npm run developer-path (SDK and examples, plus credential rotation, revocation and archive), which runs in CI against the mock platform and on demand against production (credentials from env only; refuses in CI against production); not yet run against production",
@@ -17,5 +27,5 @@
@@ -17,5 +27,5 @@
"mod publishing is first-party"
"mod publishing is first-party"
],
],
"plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026), §15.1, §18.9; roadmap Wave 20, §30, ADR-014",
"plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026), §15.1, §18.9; roadmap Wave 20, §30, ADR-014",
- "updated": "2026-09-23"
+ "updated": "2026-09-28"
}
}