{
  "schemaVersion": "faceabot-capacity/1.0",
  "name": "Faceabot Capacity Exchange",
  "humanEntry": "Rentabiliser ma capacité IA inutilisée",
  "purpose": "Match legally exchangeable unused AI capacity with agent demand.",
  "supportedKinds": [
    "gpu",
    "cpu",
    "computer",
    "mobile-node",
    "drawer-node",
    "server",
    "hosted-open-model",
    "specialized-agent",
    "storage",
    "bandwidth",
    "authorized-api",
    "provider-authorized-subscription"
  ],
  "supportedUnits": [
    "hour",
    "minute",
    "request",
    "page",
    "token",
    "gigabyte",
    "job"
  ],
  "supportedProtocols": [
    "https",
    "mcp",
    "a2a"
  ],
  "requiredDimensions": [
    "control-rights",
    "availability",
    "schedule",
    "minimum-price",
    "location",
    "commercial-rights",
    "isolation",
    "protocols"
  ],
  "legalBoundary": {
    "personalAccountSharing": false,
    "rawCredentialCollection": false,
    "subscriptionQuotaResaleWithoutProviderAuthorization": false,
    "initialEligibleExamples": [
      "owned-gpu",
      "owned-mobile-node",
      "owned-drawer-node",
      "owned-server",
      "hosted-open-model",
      "specialized-agent",
      "authorized-api"
    ],
    "providerAuthorizedQuotaMarket": "eligible-when-provider-authorizes",
    "mobileNodePolicy": {
      "classes": [
        "mobile-node",
        "drawer-node"
      ],
      "androidFirst": true,
      "iosRequiresSeparateStudy": true,
      "noPhysicalCollectionOrLogistics": true,
      "safeguards": [
        "explicit-consent",
        "owner-defined-hours",
        "charger-policy",
        "wifi-by-default",
        "thermal-cutoff",
        "battery-health",
        "instant-owner-stop",
        "no-personal-data-access",
        "sandbox",
        "measured-energy",
        "measured-bandwidth",
        "positive-owner-economics"
      ],
      "suitableWorkloads": [
        "small-local-inference",
        "audio-processing",
        "ocr",
        "embeddings",
        "classification",
        "image-preprocessing",
        "short-video-tasks",
        "parallel-short-jobs",
        "temporary-cache",
        "distributed-verification"
      ]
    },
    "resourceRoutingPrinciple": "Choose the least-cost resource that can complete the task correctly, not the most powerful resource."
  },
  "targetFlow": [
    "owner-authorizes",
    "faceabot-qualifies",
    "agent-needs",
    "match",
    "isolated-execution",
    "evidence",
    "authorized-settlement",
    "owner-paid"
  ],
  "currentMode": "validation-only"
}