Files
JiboViteDocs/docs/jibo-app.md
2026-05-06 16:18:44 -04:00

9.9 KiB

jibo-app

::: warning This was written by AI. This is for a script that is private. :::

A Node.js command-line interface for interacting with the Jibo robot's cloud services. It wraps the @jibo/jibo-server-client SDK and exposes every API endpoint — account management, loop (family group) management, media, messaging (Jot), robot provisioning, encryption keys, OTA updates, and more — as individual sub-commands.

Prerequisites

  • Node.js v6 or later
  • npm dependencies installed (npm install in the parent project)

Credentials Setup

Every command requires three credentials:

Field Description
region Server region slug, e.g. alpha-entrypoint or stg1-entrypoint
accessKeyId AWS-style access key ID
secretAccessKey AWS-style secret access key

Credentials are resolved in the following priority order (highest wins):

1. Command-line flags

-s, --serverRegion <region>
-i, --accessKeyId <id>        (must be paired with -k)
-k, --secretAccessKey <key>   (must be paired with -i)

2. Environment variables

export JIBO_SERVER_REGION=alpha-entrypoint
export JIBO_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
export JIBO_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY

3. Credentials file (default)

By default the script reads ~/.jibo/credentials.json. Create it like so:

mkdir -p ~/.jibo
cat > ~/.jibo/credentials.json <<'EOF'
{
    "region": "alpha-entrypoint",
    "accessKeyId": "YOUR_ACCESS_KEY_ID",
    "secretAccessKey": "YOUR_SECRET_ACCESS_KEY"
}
EOF
chmod 600 ~/.jibo/credentials.json

You can point to a different file with -f <path>, or disable file loading entirely with -f "" (then rely on env vars or flags).

Tip: After running AccountLogin or LoopGetRobot you can capture the credentials output and write them directly to a file with the -w <file> flag.

Running the script

node jibo-app.js [global options] <Command> [command args...]

Print the help/command list:

node jibo-app.js help

Global Options

Flag Description
-f, --credentialsFile <path> Path to credentials JSON file (default: ~/.jibo/credentials.json)
-s, --serverRegion <region> Override server region
-k, --secretAccessKey <key> Secret access key (pair with -i)
-i, --accessKeyId <id> Access key ID (pair with -k)
-e, --env Suppress informational logs; print output as export VAR=value shell lines
-w, --credentialsFile <path> Write returned credentials to a JSON file (AccountLogin / LoopGetRobot only)

Commands

Account

Command Arguments Description
SyncCredentials <email> <password> [robotId] Log in and push credentials directly to a robot over the local network (WiFi or hard-wired at 172.24.84.101)
AccountCreate <email> <password> [firstName] [lastName] [gender] [birthday] Create a new Jibo account
AccountLogin <email> <password> Log in and print credentials (use -e -w to capture them)
AccountCreateAccessToken <loopId> Create an access token scoped to a loop
AccountActivateByCode <code> Activate an account with an email verification code
AccountAdminActivateById <id> Admin: activate an account by ID
AccountRemove Delete the authenticated account
AccountUpdate [firstName] [lastName] [email] [gender] [birthday] [messagingAllowed] [password] Update account profile fields
AccountUpdatePhoto <filename> Upload a new profile photo
AccountRemovePhoto Remove the profile photo
AccountGet [ids...] Fetch one or more accounts by ID
AccountGetAccountByAccessToken <token> Look up an account by access token
AccountSearch <query> Search for accounts

Loop

A Loop is a family/household group that links an owner account to a Jibo robot.

Command Arguments Description
LoopList [loopId] List loops (or a specific loop); with -e prints export JIBO_LOOP_ID=...
LoopCreate <name> <robotId> Create a new loop
LoopUpdate <loopId> <name> Rename a loop
LoopRemove <loopId> Delete a loop
LoopListMembers [statusList] [typeList] List members of the authenticated account's loop
LoopInviteMember <email> <loopId> Invite someone to a loop by email
LoopAcceptInvitation <loopId> Accept a pending loop invitation
LoopDeclineInvitation <loopId> Decline a pending loop invitation
LoopRemoveMember <loopId> <memberId> Remove a member from a loop
LoopFindOwner <accountId> Find the loop owned by an account
LoopGetRobot <loopId> Get robot credentials for a loop; use -e -w to capture
LoopListOwnerRobots <accountId> List all robots owned by an account
LoopClearRobot <robotId> Disassociate a robot from its loop
LoopUpdateNickname <loopId> <memberId> <nickname> Set a member's nickname in a loop
LoopUpdatePhoneticName <loopId> <memberId> [phoneticName] Set a member's phonetic name in a loop
LoopSuspendLoop <loopId> Suspend a loop

