AiOfferPool ai.offer-pool@1
Generated at from
openvibe-contracts v0.419.0 and
openvibe-sdk v0.161.0.
- Version
- 1.0.0
- Owner
- ai
- Visibility
- first-party
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/ai/offer-pool.v1.json
ai.offer-pool@1 (the pooled machines design, 2026-11-06): the `pool` part of a community AI offer (ai.offer@1) served by several of one owner's machines together (bot.machine-pool@1). Network adds it from its own approved pool record, never from what a machine reports: the offer is the head's, `head` equals the offer's `machine_id`, and while a machine is in a pool it advertises no offer of its own. It names machines only; no address, key or certificate reaches AI. AI routes the request to the head, runs the same verification as for one machine (canaries, the model fingerprint, spot re-runs) on the pool's answers, keys that verification on this exact membership (another member or head is a new, unverified pool), keeps a pool that is new or failed to the free tier only, and labels its answers "Community pool (N machines)".
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
machines | array of string | yes | The pool's machines, head included (Bot device ids), two to eight. |
|
head | string | yes | The machine that answers: one of `machines`, and the offer's own `machine_id`. |
|
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: three-machines
{
"machines": [
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D1",
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D2",
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D3"
],
"head": "dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D2"
}Valid: two-machines
{
"machines": [
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D1",
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D2"
],
"head": "dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D1"
}Rejected: address-field
{
"machines": [
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D1",
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D2"
],
"head": "dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D1",
"address": "192.168.1.20/24"
}Rejected: certificate-field
{
"machines": [
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D1",
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D2"
],
"head": "dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D1",
"certificates": [
"-----BEGIN CERTIFICATE-----\nMIIBRDCB96ADAgECAhQ1F6qS8nQmfA4Z1EQWbuTK6c+/CDAFBgMrZXAwGDEWMBQG\nA1UEAwwNT3BlblZpYmUtcG9vbDAeFw0yNjExMDcwMjE1NThaFw0zNjExMDQwMjE1\nNThaMBgxFjAUBgNVBAMMDU9wZW5WaWJlLXBvb2wwKjAFBgMrZXADIQBzzRaEd6ZR\nqYbsbYK3W8CCJPIAbsNTlIXZYgPEC9yf76NTMFEwHQYDVR0OBBYEFPiGTnP9vRST\nUlo0W1Eh0xcOxA49MB8GA1UdIwQYMBaAFPiGTnP9vRSTUlo0W1Eh0xcOxA49MA8G\nA1UdEwEB/wQFMAMBAf8wBQYDK2VwA0EAOlCHoX3ONMZYTHx4GSAlxP4EQase+99L\nGykZvgPSVDs2alKLXW5fBxvn7OcEJ3g/EMmk9iZ+AL+CmLxdcYBLCw==\n-----END CERTIFICATE-----\n"
]
}Rejected: duplicate-member
{
"machines": [
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D1",
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D1"
],
"head": "dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D1"
}Rejected: missing-head
{
"machines": [
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D1",
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D2"
]
}Rejected: one-machine
{
"machines": [
"dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D1"
],
"head": "dev_01J8Z3Q4R5S6T7V8W9X0Y1Z2D1"
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('ai.offer-pool@1', value); // { valid, errors: [{ path, message }] }