CLI
npm i -g https://docs.roots.sh/dl/roots-sh-0.1.0.tgz
Or run the install script, which needs Node 18 or later:
curl -fsSL https://docs.roots.sh/install.sh | sh
roots signup # or: roots login, roots login --key rk_…
roots brief
roots 0.1.0 the Roots command line https://docs.roots.sh/cli
Start
roots signup Create an account (sample farm included)
roots login [--key rk_…] Sign in and save a key for this machine
roots whoami Who and which mode
roots mode test|live Switch between test and live data
Farm
roots brief What needs you now
roots farms List farms
roots alerts [--all] Alerts, most urgent first
roots alerts ack|resolve <id>
roots animals [search] Find animals by tag, EID, name or breed
roots animals add species=cattle tag=118 eid=840… breed=Angus
roots log <type> subject=<id> [k=v…] e.g. roots log weight subject=ani_… kg=548
roots tasks | roots tasks add "Fix trough 3" | roots tasks done <id>
roots devices [--type roost] Devices with battery and last report
roots readings <device> [--metric climate.nh3_ppm] [--since 2026-10-18]
Roost
roots roost Every Roost: feed, water, climate, doors, move
roots roost <command> [k=v…] [--roost "Roost 1"]
doors.close doors=all · doors.open doors=1,2,3 · move.start · move.stop
feed.dispense kg=20 · climate.set_mode mode=winter · heaters.set mode=auto
floor.deploy · floor.retract · spines.set_height mm=240 (roots catalog for all)
Build
roots keys | roots keys create [--name ci] [--mode live]
roots webhooks add https://… [--events alert.created,command.done]
roots simulate <rd_device_key> [--count 5] Report like a Roost would
roots api GET /v1/farms Any endpoint, raw
roots mcp Connect Claude, ChatGPT, Cursor or any MCP client
roots catalog Metrics, commands and alert rules
Flags: --json --farm <id> --mode test|live --key <rk_…>
Every command takes --json for scripts. Keys live in ~/.config/roots/config.json; ROOTS_API_KEY overrides them.