Media

Command Arguments Description
MediaCreate <loopId> [filename] [path] [type] [reference] [isEncrypted] Upload a media file to a loop
MediaGet <paths...> Fetch metadata for one or more media items by path
MediaList <loopIds...> List all media items across one or more loops
MediaRemove <paths...> Delete one or more media items

Jot (Messaging)

Command Arguments Description
JotCreateMessage <loopId> [content] [path] [type] [reference] [url] [tags...] Post a message to a loop
JotListMessages <loopId> [after] [before] List messages in a loop (supports date-range filtering)
JotMarkLoopRead <loopId> Mark all messages in a loop as read
JotMarkRead <ids...> Mark specific messages as read
JotNumberOfUnreadMessagesInLoops <loopIds...> Get unread message counts for loops

Robot

Command Arguments Description
RobotGetRobot <robotId> [serialNumber] Fetch robot details
RobotGetRobotHistory <robotId> [serialNumber] Fetch robot history
RobotUpdateRobot <robotId> <key> <value> Update a robot property
RobotUpdateLocationOverride <robotId> <city> <state> <stateAbbr> <country> <lat> <lng> Override robot location
RobotUpdateLocationOverrideClear <robotId> Clear robot location override
RobotAdminCreateRobot <robotId> <serialNumber> Admin: register a new robot

OOBE (Out-of-Box Experience)

Command Arguments Description
OOBEPrepareRobot <loopId> Prepare a robot for first-time setup
OOBESetupRobot <robotId> <token> Complete robot first-time setup

Key Management

Command Arguments Description
KeyShouldCreate <loopId> Check whether an encryption key should be created
KeyRequestSymmetricKey <loopId> Request a symmetric encryption key
KeyRestore <loopId> [passwordHash] Restore an encryption key using a password (SHA-1 hashed internally)
KeyListIncomingRequests <loopId> List incoming key requests
KeyListBinaryRequests <loopId> List binary key requests

Backup

Command Arguments Description
BackupList <loopId> List backups for a loop

Person

Command Arguments Description
PersonListHolidays <loopId> List holidays for loop members

Log Admin

Command Arguments Description
LogAdminSetLevel <level> <friendlyIds...> Set log level for specific robot services. Level: error|warn|info|verbose|debug|silly
LogAdminSetLevelFromFile <level> <filename> Same as above but reads friendlyIds from a file (one per line, # for comments)

ROM (Remote Operations Manager)

Command Arguments Description
ROMCreate <friendlyId> Create a ROM entry for a robot
ROMSetupClient <friendlyId> Set up a ROM client
ROMSetupServer <ipAddress> Set up a ROM server

OTA (Over-the-Air Updates)

Command Arguments Description
SetOTATarget <serial> <target> Assign an OTA update target filter to a robot (alphanumeric only)
ClearOTATarget <serial> Clear the OTA update target filter for a robot
UpdateGetUpdateFrom <subsystem> <fromVersion> [filter] Query available update for a subsystem/version

OAuth Clients Admin

Command Arguments Description
OauthClientsAdminListClients List all OAuth clients
OauthClientsAdminCreate <clientId> <redirectUri> <responseType> <scope> <secret> ... (Not yet implemented)
OauthClientsAdminRemove <id> (Not yet implemented)
OauthClientsAdminUpdate [clientId] [aco] ... (Not yet implemented)

Examples

# Log in and save credentials to file
node jibo-app.js -s alpha-entrypoint -i MY_KEY_ID -k MY_SECRET \
    AccountLogin user@example.com mypassword -w ~/.jibo/credentials.json

# List loops, printing loop ID as an env var
node jibo-app.js -e LoopList

# Sync credentials to a robot named "jibo-abc123" on the local network
node jibo-app.js SyncCredentials user@example.com mypassword jibo-abc123

# Upload a photo to a loop
node jibo-app.js MediaCreate LOOP_ID photo.jpg /photos/photo.jpg image/jpeg

# Post a text message to a loop
node jibo-app.js JotCreateMessage LOOP_ID "Hello from CLI"

# Set log level on specific robot services
node jibo-app.js LogAdminSetLevel debug my-service-id another-service-id

# Set OTA target for a robot
node jibo-app.js SetOTATarget ABC123456 release

Credentials file format

{
    "region": "alpha-entrypoint",
    "accessKeyId": "YOUR_ACCESS_KEY_ID",
    "secretAccessKey": "YOUR_SECRET_ACCESS_KEY"
}