@robinai/cli
v0.1.13
Published
Robin API CLI — scriptable access to the Robin platform
Readme
Robin CLI
▄████▄ ▄████▄ ▄████▄ ██ ███▄ ██
██ ██ ██ ██ ██ ██ ██ ████▄ ██
█████▀ ██ ██ █████▀ ██ ██ ▀█▄██
██ ██ ██ ██ ██ ██ ██ ██ ▀███
██ ██ ▀████▀ █████▀ ██ ██ ▀██Scriptable command-line access to the Robin platform. Built for humans and automation alike.
Install
npm install -g @robinai/cli@latestQuick Start
# Authenticate
robin auth login
# Set defaults (optional, reduces repetition)
robin config set default-agent <agentId>
# List Robins
robin agents list
# Send a message
robin conversations reply <threadId> --content "Hello!"
# Automation-friendly JSON output
robin agents list --jsonInteractive Mode
Launch the keyboard-driven terminal UI for browsing Robins, conversations, and customers:
robin uiNavigate with arrow keys, select with Enter, and go back with q or Escape.
The Customers path opens a customer dossier showing identity (phone, external ID, opt-in status, tags), context (notes, welcome message), timeline, and any additional API fields. From the dossier, press c to open the related conversations list for that Robin.
Chat Mode
Open a full-screen chat window with a Robin over the same web channel used by the Robin web app:
# Use the default Robin (set via `robin config set default-agent <id>`)
robin chat
# Or specify a Robin directly
robin chat <agentId>
# Override the API key or base URL for this session
robin chat <agentId> --api-key <key>Controls inside the chat window:
| Input | Action |
|-------|--------|
| Type + Enter | Send message |
| Esc | Exit chat |
| /reset | Clear conversation history on the web channel |
| /quit | Exit immediately |
Messages sent here are the same ones visible in the Robin web app's "Test Chat" view for that Robin. If no Robin is provided and no default is configured, a picker is shown first.
Local Development
Install dependencies once:
npm installFor quick checks while editing:
npm run typecheck
npm run buildTo test the local CLI globally, build and link it:
npm run build:link
robin --help
robin uiAfter linking, robin points at your local checkout. Re-run npm run build after code changes so dist/ is updated before testing. To remove the local link:
npm run unlinkProxy Support
robin uses Node's built-in fetch, which does not automatically honor proxy environment variables. The CLI configures undici's global dispatcher at startup when ROBIN_PROXY is set:
ROBIN_PROXY=http://127.0.0.1:8080 robin agents listGeneric proxy environment variables such as HTTPS_PROXY, HTTP_PROXY, and ALL_PROXY are ignored so proxying remains an explicit Robin CLI opt-in.
Why
Robin users need a fast, scriptable way to interact with the Robin API without hand-rolling HTTP calls. The CLI maps 1:1 to the API surface, with:
--jsonflag for clean structured output (pipes, jq, automation)- Human-readable formatted output with loading spinners and error boxes
- Interactive
robin uimode for keyboard-first navigation - Global flags for CI and multi-environment use (
--api-key,--base-url) - Persistent defaults so you don't repeat
--agenton every command
Commands
| Group | Commands |
|-------|----------|
| auth | login, logout, status |
| config | set, get, list |
| agents | list, get, create, update, threads, metadata, configs |
| customers | list, get, create, update, bulk-import, announcements |
| conversations | get, reply, pause, resume |
| announcements | list, create, update, delete, tag-counts, schedule-message |
| tags | list, get, create, update, delete, assign, unassign |
| websites | list, add, update, remove, configure |
| invitations | list, create, revoke |
| teams | list, get |
| ui | Launch interactive shell |
Global flags
| Flag | Description |
|------|-------------|
| --json | Output raw JSON (for scripting, piping to jq, automation) |
| --api-key <key> | Override stored API key |
| --base-url <url> | Override stored base URL |
| --agent <id> | Override default Robin ID |
| --team <id> | Override default team ID |
| --verbose | Show request/response details on stderr |
Destructive commands
delete and remove commands prompt for confirmation by default. Pass --yes to skip:
robin tags delete <tagId> --yes
robin announcements delete <announcementId> --yes
robin websites remove <agentId> <websiteId> --yesDocs
- Getting Started
- Full Command Reference — AI-optimized, every flag documented
Tech
- TypeScript + Commander.js + Ink
- Node 18+ (uses built-in
fetch) - Config stored at
~/.robin/config.json
License
MIT
+nLpOQdX qFut@wcz|@t
lp@@@@DRmYk@@pc> F@zLc^ !rB@
|@@@@DDBqOOmO00YtUB@@@@+ p@zcZ|>XvR@
Y@zl!~= :!nYL0QXn!~~ld@v c@Jzct!vn#@
J@n= ~!< U@ ihmLzfjun@d
v@l)hd&@@rLB@@@@@bYrJu O@ pwCjrJjr@U
= +@@x :h@@@RRp; ;< u@ ZddXjztj@r
@@@@@@#@! +t 0@ r;)nLLOQwdw> LC ; OppzfJtr@x
i@(rl(z q, x(@@jUzYLQLvJpwmOmdOcwm@@l Xdhv|)t(@n
J@@QtrzzJhh0ZU(LOLJuY0LZLnzUYQQ0JU#c cdC)v<FkDz
cF@R0@Gd0z>trt)lxvzCYULQJJLOCLLYYBGd<)qciY(X@@t
@mOOOOcfvcuOZbQLQQQQJcYJCCCL0ZkZlr0@btm@c
@OLXrvY0OJQwcJQQJYYzXzvcuYXYJL>,rd@GpL@d
(@UzrzcvfjvxnxxXJnvXvuf)rYLGRLn c@@@dqB@bq
FBD((xtl(tflfnrxzncJLmwvjvJLLurrb@@#F#@@@|
@bkzvYLnccvcYYLQzvczQZppLt|jjx|zbpGG@@#@@
@mbqnrvrrrmkRmUczLJzuvvLdQ(+~~<)= :nuqh@@(
@@b0J> urQO, ;)junxXzYntjY0X! +LcYB&&@@w:
@@O@GXfnf++vx)<itvXzzYzcflt<== c@@@@hFu OGv
=@@qbqXzcz>,l)((|)frnnnnxvcXrnwcftxLCr x#O
^@@kR#DGFGdJUnnnnrnnfnxjtvnjk@@@qR@@@Cq< O|
@@@RZh0LZR@FJflxzXvrjnrzX!Y@@#G@@@ vhL;n~
)@@@@DhmQLdRDw0CYLZJx>;^>,^rQ@Bn <ffY+
!@@@@@@DdR#RFk0JvO&@@RCjrlt@ lpX
)@@@@@@@O@@@@@@@@@@@@v+iUx +
: d@kwq&hX|)+ px
k h
O@ ;@
&D ZQ
,&n Y>
+QJ),:QCv ; um@DRLZL(r |
=uZmdbFkpG@##bJuJZJOqpR@@@@F@m(li<^