npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@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@latest

Quick 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 --json

Interactive Mode

Launch the keyboard-driven terminal UI for browsing Robins, conversations, and customers:

robin ui

Navigate 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 install

For quick checks while editing:

npm run typecheck
npm run build

To test the local CLI globally, build and link it:

npm run build:link
robin --help
robin ui

After 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 unlink

Proxy 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 list

Generic 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:

  • --json flag for clean structured output (pipes, jq, automation)
  • Human-readable formatted output with loading spinners and error boxes
  • Interactive robin ui mode for keyboard-first navigation
  • Global flags for CI and multi-environment use (--api-key, --base-url)
  • Persistent defaults so you don't repeat --agent on 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> --yes

Docs

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<^