Skip to main content

Install the Nango CLI

Install the Nango CLI globally:
npm install nango -g
In the folder where you want your integration folder (e.g. root of your project), run:
nango init nango-integrations
This creates the ./nango-integrations folder with some initial configuration and an example sync script. The nango-integrations directory looks like this:
nango-integrations/
├── .env
├── index.ts
└── demo-github-integration # this is the integration unique ID and must match an integration ID in the UI
    └── syncs/
        └── github-issue-example.ts

CLI Authentication

Add the following env vars. We recommend that you have a .env file in ./nango-integrations:
NANGO_SECRET_KEY_PROD='<prod-secret-key>'
NANGO_SECRET_KEY_DEV='<dev-secret-key>'
Get your prod and dev secret keys from the Environment Settings tab (toggle between the prod and dev environment in the left nav bar).
For self-hosting, set the NANGO_HOSTPORT env variable to http://localhost:3003 (for local development) or your instance’s URL.

All CLI commands & command details

Check out all CLI commands by running:
nango
Get details about a specific command by running:
nango [command] --help

Interactive Mode

The Nango CLI includes an interactive mode that prompts you for missing arguments. For example, if you run nango create without specifying the function type, integration, or name, the CLI will prompt you for them. This mode is enabled by default when you’re in an interactive terminal session.

Usage Examples

Interactive Usage: If you run a command without all the required arguments, the CLI will prompt you for them.
# Running "nango create" without arguments
$ nango create

? What type of function do you want to create?
   sync
    action
    on-event
Non-Interactive (Explicit) Usage: You can provide all arguments upfront to bypass the interactive prompts. This is ideal for scripting.
nango create --sync --integration my-api --name get-contacts

Disabling Interactive Mode

You can disable interactive mode in two ways:
  1. Using a flag: Pass the --no-interactive flag to any command.
    nango create --no-interactive
    
  2. In a CI environment: Interactive mode is automatically disabled when the CI environment variable is set. This is the standard way to detect CI/CD environments.

Backwards Compatibility

Interactive mode is fully backward compatible. If you provide all the required arguments for a command, the CLI will not prompt you for anything and will behave exactly as it did before.

Flags & environment variables

Global command flags:
# Command flag to auto-confirm all prompts (useful for CI).
# Note: Destructive changes (like removing a sync or renaming a model) requires confirmation, even when --auto-confirm is set. To bypass this restriction, the --allow-destructive flag can be passed to nango deploy.
--auto-confirm

# Command flag to disable interactive mode.
--no-interactive

# Command flag to skip automatic package.json updates and package installs.
# Recommended in CI and monorepos where dependency updates are managed elsewhere.
--no-dependency-update
Environment variables:
# Recommendation: in a ".env" file in ./nango-integrations.

# Authenticates the CLI (get the keys in the dashboard's Environment Settings).
NANGO_SECRET_KEY_DEV=xxxx-xxx-xxxx
NANGO_SECRET_KEY_PROD=xxxx-xxx-xxxx

# Nango's instance URL (OSS: change to http://localhost:3003 or your instance URL).
NANGO_HOSTPORT=https://api.nango.dev # Default value

# How to handle CLI upgrades ("prompt", "auto" or "ignore").
NANGO_CLI_UPGRADE_MODE=prompt # Default value

# Whether to prompt before deployments.
# Note: Destructive changes (like removing a sync or renaming a model) requires confirmation, even when NANGO_DEPLOY_AUTO_CONFIRM is set to true. To bypass this restriction, the --allow-destructive flag can be passed to nango deploy.
NANGO_DEPLOY_AUTO_CONFIRM=false # Default value

# Control automatic dependency updates. Set to "false" to skip installs (equivalent to --no-dependency-update).
NANGO_CLI_DEPENDENCY_UPDATE=true # Default value

Dependency management

For Zero YAML projects, the CLI can keep required dev dependencies (for example nango and related tooling) in sync and run package installation when needed.

--no-dependency-update

Use --no-dependency-update to disable automatic package.json updates and dependency installs:
nango deploy dev --no-dependency-update
This is especially useful when:
  • your CI pipeline should not modify files
  • your monorepo manages dependencies at the workspace root
  • you want full control over when install runs
In CI, dependency updates are automatically disabled to avoid hanging. Passing --no-dependency-update explicitly is still recommended to make intent clear and silence the warning.
When dependency updates are disabled, Nango will not install dependencies for you. Ensure dependencies are already installed before running commands.

Package manager support

Nango supports all major JavaScript package managers. The CLI automatically detects and uses your package manager for installs. Detection works from the current directory upward (monorepo-aware), in this order:
  1. package.json packageManager field (Corepack standard)
  2. lock files (pnpm-lock.yaml, yarn.lock, bun.lockb / bun.lock)
  3. fallback to npm
Supported managers are npm, pnpm, yarn, and bun.
Questions, problems, feedback? Please reach out in the Slack community.