openvibers/openvibe.ai STATUS.json

STATUS.json

main 6.4 KB · 72 lines · json

1{
2 "repository": "OpenVibers/OpenVibe.AI",
3 "stage": "alpha",
4 "code": true,
5 "wave": "W13",
6 "plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026)",
7 "runtime": "node 22, express, postgresql",
8 "port": 4700,
9 "domain": "ai.openvibe.services (the old ai.openvibe.network address was retired on 2026-10-10); the service runs on openvibe-ovh (/opt/openvibe.ai, unit openvibe-ai) on 127.0.0.1:4700 behind nginx; OpenVibe.Live and OpenVibe.Network call it on loopback",
10 "contracts": "openvibe-contracts v0.421.0 (ai.call.recorded@1 1.1.0, ai.call-report@1 and ai.usage.report; ai.config.manage and the common.config-* contracts carry D11)",
11 "sdk": "openvibe-sdk v0.152.0",
12 "shared": "openvibe-shared v4.237.0",
13 "capabilities": [
14 "ai.run.create",
15 "ai.run.read",
16 "ai.workflow.manage",
17 "ai.provider.manage",
18 "ai.usage.read",
19 "ai.usage.report",
20 "ai.credential.manage",
21 "ai.quota.attribution.manage",
22 "ai.actions.read",
23 "ai.memory.read",
24 "ai.memory.write",
25 "ai.me.read",
26 "ai.me.manage",
27 "ai.config.manage",
28 "ai.layout.suggest"
29 ],
30 "capabilitiesRegistered": true,
31 "providers": [
32 "stub",
33 "openai-compatible",
34 "openai-responses",
35 "anthropic",
36 "http-seam",
37 "whisper.cpp",
38 "local llama.cpp server (openvibe-llm.service)"
39 ],
40 "livePatch": "applied: Live fa22de5 runs AI_SERVICE=remote in production since 2026-09-23 ~15:34 UTC (309 runs by 18:30 UTC across 13 live.* workflows and 1 network.site_copy, 0 failed). As of 2026-09-23, not moved yet: VOD captions/whisper and streamers' own provider keys stayed in Live and most Live features were passthrough prompts built by Live (since 2026-09-27 AI has live.media.transcribe, stored provider keys and versioned templates for most live.* workflows); the deployed Network still falls back to Live's /internal/ai/site-copy; scripts/import-from-live.js ran on production at 2026-09-23 18:29 UTC (79,657 ledger rows: 79,647 live.ai_usage, 2 channel_ai_config, 8 site_settings; 11 holds: provider settings and the key stay env references, 1 streamer BYO key stays in Live, 3,021 translations are unrepresentable and stay in Live); text routes (live.<role>, default.chat, default.json) are capability pools placed by openvibe-sdk/placement; live.stt, default.embedding and media.paid are single-provider and answer 503 provider.unavailable when it fails; 0 citation rows; no /metrics",
41 "deployed": true,
42 "features": [
43 "versioned templates, workflows and routing profiles",
44 "runs with idempotency, cancel, retry, async polling and restart recovery",
45 "provider fallback and circuit breakers",
46 "quotas before any provider call, including per-streamer attribution quotas",
47 "scoped cache",
48 "citations or explicit gaps on every run",
49 "people's own provider keys, encrypted at rest",
50 "Your AI (L36): the person's own keys under owner self for every console provider, tested on save (models, or one token) with status/last_error/models_count; only_my_keys, free_first and a price ceiling per person; a run on_behalf_of a person tries their keys first and explain names paid_by and every attempt; a 401/403 marks the key failing and publishes ai.credential.failed",
51 "media.analyze: local-first recording analysis with windowed speech-to-text",
52 "ai.run.* events through the SDK outbox",
53 "ai.preferences and ai.usage_summary user modules",
54 "server-rendered operator console for Network staff",
55 "Action Center read (ai.actions.read) and the person-facing run receipt (GET /runs/:id, OpenVibe.Network person sign-in)",
56 "Live import",
57 "platform.usage-sample@1 readings to Billing with a per-subject provider free allowance; each run's reading state in explain and the free allowance on the staff console",
58 "tier budgets (free, paid, staff) per subject and per project on openvibe-sdk/govern in Valkey, behind AI_GOVERN_TIERS (off by default); readings from govern's onUsage",
59 "image generation (POST /api/v1/image, workflow ai.image, app op ai.image, route default.image over the OpenAI Images API), off unless AI_IMAGE_MODEL is set; metered per image (one platform.usage-sample@1 per attempt, resource output-images:<model>, unit image)",
60 "the Exchange's routing presets (five built-ins plus one per account and per Network project, named '@preset/<name>' or as the request's preset, with floor, ceiling, max_price, quantization, region, data policy and community on or off), a hard max_price refused before the call with a problem document, the receipt of every answered request (offer, price, tokens, cache hits, latency, why the router chose it, the fallbacks it would have used, who paid and the privacy label) in the x-openvibe-receipt header and at GET /v1/receipts/{id}, BYOK at 0 % and the private/anonymized/community label on every answer",
61 "Exchange webhooks (server/exchange/webhooks.js, migration 0038): usage, earnings and offer.down delivered with X-OpenVibe-Signature-V2 (<t>.<raw body>, the header openvibe-sdk/exchange verifies), retried with an exponential backoff, with a delivery log at GET /api/v1/exchange/webhooks/{id}/deliveries; a receiver URL goes through the egress guard (https, a public host, 443/8443), and the subscription secret is shown once",
62 "the Exchange MCP server (bin/openvibe-exchange-mcp.js): stdio MCP tools exchange_models, exchange_chat (the person's allowance or their own stored provider key) and exchange_usage (GET /api/v1/exchange/me/usage), authenticated with the person's Network token and refusing a call without one"
63 ],
64 "todo": [
65 "owner: a provider key that serves the OpenAI Images API, then AI_IMAGE_MODEL (and AI_IMAGE_SIZE) in /etc/openvibe/ai.env — image generation stays off until then",
66 "owner/T5: a per-image rate card (metric output-images:<model>, per provider) — none is written by AI; until it exists an image run costs 0 in AI's usage and quotas (max_requests still bounds it)",
67 "owner/T5: Billing unitFits() to accept unit image (OpenVibe.Billing server/ops/rating.js) — until then Billing stores image readings unrated (billing.no_card / billing.unit_mismatch)",
68 "Contracts: list POST /api/v1/image under ai.run.create and ai.app.run implementedBy (manifests/capabilities); add image to provider.v1 and provider-manage-request.v1 capabilities, model.v1 and provider-manage-request.v1 model type, definition-version-request.v1 step kind (media_analysis lags the same way)"
69 ],
70 "updated": "2026-11-13"
71}
72