CLI Reference#

Warning

Project Neo is currently in Technical Preview. Features described in this section may change before general availability.

All commands are invoked as nextgen <command>. Run nextgen with no arguments to print the full command list.

nextgen create project#

Scaffolds a complete extension project in a new directory. Must be run from the parent directory where you want the project folder created.

nextgen create project

Prompts

Prompt

Description

Project name

Confirms or collects the name. Accepted characters are letters, digits, hyphens, underscores, and dots. No spaces.

Squirro API endpoint

Your instance URL. Must start with https:// or http://.

Refresh token

From My Account → API Access in your Squirro profile.

Port confirmation

If the default ports (3001, 5555) are in use, the CLI suggests alternatives.

What gets created

  • Complete project directory with all configuration files.

  • src/manifest.ts with an empty dashboards array.

  • src/dashboards/ directory for your components.

  • .env with your API credentials.

  • All dependencies installed, including @squirro/nextgen-core.

Tip

If credential verification fails due to a wrong URL or expired token, you can continue anyway and fix it later with nextgen config.

nextgen create dashboard#

Adds a new dashboard to an existing extension project. Must be run from within a project directory.

nextgen create dashboard [<name>]

The dashboard name can be passed as a positional argument to skip the name prompt:

nextgen create dashboard Analytics

Prompts

Prompt

Default

Description

Dashboard name

None

Displayed in the sidebar.

Route path

Kebab-case of name

URL segment, for example analytics.

Lucide icon name

layout-dashboard

Icon name from lucide.dev/icons. Use the kebab-case name shown there.

What gets created

  • src/dashboards/{ComponentName}.tsx: starter dashboard component.

  • src/manifest.ts: new entry added to the dashboards array.

  • src/main.tsx: import and development route added.

nextgen remove dashboard#

Interactively removes a dashboard from the project. Must be run from within a project directory.

nextgen remove dashboard

The CLI lists all dashboards found in src/manifest.ts and prompts you to select one. After confirmation, it:

  • Removes the entry from src/manifest.ts.

  • Removes the import and route from src/main.tsx.

  • Deletes the component file from src/dashboards/.

Warning

This command permanently deletes the component file. Commit or back up your work before running it.

nextgen dev#

Starts the local development environment. Must be run from within a project directory.

nextgen dev

Two servers start in parallel:

Server

Default port

Role

Dev proxy

5555

Serves the pre-built Project Neo host, handles authentication, and proxies API requests.

Extension dev server

3001

Builds and serves your extension via Module Federation.

Open http://localhost:5555 in your browser.

Port conflicts: if either port is already in use, nextgen dev exits with an error. Change the port in .env using EXTENSION_PORT or DEV_PROXY_PORT, or stop the conflicting process.

Live reload: the dev server watches your src/ directory and reloads the browser automatically when files change.

Stopping: press Ctrl+C to shut down both servers cleanly.

Tip

Keep http://localhost:3001/mf-manifest.json open in a second browser tab during development. If it returns JSON, your extension server is running correctly.

nextgen build#

Builds the extension for production deployment. Must be run from within a project directory.

nextgen build

Outputs optimized static files to dist/:

dist/
├── mf-manifest.json     # Module Federation manifest (loaded by the host)
├── *.js                 # Bundled extension chunks
└── *.css                # Styles

Deploy the entire dist/ folder to a static file server or CDN. For deployment details, see the Building and Deploying page.

nextgen config#

Interactively edits the .env configuration. Must be run from within a project directory.

nextgen config

Presents a menu for updating API credentials and port settings. For API credentials, the CLI validates the new token against the Squirro API before saving. If validation fails, you can save anyway and correct it later.

nextgen info#

Displays a summary of the current project configuration and dashboards. Must be run from within a project directory.

nextgen info

Example output:

┌──────────────────────────────────────────┐
│  Project Info                            │
│                                          │
│  Project:    my-dashboards               │
│  Version:    1.0.0                       │
│  API:        https://your-instance.example.com│
│  Token:      abc...xyz                   │
│  Dashboards: 2                           │
│    - Analytics /analytics                │
│    - Reports   /reports                  │
└──────────────────────────────────────────┘

The Token field shows the SQUIRRO_TOKEN value from your .env file, masked to the first and last three characters. Use it to confirm that a token is set and to identify which token is active when switching between projects. To validate the token against the API or replace it, run nextgen config and select API credentials.

nextgen translations init#

Scaffolds translation files for your extension. Must be run from within a project directory. Designed to run once during initial setup.

nextgen translations init

Creates the following files:

  • src/translations/en.json: English strings (also creates de, fr, and it).

  • src/translations/use-translation.ts: typed useExtTranslation() hook.

Also updates src/manifest.ts to include the translations configuration.

Note

This command fails if translations are already configured in the project.

For full details, see the Translations page.

nextgen translations keys#

Lists all translation keys available in the Project Neo host application. Must be run from within a project directory.

nextgen translations keys

To filter by keyword, use the --search flag:

nextgen translations keys --search chat

Use this command to discover keys that your extension can override. Keys are printed in namespace:dotted.path format, which is the same format used in your translation JSON files.

Example output:

chat:welcome.inputPlaceholder
chat:welcome.title
common:actions.save
common:actions.cancel
...
247 keys listed.