---
title: "OpenVibe.Services: the OpenVibe developer platform"
canonical: "https://openvibe.services/"
updated: null
---

# OpenVibe.Services: the OpenVibe developer platform

HTML: [OpenVibe.Services: the OpenVibe developer platform](https://openvibe.services/)

# Build with the whole network

One console for projects, apps and keys on every OpenVibe service.

[Create a project](/projects) [Read the docs](/docs)

Alpha, open source and free. It never stores a secret.

~~~~
// openvibe-sdk v0.168.0
const sdk = require('openvibe-sdk');
const ov = sdk.createClient();      // public reads need no key

const search = sdk.search.createSearchClient(ov);
const { results } = await search.query('go live');

const registry = sdk.registry.createRegistryClient(ov);
const services = await registry.services();
~~~~

- [services you can call](/docs/services): 28
- [capabilities an app can request](/docs/capabilities?grantable=1): 136
- [event types to subscribe to](/docs/events): 301
- [SDK modules, typed](/docs/sdk): 123
- [services up now, of 57 checked](https://openvibe.network/status): 50

## The building blocks

Every OpenVibe product runs on these, and your app can call the same ones with a project's token.

- [**AI API** Many models, one API](https://ai.openvibe.services/)
- [**Agents** Hand a task to an agent](https://openvibe.actor/docs)
- [**Coding** Coding agents, one router](https://openvibe.codes/)
- [**Compute** Jobs on nodes, per second](https://openvibe.run/)
- [**Storage** S3-compatible zones](https://openvibe.zone/)
- [**Hosting** Host sites and apps](https://openvibe.space/)
- [**Media API** Video, clips and files](https://openvibe.media/)
- [**Events** Topics, cursors, webhooks](https://openvibe.events/)
- [**Search** The network in one query](/docs/api/search)
- [**Sign-in** OAuth 2.0 with PKCE](/oauth)
- [**Payments** Tips and memberships](https://openvibe.vip/)
- [**Chat** Support chat, one tag](https://openvibe.chat/developers)
- [**Tools** Hundreds of tools as APIs](https://openvibe.tools/developers)
- [**Robots** Robots through one gate](https://openvibe.bot/)
- [**Games** Achievements and saves](https://play.openvibe.network/)

[See all 47 service APIs ](/docs/api)

Just here to use OpenVibe? [Chat with Vibe](https://openvibe.chat/vibe) or [see the network](https://openvibe.network/).

## Quick start

openvibe-sdk v0.168.0, for Node and the browser. Public reads need no key.

## Start from a working example

[All examples](https://github.com/OpenVibers/OpenVibe.Examples)

- [**Sign people in with OpenVibe** oauth-app · PKCE, no secret in a web app](https://github.com/OpenVibers/OpenVibe.Examples/tree/main/examples/oauth-app)
- [**Store and serve files** media-uploader · your project's Media space](https://github.com/OpenVibers/OpenVibe.Examples/tree/main/examples/media-uploader)
- [**React to what happens** webhook-consumer · topics and signed webhooks](https://github.com/OpenVibers/OpenVibe.Examples/tree/main/examples/webhook-consumer)
- [**Run tools as jobs** tool-job · follow its stream across restarts](https://github.com/OpenVibers/OpenVibe.Examples/tree/main/examples/tool-job)
- [**Build a chat bot** chat-bot · stays in its room, says it is a bot](https://github.com/OpenVibers/OpenVibe.Examples/tree/main/examples/chat-bot)

 A new app from a template · npx

~~~~
npx --package=https://codeload.github.com/OpenVibers/OpenVibe.Examples/tar.gz/refs/tags/v0.3.0 \
    create-openvibe-app my-app --template web
~~~~

Templates: web, server, bot and mod. [Every way to mod the network](/mod).

 Calls with an app's key · Node and curl

A sandbox app in your project has a client id and secret. Upload a file from Node:

~~~~
// npm i https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.168.0
const sdk = require('openvibe-sdk');
const tokens = sdk.auth.createServiceTokenClient({
    clientId: process.env.OV_CLIENT_ID, clientSecret: process.env.OV_CLIENT_SECRET,
});
const ov = sdk.createClient({ tokenProvider: tokens });
const { unverifiedClaims } = await tokens.getTokenInfo({ audience: 'openvibe.media' });
const media = sdk.media.createMediaClient(ov, { app: unverifiedClaims.project_id });
const file = await media.upload(bytes, { filename: 'logo.png', contentType: 'image/png' });
~~~~

Or get its token over HTTP, from any language:

~~~~
curl -s https://openvibe.network/oauth/token \
  -d grant_type=client_credentials \
  -d client_id="$OV_CLIENT_ID" -d client_secret="$OV_CLIENT_SECRET" \
  -d audience=openvibe.media
# returns {"access_token":"…","token_type":"Bearer","expires_in":300,…}
~~~~

## From account to integration

6 items

## From account to integration

1. **[Create a project](/projects)**Sandbox-only at first; staff switch on production.
2. **Add an app and its key**Its secret shows once; a playground has its grants.
3. **[Ask for capabilities](/docs/capabilities?grantable=1)**Approved inside the project's allowance.
4. **[Get a token](/oauth)**Client credentials, or sign people in with PKCE.
5. **[Receive events](/tools/webhooks)**Subscribe, then verify each delivery's signature.
6. **[Publish a release](/manifests/validate)**Validated; rotate or revoke keys any time.

What a project gets · free today

No plan to buy and no card to add. What a project gets is its limits, and these are the numbers OpenVibe.Events enforces for every project.

| Limit | Sandbox | Production |
| --- | --- | --- |
| Events published per minute | 30 a minute | 120 a minute |
| Event bytes kept | 5 MB | 50 MB |
| Days an event is kept | 7 days | 30 days |
| Days an event can still be replayed | none | 365 days |
| Webhook subscriptions | 5 | 20 |
| Payload size of one event | 64 KB | 64 KB |

These are the limits the service enforces, read from [openvibe.events/limits.json](https://openvibe.events/limits.json).

## Reference

11 links

## Reference

Generated from `openvibe-contracts v0.419.0` and `openvibe-sdk v0.168.0`: [API explorer](/docs/api) · [contracts](/docs/contracts) · [capabilities](/docs/capabilities) · [events](/docs/events) · [services](/docs/services) · [tools](/docs/tools) · [SDK](/docs/sdk) · [all limits](/docs/limits).

One API lists [every resource of a project](/docs/api/services) across every service; [export a project](/docs/export) as one archive any time. Alpha: what works and what does not is on the [transparency page](/policy/transparency).

## Questions developers ask

6 questions

## Questions developers ask

What does it cost?

Nothing today. There is no plan to buy and no card to add; a project gets the limits on this page, which the services themselves enforce.

Do I need permission to start?

No. Sign in, create a project and add a sandbox app; its sandbox capabilities are approved at once. Production is switched on by staff for a project that needs it.

Which languages can I use?

Any that speaks HTTP: every API takes a Bearer token and answers JSON, with RFC 9457 problems for errors. openvibe-sdk adds typed clients for Node and the browser.

Where do my client secrets live?

OpenVibe.Network shows a new secret once and keeps only a hash. This console passes it through in that one response and stores no copy.

Can my users sign in with their OpenVibe account?

Yes. Authorization code with PKCE gives your app a token that acts for the person, carrying only the capabilities your app was granted. A public web app needs no secret.

Is it open source?

Yes. Every OpenVibe service is open source on GitHub under OpenVibers, and the examples are MIT, so you can copy them into your own project.

## Part of OpenVibe

4 items

## More on OpenVibe

One account across every OpenVibe site.

- [**OpenVibe.Exchange** AI models, one account](https://openvibe.exchange/?ov_from=services)
- [**OpenVibe.Run** Run jobs anywhere](https://openvibe.run/?ov_from=services)
- [**OpenVibe.Zone** S3 storage](https://openvibe.zone/?ov_from=services)
- [**OpenVibe.Events** Event streams](https://openvibe.events/?ov_from=services)

[Every OpenVibe site ](https://openvibe.network/sites)

## Recently shipped on OpenVibe.Services

latest 5

[What shipped recently](/updates)
