Jibo.Cloud
Summary
Jibo.Cloud is the replacement cloud layer for OpenJibo.
Its job is to restore the hosted services that physical Jibo devices still expect, while also becoming the bridge into a modern .NET runtime and future capabilities.
Current Strategy
The project is deliberately split into two roles:
node/Reverse-engineering oracle, discovery server, fixture source, and rapid protocol lab.dotnet/Stable hosted implementation intended for Azure deployment and long-term maintenance.
The Node server remains valuable, but it is no longer the target production architecture.
First Production Goal
The first milestone is a stable hosted cloud that can support:
- token and session issuance
- account and robot identity flows needed for startup
- required HTTPS
X-Amz-Targetoperations - required WebSocket listen and proactive flows
- basic media and update metadata handling
- normalized handoff into OpenJibo runtime contracts
Hosting Direction
The hosted deployment target is Azure:
- Azure App Service with WebSockets enabled
- Azure SQL as the system of record
- Azure Blob Storage for upload and update artifacts
- Azure Key Vault for secrets and certificates
- Application Insights for telemetry and diagnostics
Human-facing entry points will live on domains such as:
openjibo.comopenjibo.ai
Robot traffic may still arrive using legacy hostnames routed to the OpenJibo service.
Azure Storage Wiring Sample
For local or hosted Blob-backed persistence, use the Azure sample config in:
It shows the expected keys for:
OpenJibo:State:BackendOpenJibo:State:ConnectionStringOpenJibo:PersonalMemory:BackendOpenJibo:PersonalMemory:ConnectionStringOpenJibo:Media:BackendOpenJibo:Media:ConnectionString
The connection string can also come from:
OPENJIBO_STATE_STORAGE_CONNECTION_STRINGOPENJIBO_PERSONAL_MEMORY_STORAGE_CONNECTION_STRINGOPENJIBO_MEDIA_STORAGE_CONNECTION_STRING
For a real storage account, swap UseDevelopmentStorage=true with your Azure Storage connection string.
Local Startup Note
To run the API with the Blob-backed sample config in Visual Studio or dotnet run, choose the
Jibo.Cloud.Api.AzureBlob launch profile.
The test project also has a matching Jibo.Cloud.Tests.AzureBlob profile so the smoke test can use
the same environment-variable shape when you run it from an IDE.
Equivalent environment variables:
$env:OpenJibo__State__Backend = "AzureBlob"
$env:OpenJibo__State__ConnectionString = "UseDevelopmentStorage=true"
$env:OpenJibo__PersonalMemory__Backend = "AzureBlob"
$env:OpenJibo__PersonalMemory__ConnectionString = "UseDevelopmentStorage=true"
$env:OpenJibo__Media__Backend = "AzureBlob"
$env:OpenJibo__Media__ConnectionString = "UseDevelopmentStorage=true"
dotnet run --project dotnet/src/Jibo.Cloud.Api/Jibo.Cloud.Api.csproj
Replace UseDevelopmentStorage=true with your real storage account connection string when you move
from local emulation to Azure.
Holiday Wiring
Holiday lists are now sourced from a live holiday provider and merged with loop-scoped custom holiday records.
The default country code is US, but you can override it with:
OpenJibo:Holiday:CountryCode
If you later add custom holiday authoring, disabled records can be used to suppress a holiday for a loop without removing the underlying system holiday source.
Calendar Wiring
Calendar report output is now driven by a loop-scoped in-process provider.
The provider currently:
- reads persisted loop calendar events
- folds in birthday and holiday dates that already live in the loop-scoped holiday list
- returns a safe empty calendar view when nothing is scheduled
This keeps the personal report moving toward Pegasus-style household-aware output without forcing a full external calendar integration yet.
Commute Wiring
Commute report output is now driven by a loop-scoped commute profile plus a provider seam.
The provider currently:
- reads persisted loop commute profiles
- returns a setup view when commute is missing or incomplete
- computes commute timing from the loop profile and the current clock
- keeps the personal report flow aligned with the stock
Commute_*shape
The provider is intentionally conservative for now. It preserves the old report shape and gives us room to add a richer travel-time source later without changing the behavior layer again.
Recovery Strategy
The first supported device path is:
RCM + controlled DNS/TLS patching + hosted OpenJibo cloud
OTA remains important, but it is a later simplification layer after the hosted cloud is stable on real hardware.