Command line access to Jo memory and brain for terminals, scripts, and other agents.
Use it to let another coding agent or automation read and write the same context you keep in Jo.
curl -fsSL https://github.com/jo-inc/jo-cli-releases/releases/latest/download/install.sh | shThen verify the command is available:
jo --helpIf jo is not found, add ~/.local/bin to your PATH:
export PATH="$HOME/.local/bin:$PATH"Use browser login:
jo loginOr provide an access key:
jo login --api-key <jo-api-key>To avoid saving the key in shell history, pass it through stdin:
printf '%s' "$JO_API_KEY" | jo login --api-key -Check the signed-in account:
jo whoamiRemove locally stored credentials:
jo logoutUpdate the CLI:
jo updateRemember something:
jo brain remember "The release checklist is in the project docs"Pipe text into Jo:
echo "Use the project docs for release steps" | joSearch memory:
jo brain recall "release checklist" --limit 5Ask using remembered context:
jo brain ask "what should i check before shipping?"Import notes:
jo brain import ./notes.md
jo brain import ./notes-folderFor another agent or script, set an API key in the environment:
export JO_API_KEY=<jo-api-key>
jo brain recall "project constraints" --jsonUseful commands for agent tools:
jo brain remember "..."
jo brain recall "..." --json
jo brain ask "..." --json
jo brain import ./path/to/notes- The CLI stores local auth in
~/.jo/config.json; protect this file like a bearer token and avoid syncing it into dotfiles. - Imports are capped at 10 MB per file by default. Override with
JO_MAX_IMPORT_BYTESif needed. - Jo checks for CLI updates at most once per day. Set
JO_CLI_NO_UPDATE_CHECK=1to disable this. - Use
--jsonwhen calling from scripts or agents. - Do not save secrets unless you intentionally want Jo to remember them.
Each release includes:
install.shjo-cli-<version>.tar.gzjo-cli-latest.tar.gzSHA256SUMS
The installer downloads the latest tarball, verifies it against SHA256SUMS, validates archive paths, and installs jo into ~/.local/bin.