CLI

Run commands directly from your terminal. No config file needed to start — just npx nondual init.

Install

# use without installing
npx nondual <command>

# or install globally
npm install -g nondual

nondual init

Store your API key in ~/.nondual. All subsequent commands read it from there.

npx nondual init
# Prompts for email, creates a key, stores it locally
# Check your email to verify and unlock higher limits

nondual get-contact-info <email|url|phone|@handle>

Get the full contact profile: name, role, company, relationship summary, recent interactions, open followups, and recommended next action. Check do_not_disturb before any outreach.

npx nondual get-contact-info dario@anthropic.com

# Name:     Dario Amodei
# Role:     Co-Founder & CEO
# Company:  Anthropic
# LinkedIn: https://linkedin.com/in/darioamodei
#
# Relationship: 2 interactions. Follow-up is due.
# Recommended: Follow up with a concrete proposal.
FlagDescription
--enrich falseSkip external enrichment — workspace-only, instant
--plainHuman-readable text output (default: pretty JSON)

nondual record <email>

Record an interaction after outreach. Optionally create a followup or complete existing ones in the same call.

npx nondual record-contact-interaction dario@anthropic.com \
  --channel email \
  --summary "Sent intro about partnership opportunities"

# With a followup:
npx nondual record-contact-interaction dario@anthropic.com \
  --channel call \
  --summary "Discussed partnership" \
  --followup "Send proposal deck" \
  --due 2026-08-01

# Complete all open followups:
npx nondual record-contact-interaction dario@anthropic.com \
  --channel email \
  --summary "Sent the proposal" \
  --complete all
FlagRequiredValuesDescription
--channelyesemail call linkedin slack meeting sms otherCommunication channel
--directionnoinbound outboundWho initiated (default: outbound)
--summaryyesstringWhat happened
--detailsnostringFull body — email, transcript, notes
--details-filenopathFile whose contents become details
--followupnostringCreate a followup with this action text
--duenoISO dateDue date for the followup
--completenoall or comma-separated IDsComplete followups in the same call

nondual list-open-followups

List open followups with contact snippets. Shows for do-not-disturb contacts.

npx nondual list-open-followups
npx nondual list-open-followups --due-before 2026-08-01
npx nondual list-open-followups --company anthropic.com
npx nondual list-open-followups --plain

nondual get-company-activity <domain>

All contacts and recent interactions for a company domain.

npx nondual get-company-activity anthropic.com
npx nondual get-company-activity anthropic.com --plain

nondual search <query>

Search contacts by name, company, or email.

npx nondual search "anthropic"

nondual whoami

Show the active key and source.

npx nondual whoami

# Email:  you@example.com
# Key:    nd_12cb94...
# Source: ~/.nondual/config.json