Skip to navigation

CLI

livingbrain — every API operation as a command, for scripts, terminals, and agents.
Generated by Fern

Any coding agent that can run shell commands can use livingbrain directly. Install it, set your key, and ask the agent to save or find something.

Claude Code
>Save the notes from today's onboarding call to my Research brain
●Bash(livingbrain brains list --query "[?name=='Research'].id")
└["brn_01"]
●Bash(livingbrain captures capture --brain-id brn_01 --json '{"kind": "note", "content": "The customer prefers weekly check-ins and dislikes long emails."}')
└{ "id": "src_01", "kind": "note", "status": "pending" }
●Saved to Research. Living Brain links it to related pages once it finishes compiling.
>

Install

Build from source with the Rust toolchain:

git clone https://github.com/fern-demo/livingbrain-cli
cd livingbrain-cli
cargo build --release
./target/release/livingbrain --help

Authenticate

The CLI reads the same two values as the SDKs. Set them as environment variables, or pass --api-key and --subject-id on any command:

export LIVING_BRAIN_API_KEY="lb_live_..."
export LIVING_BRAIN_SUBJECT_ID="user_123"

A .env file in the working directory is loaded automatically. To store the key in your OS keyring instead, run livingbrain auth login.

Usage

Commands follow the SDK namespaces: livingbrain <namespace> <method>.

livingbrain brains list
livingbrain workspace list-pages --brain-id brn_123
livingbrain workspace archive --brain-id brn_123 --slug old-idea
livingbrain slack status --brain-id brn_123

Run livingbrain <namespace> --help to see every method and its flags.

Request bodies

Pass request bodies as flags, or as JSON with --json (use - to read from stdin):

livingbrain captures capture --brain-id brn_123 \
--json '{"kind": "note", "content": "Worth remembering."}'

Output

Output is a table in a terminal and JSON when piped. Override it with --format (json, table, yaml, csv, jsonl), and filter with a JMESPath --query:

livingbrain brains list --query '[].name' --format json

--dry-run prints the request without sending it, which helps when scripting.