3.9 KiB
Jibo.Cloud.DotNet
Summary
Jibo.Cloud.DotNet is the stable hosted implementation of the OpenJibo cloud.
This is the production-oriented path for restoring device connectivity and creating a foundation for future runtime, AI, and OTA work.
Architecture
The first implementation is a modular monolith:
Api -> Application -> Domain -> Infrastructure
This keeps deployment simple while preserving clean boundaries.
Azure Direction
The target Azure footprint is:
- Azure App Service for HTTP and WebSocket traffic
- Azure SQL for relational persistence
- Azure Blob Storage for uploads and update artifacts
- Azure Key Vault for secrets and certificates
- Application Insights for observability
Azure SQL is the primary system of record for:
- accounts
- devices
- sessions
- update metadata
- host mappings
- bootstrap and provisioning records
Compatibility Goal
The first compatibility milestone is core revive.
That means the .NET cloud should handle:
- token and session issuance
- account and robot identity flows needed for startup
- core
X-Amz-Targetdispatch - listen and proactive WebSocket paths
- basic media and update metadata responses
- handoff into normalized
TurnContextandResponsePlancontracts
Relationship To The Node Prototype
The Node server remains the discovery harness and fixture source.
The .NET implementation should:
- copy observed behavior where needed
- use fixtures captured from Node and real robots
- avoid speculative protocol design
- separate HTTP parity, websocket parity, and future discovery work so coverage stays honest
Current State
This folder now contains the first hosted scaffold, not just a README.
The intent is to grow from a runnable dev monolith into the real Azure deployment target without abandoning the existing abstractions work.
Current websocket scope is still intentionally narrow:
- token-backed socket sessions
- explicit websocket turn-state tracking separate from long-lived cloud session state
- synthetic
LISTENresult shaping forLISTEN,CLIENT_NLU, andCLIENT_ASR - buffered audio state tracking behind a dedicated turn-finalization layer
- raw audio auto-finalization once
LISTEN+CONTEXT+ minimum buffered audio thresholds are present - synthetic STT strategy selection for fixture-driven audio turn completion
- structured websocket telemetry and live-run fixture export
CONTEXTcapture and follow-up turn stateEOScompletion- delayed
SKILL_ACTIONemission afterEOSto preserve the current Node-observed turn sequence - first skill vertical for joke/chat
SKILL_ACTIONplayback - repo-root live-run capture support for both
captures/http/andcaptures/websocket/
Not yet covered:
- real binary audio / ASR finalization parity
- provider-backed ASR integration
- timed finalize/fallback behavior matching richer Node turn-state semantics
- upstream Nimbus or broader skill lifecycle behavior
- animation / expression command families
- ESML feature parity beyond the narrow synthetic playback payloads used in the current scaffold
Live Capture Status
The first real .NET robot test has confirmed:
- startup HTTP traffic reaches the
.NETcloud Notification.NewRobotTokenis in the active startup pathapi-socket.jibo.comconnections are being accepted live
It has not yet confirmed:
- full startup parity with the successful Node run cadence
- consistent eye-open / wake completion on the robot
- the later health/log upload sequence currently seen in the working Node run
Current raw-audio behavior is still a compatibility bridge:
- if buffered audio has a synthetic transcript hint, the server now auto-finalizes the turn and emits
LISTEN+EOS+SKILL_ACTION - if buffered audio crosses the finalize threshold without a usable transcript, the server now emits a Node-style fallback completion with
EOSinstead of hanging the turn forever - this is intentionally not a claim of real ASR parity