@pendo/novus-cli
v0.1.3
Published
Register for and set up Novus from the command line — built for humans and AI agents
Readme
@pendo/novus-cli
Register for and set up Novus from the command line — built for humans and AI agents.
npx @pendo/novus-cli@latest initAlways invoke via @latest: a bare npx @pendo/novus-cli reuses the npx
cache and can silently stay on an old version; @latest re-resolves the
dist-tag on every run.
init walks the whole journey: create an account, verify your email,
pick the Pendo app, connect GitHub, run the setup scan, and surface the
Novus install pull request.
Commands
| Command | Purpose |
| ---------------------------- | --------------------------------------------------------------------------- |
| novus init | Full journey — register/login → connect → setup scan → install PR |
| novus register | Create an account + subscription |
| novus login | Sign in with email/password or SSO |
| novus status | Where you are in the journey + the exact next command to run |
| novus apps list · use <id> | Pick the Pendo app to set up — use takes an id, an app name, or default |
| novus connect github | Connect GitHub and link a repository |
| novus setup | Start or attach to the setup scan (--watch, --no-watch, --restart) |
| novus mcp | Print or --apply MCP config for Claude Code / Cursor / Codex |
| novus whoami · logout | Session management |
| novus telemetry [on\|off] | Show or set CLI telemetry |
| novus reset [--all] | Clear local setup state so init starts over |
Global flags
| Flag | Purpose |
| ------------ | ------------------------------------------------- |
| --json | Machine-readable NDJSON output (for AI agents) |
| --quiet | Suppress non-essential output |
| --no-input | Never prompt; missing input is an error |
| --verbose | Log API interactions to stderr (secrets redacted) |
| --version | Print CLI version |
| --help | Full command list |
For AI agents
Every command supports --json (stable envelope + NDJSON progress events) and
typed exit codes — exit 4 always means "a human must act" and the envelope
says exactly what to relay and how to resume. The whole journey is resumable:
agents loop novus status --json → run next_steps[0].run → repeat until
complete. For the full automation contract, see CLAUDE.md.
Exit codes
| Code | Meaning |
| ---- | -------------------------------------------- |
| 0 | Success |
| 1 | Unexpected error |
| 2 | Usage / validation error |
| 3 | Auth required — run novus login |
| 4 | Waiting on a human — relay waiting_on |
| 5 | Precondition / conflict |
| 6 | Network error |
| 7 | Timeout (server-side work continues) |
| 8 | Rate-limited — respect retry_after_seconds |
Telemetry
After a successful sign-in or registration, the CLI reports the local
environment (installed agent CLIs, whether the Novus MCP server is
configured — never repo names, paths, or file contents) as a telemetry
event. The first send prints a notice. Opt out any time with
novus telemetry off, or set NOVUS_TELEMETRY=off; telemetry is
best-effort and never blocks or fails a command.
Terms of Service
register (and init) asks you to accept the
Novus Terms of Service before creating
an account. --accept-tos records acceptance up front for unattended use.
