{"id":"pg_01M4PM01TFEEFQGKS39J9Z7QSK","space":"openvibe","slug":"openvibe-services","url":"https://openvibe.wiki/w/openvibe/openvibe-services","state":"published","visibility":"public","revision":3,"title":"OpenVibe.Services","summary":"The developer platform: a console over OpenVibe.Network for projects, apps, credentials and grants, plus a merged resource index over every service.","body_markdown":"**OpenVibe.Services** is the developer platform of the OpenVibe network, serving `https://openvibe.services` on port 4930 (service id `services`). It is alpha. Its README describes it as \"one console for projects and apps over OpenVibe.Network\".\n\n## What it does\n\nIt shows and forwards what the signed-in person asks for, with that person's own [[OpenVibe.Network]] token: projects, members, apps, credentials, capability grants and quotas; a per-project usage page from Network's rollups; project export as JSON and a full archive as a zip; OAuth and webhook tools that speak signature v2 only; and Media and Events playgrounds. Its merged resource index reads each authority with its own token and merges the pages, naming any authority it could not read.\n\nIt also sends control requests to the service that holds a resource, which decides:\n- **project resources:** an admin can suspend, resume, stop or delete them (watches, event subscriptions, Actor tasks, Media objects, Space sites, Zone zones);\n- **a person's own resources**, on \"Your resources\": they can stop or resume their robot, archive a chat room, suspend or resume a restream, and delete a paste.\n\nEvery request is idempotent and audited. An agent's sensitive request waits for its owner's approval. Secrets are shown once and never stored. Everything is server-rendered and usable without JavaScript.\n\n## What it does not do yet\n\nThe developer portal moved here from [[OpenVibe.Codes]] on 2026-10-08, when its production data was nil, so nothing was copied. The README's acceptance list says a developer's path from an account to a working integration is only partly shown on production: one run on 2026-09-23 used curl, not the SDK or the playgrounds, is not committed as a repeatable check, and did not cover webhook delivery to an external endpoint, publishing a release or revoking credentials. Inspecting, scoping, rotating and revoking credentials works through Network's API but has not been used on production yet. The community documents (code of conduct, contributing, the moderation policy) are [[OpenVibe.Codes]]' pages.\n\n## How it fits the network\n\nServices depends on [[OpenVibe.Network]] for identity, projects and the registry; on [[OpenVibe.Events]] for the outbox relay and the Events playground; and on [[OpenVibe.Media]] for uploads and the archive. It never copies another authority's data, and it never fetches a URL a developer types.\n\n## Runtime and status\n\nNode 22 and Express 4, PostgreSQL 18 (`ov_services`) and Valkey 9, unit `openvibe-services.service` on `127.0.0.1:4930`. STATUS.json records the stage as \"alpha\" and the service deployed. License: AGPL-3.0.","published_at":"2026-10-11T23:15:33.339Z","revision_published_at":"2026-10-20T22:00:28.435Z","revision_created_at":"2026-10-20T22:00:28.414Z","authorship":{"mode":"imported","workflow":null,"reviewed":false},"infobox":[{"key":"repository","label":"Repository","type":"url","value":"https://github.com/OpenVibers/OpenVibe.Services"},{"key":"domain","label":"Domain","type":"text","value":"openvibe.services"},{"key":"port","label":"Port","type":"number","value":4930},{"key":"runtime","label":"Runtime","type":"text","value":"Node 22/Express 4, PostgreSQL 18"},{"key":"status","label":"Status","type":"text","value":"alpha"},{"key":"license","label":"License","type":"text","value":"AGPL-3.0"}],"citations":[{"url":"https://github.com/OpenVibers/OpenVibe.Services/blob/87212942ee8bc4ba013b18bbb20f0fd05d702a32/README.md","title":"OpenVibe.Services README (commit 8721294)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"The developer platform of the OpenVibe network: one console for projects and apps over OpenVibe.Network","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Services/blob/87212942ee8bc4ba013b18bbb20f0fd05d702a32/README.md","title":"OpenVibe.Services README (commit 8721294)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"It is not committed as a repeatable check, and it did not cover webhook delivery to an external endpoint, publishing a release or revoking credentials.","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Services/blob/87212942ee8bc4ba013b18bbb20f0fd05d702a32/README.md","title":"OpenVibe.Services README (commit 8721294)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"tested against a stand-in; not yet used on production","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Services/blob/87212942ee8bc4ba013b18bbb20f0fd05d702a32/README.md","title":"OpenVibe.Services README (commit 8721294)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"what the signed-in person owns outside any project, such as robots, chat rooms, streams, watches and Actor tasks","license_note":null}],"attachments":[],"links":[{"space":"openvibe","slug":"openvibe-codes"},{"space":"openvibe","slug":"openvibe-events"},{"space":"openvibe","slug":"openvibe-media"},{"space":"openvibe","slug":"openvibe-network"}],"indexability":{"indexable":false,"reasons":["ai_generated_unreviewed"]}}