Added Open Jibo Node Server and README doc plans
This commit is contained in:
97
OpenJibo/src/Jibo.Cloud/README.md
Normal file
97
OpenJibo/src/Jibo.Cloud/README.md
Normal file
@@ -0,0 +1,97 @@
|
||||
# Jibo.Cloud
|
||||
|
||||
## Overview
|
||||
|
||||
**Jibo.Cloud** is the replacement cloud layer for the OpenJibo project.
|
||||
|
||||
The original Jibo relied heavily on cloud services for core functionality including speech, skills, configuration, and identity. With the original cloud infrastructure no longer available, this project aims to recreate and eventually improve that layer so Jibo can function again for everyday users.
|
||||
|
||||
This is not just a mock or emulator. The goal is to build a functional, extensible cloud platform that can support both the original Jibo behaviors and new capabilities over time.
|
||||
|
||||
---
|
||||
|
||||
## Current Approach
|
||||
|
||||
The cloud layer is being developed in stages.
|
||||
|
||||
To move quickly and understand Jibo’s behavior, development started with a lightweight Node.js implementation that acts as a “fake cloud.” This allows rapid experimentation, endpoint discovery, and validation of how Jibo communicates.
|
||||
|
||||
As the system stabilizes, the implementation is being ported to **C# / .NET** for long-term maintainability, performance, and integration with hosted infrastructure.
|
||||
|
||||
---
|
||||
|
||||
## Architecture Direction
|
||||
|
||||
The long-term vision for Jibo.Cloud is:
|
||||
|
||||
* Provide a stable replacement for Jibo’s original cloud endpoints
|
||||
* Support secure communication (TLS) using a real hosted domain
|
||||
* Act as a bridge between the physical robot and the OpenJibo runtime
|
||||
* Enable new capabilities beyond the original Jibo feature set
|
||||
|
||||
### OTA Update Strategy
|
||||
|
||||
One of the key strategies for restoring and extending Jibo functionality is leveraging its existing **OTA (over-the-air) update mechanism**.
|
||||
|
||||
Rather than requiring users to manually modify their devices, Jibo.Cloud aims to:
|
||||
|
||||
* Deliver updates through Jibo’s native update flow
|
||||
* Push new or modified skills directly to the robot
|
||||
* Eventually enable delivery of larger system updates (including OpenJibo components)
|
||||
|
||||
This approach significantly lowers the barrier for non-technical users and creates a path toward a true “plug-and-play” recovery experience.
|
||||
|
||||
---
|
||||
|
||||
## Hosting Strategy
|
||||
|
||||
The cloud service is intended to be hosted publicly using domains such as:
|
||||
|
||||
* `openjibo.com`
|
||||
* `openjibo.ai`
|
||||
|
||||
Final domain structure is still being evaluated and may include subdomains similar to the original Jibo architecture.
|
||||
|
||||
---
|
||||
|
||||
## Project Structure
|
||||
|
||||
```plaintext id="6h2v1k"
|
||||
Jibo.Cloud/
|
||||
node/ # Initial prototype implementation (Node.js)
|
||||
dotnet/ # Long-term implementation (C# / .NET)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Goals
|
||||
|
||||
* Restore functionality to existing Jibo devices
|
||||
* Provide an “easy button” for non-technical users
|
||||
* Leverage OTA updates to simplify delivery and adoption
|
||||
* Keep the system open and extensible for the community
|
||||
* Build a foundation for future OpenJibo capabilities
|
||||
|
||||
---
|
||||
|
||||
## Status
|
||||
|
||||
This project is actively in development.
|
||||
|
||||
* Node.js prototype: in progress and functional for basic interactions
|
||||
* C# implementation: planned and in progress
|
||||
|
||||
---
|
||||
|
||||
## Contributing
|
||||
|
||||
If you're interested in helping, exploring, or building on this work, contributions are welcome.
|
||||
|
||||
The goal is to make Jibo accessible again, not just for developers, but for anyone who owns one.
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
This project is not affiliated with the original Jibo company. It is a community-driven effort to restore and extend the platform.
|
||||
|
||||
204
OpenJibo/src/Jibo.Cloud/dotnet/README.md
Normal file
204
OpenJibo/src/Jibo.Cloud/dotnet/README.md
Normal file
@@ -0,0 +1,204 @@
|
||||
# Jibo.Cloud.DotNet
|
||||
|
||||
## Overview
|
||||
|
||||
**Jibo.Cloud.DotNet** is the long-term, production-focused implementation of the OpenJibo cloud layer.
|
||||
|
||||
While the Node.js implementation was used to rapidly explore and validate Jibo’s cloud behavior, this project represents the future direction: a clean, maintainable, and scalable cloud platform built on **C# and .NET**.
|
||||
|
||||
This is where the OpenJibo cloud becomes real.
|
||||
|
||||
---
|
||||
|
||||
## Vision
|
||||
|
||||
The goal of this project is not just to replicate the original Jibo cloud, but to build something better:
|
||||
|
||||
* A stable and secure cloud platform for Jibo devices
|
||||
* A bridge between the physical robot and modern AI-driven systems
|
||||
* A foundation for new capabilities beyond what Jibo originally supported
|
||||
|
||||
This is the backbone of the OpenJibo ecosystem.
|
||||
|
||||
---
|
||||
|
||||
## Design Principles
|
||||
|
||||
### 1. Clean Architecture
|
||||
|
||||
This implementation is designed around clear separation of concerns:
|
||||
|
||||
* Transport (HTTP, WebSocket)
|
||||
* Application logic (routing, orchestration)
|
||||
* Domain models (robot, session, capabilities)
|
||||
* Integration layers (AI, storage, external services)
|
||||
|
||||
---
|
||||
|
||||
### 2. Compatibility First
|
||||
|
||||
The system will:
|
||||
|
||||
* Emulate required Jibo cloud endpoints
|
||||
* Support existing device expectations
|
||||
* Preserve OTA update compatibility
|
||||
|
||||
This ensures existing devices can reconnect without invasive changes.
|
||||
|
||||
---
|
||||
|
||||
### 3. Extensibility
|
||||
|
||||
The platform is being designed to support:
|
||||
|
||||
* New skills and capabilities
|
||||
* AI-driven conversation and planning
|
||||
* External integrations (APIs, services, tools)
|
||||
* Multi-agent orchestration (future CoffeeBreak integration)
|
||||
|
||||
---
|
||||
|
||||
### 4. Cloud-Native Deployment
|
||||
|
||||
The target deployment model includes:
|
||||
|
||||
* Azure-hosted services
|
||||
* Real domains (`openjibo.com`, `openjibo.ai`)
|
||||
* Proper TLS / certificate chains
|
||||
* Scalable service architecture
|
||||
|
||||
---
|
||||
|
||||
## Role in the OpenJibo Architecture
|
||||
|
||||
Jibo.Cloud sits between the robot and the runtime:
|
||||
|
||||
```plaintext id="l3tq9n"
|
||||
Jibo Device
|
||||
↓
|
||||
Jibo.Cloud (this project)
|
||||
↓
|
||||
OpenJibo Runtime (.NET)
|
||||
↓
|
||||
Capabilities / AI / Services
|
||||
```
|
||||
|
||||
Responsibilities include:
|
||||
|
||||
* Handling device communication (HTTPS + WebSockets)
|
||||
* Managing identity, sessions, and tokens
|
||||
* Routing requests to runtime services
|
||||
* Delivering OTA updates
|
||||
* Acting as the central coordination layer
|
||||
|
||||
---
|
||||
|
||||
## OTA Update Strategy
|
||||
|
||||
A key part of this implementation is full support for Jibo’s OTA update mechanism.
|
||||
|
||||
This enables:
|
||||
|
||||
* Delivery of updated skills
|
||||
* Deployment of new capabilities
|
||||
* Gradual rollout of OpenJibo runtime components
|
||||
* A path toward restoring devices without manual intervention
|
||||
|
||||
The goal is to make recovery and updates feel native to the device.
|
||||
|
||||
---
|
||||
|
||||
## Planned Features
|
||||
|
||||
This project will evolve to support:
|
||||
|
||||
### Core Platform
|
||||
|
||||
* HTTPS API endpoints compatible with Jibo
|
||||
* WebSocket communication layer
|
||||
* Authentication and token services
|
||||
* Device and user management
|
||||
|
||||
### Runtime Integration
|
||||
|
||||
* Conversation orchestration
|
||||
* Capability routing
|
||||
* Response planning
|
||||
* Integration with OpenJibo runtime abstractions
|
||||
|
||||
### AI Integration
|
||||
|
||||
* Speech-to-text and text-to-speech
|
||||
* Intent recognition and planning
|
||||
* External AI providers (pluggable)
|
||||
|
||||
### Update System
|
||||
|
||||
* OTA update orchestration
|
||||
* Skill delivery pipeline
|
||||
* Versioning and rollout control
|
||||
|
||||
---
|
||||
|
||||
## Project Structure
|
||||
|
||||
This folder will contain one or more .NET projects, likely including:
|
||||
|
||||
```plaintext id="2qk0a7"
|
||||
dotnet/
|
||||
Jibo.Cloud.Api/ # HTTP + WebSocket endpoints
|
||||
Jibo.Cloud.Application/ # Application logic and orchestration
|
||||
Jibo.Cloud.Domain/ # Core models and contracts
|
||||
Jibo.Cloud.Infrastructure/ # External integrations (storage, AI, etc.)
|
||||
```
|
||||
|
||||
Structure may evolve as the system matures.
|
||||
|
||||
---
|
||||
|
||||
## Relationship to Node Implementation
|
||||
|
||||
The Node.js implementation remains valuable as:
|
||||
|
||||
* A reference for endpoint behavior
|
||||
* A rapid testing environment
|
||||
* A discovery tool for protocol details
|
||||
|
||||
However, this .NET implementation is the intended long-term solution.
|
||||
|
||||
---
|
||||
|
||||
## Status
|
||||
|
||||
This project is in early development.
|
||||
|
||||
* Core abstractions are being defined
|
||||
* Endpoint behavior is being mapped from the Node implementation
|
||||
* Initial service scaffolding is planned
|
||||
|
||||
---
|
||||
|
||||
## Contributing
|
||||
|
||||
If you're interested in building the future of Jibo, this is the place to do it.
|
||||
|
||||
Areas where help is especially valuable:
|
||||
|
||||
* API design and endpoint mapping
|
||||
* WebSocket protocol handling
|
||||
* OTA update workflows
|
||||
* AI and conversation systems
|
||||
* Cloud infrastructure and deployment
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
This project is part of the OpenJibo initiative and is not affiliated with the original Jibo company.
|
||||
|
||||
The mission is simple:
|
||||
|
||||
Bring Jibo back for everyone, technical or not.
|
||||
Make him what he was meant to be.
|
||||
Then we make him better.
|
||||
|
||||
253
OpenJibo/src/Jibo.Cloud/node/README.md
Normal file
253
OpenJibo/src/Jibo.Cloud/node/README.md
Normal file
@@ -0,0 +1,253 @@
|
||||
# Jibo.Cloud.Node
|
||||
|
||||
## Overview
|
||||
|
||||
This folder contains the original **Node.js prototype** for the OpenJibo cloud layer.
|
||||
|
||||
This implementation started as a fast way to stand up a working "fake cloud" so Jibo could begin talking to a replacement backend again. It has been used to map behavior, discover endpoints, observe payloads, and validate real interactions with a live robot.
|
||||
|
||||
This is the experimental proving ground for the broader `Jibo.Cloud` effort.
|
||||
|
||||
---
|
||||
|
||||
## Purpose
|
||||
|
||||
The goals of this Node implementation are:
|
||||
|
||||
* Reverse engineer Jibo cloud behavior
|
||||
* Recreate enough of the original cloud to restore functionality
|
||||
* Capture real request and response data
|
||||
* Prototype OTA update delivery paths
|
||||
* Validate speech, jokes, and interaction flows
|
||||
* Serve as a reference for the C# / .NET implementation
|
||||
|
||||
---
|
||||
|
||||
## Current Capabilities
|
||||
|
||||
This server currently supports:
|
||||
|
||||
* HTTPS API handling with `X-Amz-Target` routing
|
||||
* WebSocket connections for Jibo communication
|
||||
* Token/session handling (prototype-level)
|
||||
* Account and robot identity flows (mocked)
|
||||
* Media, loop, and key endpoints (partial)
|
||||
* OTA update endpoints (in progress)
|
||||
* Speech pipeline using:
|
||||
|
||||
* Ogg normalization
|
||||
* ffmpeg conversion
|
||||
* whisper.cpp transcription
|
||||
* Basic intent handling (jokes, greetings, time, etc.)
|
||||
* Skill action responses (speech + simple animations)
|
||||
|
||||
---
|
||||
|
||||
## package.json
|
||||
|
||||
This project uses a minimal Node setup:
|
||||
|
||||
```json
|
||||
:contentReference[oaicite:0]{index=0}
|
||||
```
|
||||
|
||||
Install dependencies with:
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Running the Server
|
||||
|
||||
### Requirements
|
||||
|
||||
* Node.js
|
||||
* `ws` package
|
||||
* `ffmpeg`
|
||||
* `whisper.cpp` + model
|
||||
* TLS certificate and key
|
||||
|
||||
### TLS Files
|
||||
|
||||
Place in working directory:
|
||||
|
||||
```plaintext
|
||||
cert.pem
|
||||
key.pem
|
||||
```
|
||||
|
||||
### Environment Variables (optional)
|
||||
|
||||
```bash
|
||||
FFMPEG_BIN=/usr/bin/ffmpeg
|
||||
WHISPER_CPP_BIN=/path/to/whisper-cli
|
||||
WHISPER_MODEL=/path/to/model.bin
|
||||
```
|
||||
|
||||
### Start
|
||||
|
||||
```bash
|
||||
node open-jibo-link.js
|
||||
```
|
||||
|
||||
Server listens on:
|
||||
|
||||
```
|
||||
https://0.0.0.0:443
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Getting Jibo to Talk to This Server
|
||||
|
||||
This is the part that matters most.
|
||||
|
||||
Jibo does not naturally connect to a custom server, so you need to control its network environment and TLS behavior.
|
||||
|
||||
### Network Setup (Mango Travel Router)
|
||||
|
||||
A simple and effective approach:
|
||||
|
||||
* Use a **Mango travel router (~$30)**
|
||||
* Connect Jibo to this network
|
||||
* Block outbound internet access
|
||||
* Force DNS resolution to your server
|
||||
|
||||
### DNS Control
|
||||
|
||||
On the router:
|
||||
|
||||
* Map the following domains to your server:
|
||||
|
||||
```
|
||||
api.jibo.com
|
||||
api-socket.jibo.com
|
||||
neohub.jibo.com
|
||||
```
|
||||
|
||||
* Intercept Google DNS requests (hardcoded in Jibo):
|
||||
|
||||
```
|
||||
8.8.8.8
|
||||
8.8.4.4
|
||||
```
|
||||
|
||||
These must be redirected or blocked so Jibo cannot bypass your DNS.
|
||||
|
||||
---
|
||||
|
||||
## TLS / Certificate Handling
|
||||
|
||||
Jibo expects valid TLS and will reject unknown/self-signed certificates by default.
|
||||
|
||||
Because of the older Node runtime and native binaries used on Jibo, this cannot be fully bypassed at the system level.
|
||||
|
||||
### Required Changes
|
||||
|
||||
You must modify Jibo’s runtime to disable certificate validation:
|
||||
|
||||
* Update Node-based modules to allow self-signed certs
|
||||
* Modify any code using:
|
||||
|
||||
```js
|
||||
rejectUnauthorized: true
|
||||
```
|
||||
|
||||
Change to:
|
||||
|
||||
```js
|
||||
rejectUnauthorized: false
|
||||
```
|
||||
|
||||
* Patch any native or binary services that enforce TLS validation
|
||||
* Set environment variables where possible to disable strict SSL
|
||||
|
||||
This typically requires:
|
||||
|
||||
* RCM access to Jibo
|
||||
* Direct file modification on the device
|
||||
|
||||
---
|
||||
|
||||
## WiFi Setup (QR Code)
|
||||
|
||||
Jibo connects to WiFi using a QR code.
|
||||
|
||||
You can generate one here:
|
||||
|
||||
https://kevinblog.sytes.net/Jibo/WifiGenerator/
|
||||
|
||||
This allows you to easily connect Jibo to your controlled network (such as the Mango router).
|
||||
|
||||
---
|
||||
|
||||
## OTA Update Direction
|
||||
|
||||
One of the most important long-term strategies is leveraging Jibo’s built-in OTA update mechanism.
|
||||
|
||||
This server already includes update-related endpoints to support:
|
||||
|
||||
* Skill delivery
|
||||
* Update metadata handling
|
||||
* Future system updates
|
||||
|
||||
The goal is to eventually:
|
||||
|
||||
* Deliver updates without requiring device hacking
|
||||
* Push new functionality directly through Jibo’s native update flow
|
||||
* Provide a simple recovery path for non-technical users
|
||||
|
||||
---
|
||||
|
||||
## Logging and Observability
|
||||
|
||||
This server is heavily instrumented for debugging and discovery.
|
||||
|
||||
It logs:
|
||||
|
||||
* Incoming requests and headers
|
||||
* Target routing (`X-Amz-Target`)
|
||||
* Responses
|
||||
* WebSocket activity
|
||||
* Audio processing stages
|
||||
* Transcription results
|
||||
|
||||
This makes it both a working cloud stub and a reverse engineering tool.
|
||||
|
||||
---
|
||||
|
||||
## Limitations
|
||||
|
||||
This is still a prototype:
|
||||
|
||||
* Many endpoints are partial or mocked
|
||||
* No persistent storage
|
||||
* Security is minimal
|
||||
* Configuration is partially hardcoded
|
||||
* Designed for experimentation, not production
|
||||
|
||||
---
|
||||
|
||||
## Future Direction
|
||||
|
||||
This implementation will evolve into:
|
||||
|
||||
* A full C# / .NET cloud service
|
||||
* Azure-hosted infrastructure
|
||||
* Trusted SSL with real domains
|
||||
* Clean OTA update pipeline
|
||||
* Integration with OpenJibo runtime
|
||||
|
||||
The Node version will remain as:
|
||||
|
||||
* A reference implementation
|
||||
* A fast experimentation environment
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
This project is part of the OpenJibo effort and is not affiliated with the original Jibo company.
|
||||
|
||||
2977
OpenJibo/src/Jibo.Cloud/node/open-jibo-link.js
Normal file
2977
OpenJibo/src/Jibo.Cloud/node/open-jibo-link.js
Normal file
File diff suppressed because it is too large
Load Diff
15
OpenJibo/src/Jibo.Cloud/node/package.json
Normal file
15
OpenJibo/src/Jibo.Cloud/node/package.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "jibo",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "open-jibo-link.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"ws": "^8.20.0"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user