@sonnechasser/ntrp
v2.4.0
Published
GTM Health Diagnostic CLI — local pipeline analysis tool
Maintainers
Readme
NTRP
GTM health diagnostic CLI — listen to your pipeline, report what you hear.
NTRP sits on top of your CRM exports and activity data, computes five vital signs (freshness, flow rate, drop rate, signal-to-noise, thread depth), and helps you investigate issues in plain English.
Requirements
- Node.js 22+
Install
npm install -g @sonnechasser/ntrpLicense & trial
NTRP requires a license key from Lemon Squeezy. Customer keys are UUID format (e.g. 36150FCC-711E-4BCA-...) delivered by email after checkout. NTRP- prefixed keys are a git-checkout/CI path only and are not accepted by the published npm build.
Use is governed by the proprietary LICENSE in this package. Activating a key accepts those terms.
On first launch, ntrp opens the signup checkout (free trial or Pro), then prompts you to paste your key.
| Flow | Command | Checkout |
|------|---------|----------|
| New signup (trial or Pro) | First launch, /checkout | Signup |
| Trial → Pro upgrade | /upgrade | Pro only |
Trial policy: 11 days full access, then grace through day 30. After day 30, run /upgrade and paste your Pro key.
Activate manually if you already have a key:
ntrp activate <your-license-key>In the REPL: /activate <your-license-key>
Test as a new user
npm uninstall -g @sonnechasser/ntrp
rm -rf ~/.ntrp
npm install -g @sonnechasser/ntrp@latest
ntrpQuick start
Launch the interactive REPL (license prompt runs first if needed):
ntrpVerify setup:
ntrp setup checkOn first run, complete /onboard to set up your company profile, or load sample data:
- Type
use demo datain the REPL, or - Run
ntrp demo --scenario hidden_crisis --no-profile
Then ask questions naturally — e.g. "is our pipeline healthy?" or "what's stuck?"
Setup check
See license, profile, LLM keys, and local paths:
ntrp setup checkHeadless / JSON output:
ntrp setup check --jsonCommon commands
| Command | Description |
|---------|-------------|
| ntrp | Open the interactive REPL |
| /home | Status dashboard (license, profile, dataset, progress) |
| /progress | Usage stats and milestone ladder (no license required) |
| /checkout | Open signup checkout in browser |
| /upgrade | Trial → Pro checkout + paste key |
| /onboard | Company profile wizard |
| /demo | Load demo scenario data |
| /handoff | Export or agent prompts |
| /update | Upgrade to the latest npm version |
| ntrp setup check | Validate local configuration |
Type /help inside the REPL for shortcuts.
AI features (optional)
For AI-powered findings and /ask, store API keys in ~/.ntrp/config.json:
ntrp config set api-key <anthropic-key>
ntrp config set openai-api-key <openai-key>Core vital-sign computation works without AI keys.
Update
Inside the REPL:
/updateOr reinstall:
npm install -g @sonnechasser/ntrp@latestData & config
Local state lives in ~/.ntrp/ (config, sessions, DuckDB datasets). Override with NTRP_HOME if needed.
Progress (usage tracking) — install-scoped, separate from pipeline data:
| File | Purpose | Survives /scratch? |
|------|---------|----------------------|
| install.json | Stable install identity on this machine | Yes (default) |
| progress.json | Hours saved, milestones, usage stats | Yes (default) |
ntrp reset --force— clears DuckDB pipeline data only; progress unchanged/scratch— wipes config, profile, sessions, datasets; preserves progress by default/scratch --include-progress— also wipesinstall.jsonandprogress.json/progress reset— clears hours/milestones; keepsinstall.jsonrm -rf ~/.ntrp— removes everything (nuclear option)
Checkout URL overrides (optional):
NTRP_CHECKOUT_URL— signup / first-runNTRP_UPGRADE_URL— Pro upgrade (/upgrade)
Release Process
How a new version of @sonnechasser/ntrp reaches npm today. This is a reference for release review — it does not change how releases work.
What triggers a release
A maintainer (or their assistant, acting on the maintainer's explicit version approval) runs node scripts/release-ntrp.mjs X.Y.Z. That script:
- Bumps
package.json/package-lock.jsontoX.Y.Z. - Commits
Release X.Y.Zonmainand pushes it. - Creates and pushes the git tag
vX.Y.Z. - Waits for GitHub Actions and reports the result.
Pushing that v* tag is the trigger. The script never runs npm publish itself.
What must be true first
mainis green and the release commit is onmain— a tag publishes with the workflow file as of the tagged commit, so any workflow fix has to land onmainbefore the tag is cut.- The version does not already exist on npm. The script stops rather than republish.
X.Y.Zis higher than the currentpackage.jsonversion (unless the tag already exists and only the publish needs retrying).- The working tree is clean.
The exact version number is Dan's call. Naming the version is the approval to ship; nothing publishes without it.
What GitHub Actions does automatically
.github/workflows/publish-npm.yml runs on any pushed v* tag (and can be re-dispatched manually for a tag that was pushed but never published, without moving the tag). It:
- Checks out the tagged commit.
- Uses Node 22 — pinned because DuckDB's native binding has no Node 24 prebuild.
- Upgrades the npm CLI to
>= 11.5.1, which trusted publishing requires. - Runs
npm ci, confirms the DuckDB binding loads, and builds. - Runs the pre-publish checks
npm run test:publish-pack(tarball contents) andnpm run test:publish-workflow(workflow contract). - Publishes with
npm publish --access publicusing npm trusted publishing over OIDC. There is noNPM_TOKENsecret in this repo, and none should ever be added.
CI is the DuckDB test gate; the publish job does not repeat the full smoke suite.
Publishing never happens outside GitHub Actions
npm publish must never be run from Slack, Cursor, Devin, any agent shell, or a laptop. The only path to npm is the tag-triggered GitHub Actions workflow, after Dan has approved the exact version.
One-time npm Trusted Publisher setup
This flow depends on one piece of configuration outside the repo. On npmjs.com → @sonnechasser/ntrp → Settings → Trusted Publisher → GitHub Actions:
| Field | Value |
|---|---|
| Organization or user | sonnechasser |
| Repository | ntrp-cli-v2 |
| Workflow filename | publish-npm.yml (filename only, not the full path) |
| Allowed actions | npm publish |
The workflow must also exist on the default branch. These are configuration identifiers, not secrets.
If a release fails
Do not create a second tag. Check whether the tag was pushed and whether npm has the version, then look at the two most likely causes:
- DuckDB / Node version mismatch — the publish run fails installing or loading
duckdb. The tagged commit is running an old workflow that used Node 24. Get the Node 22 workflow ontomain, then ship the next version. - Missing or misconfigured npm Trusted Publisher — the publish step fails with a 404 or an authentication error. Re-check the four Trusted Publisher values above; the workflow filename in particular must match
publish-npm.ymlexactly.
If a tag exists but npm does not have that version, either re-dispatch the workflow for that tag from main (gh workflow run publish-npm.yml --ref main -f ref=vX.Y.Z) or ship the next version so the tagged commit includes the current workflow.
Links
- Website: ntrp.sonnechasser.com
- npm: @sonnechasser/ntrp
- Repository: github.com/sonnechasser/ntrp-cli-v2
- Issues: GitHub Issues
License
Proprietary commercial software. See LICENSE. A valid Lemon Squeezy key is required to use the published CLI. The npm package does not grant rights to copy, modify, redistribute, or extract the software to build a competing product.
