Command Palette

Search for a command to run...

CLI

Use the Nowly CLI to create, build, validate, and test presences locally.

The Nowly CLI is published as @nowly/cli on npm. Install it globally:

pnpm i -g @nowly/cli

Interactive Mode

Run the CLI without arguments to open an interactive menu:

nowly

Create a Presence

nowly init "Netflix"

The interactive prompt asks whether Discord already supports the platform if the user links their account. That writes discordNative in metadata.json. You can also pass it:

nowly init "Spotify" --discord-native

Build Presences

Build every presence:

nowly build

Build one presence:

nowly build youtube

Rebuild on file changes (reload the unpacked extension after each rebuild, or re-drop the zip if you use pack):

nowly build youtube --watch
nowly pack youtube --watch

Test a Presence Locally

There are two ways to load a built presence without the Nowly API. Full walkthrough: Load and Test Locally.

Pre-built extension

If you only cloned the presences repository (the common case for contributors), use nowly extension to get a ready-to-load browser-specific dev build without the full nowly monorepo:

nowly build youtube
nowly extension youtube             # Chrome (default)
nowly extension youtube --firefox
nowly extension youtube --f         # Firefox alias

This downloads the matching Chrome or Firefox dev extension from the CDN, bundles the presence(s) you list, and writes a dev-presences.json file into it.

For Chrome, load dist/extension-dev unpacked at chrome://extensions. For Firefox, load dist/extension-dev-firefox/manifest.json from about:debugging#/runtime/this-firefox with Load Temporary Add-on.

After editing the presence, rebuild and rerun nowly extension <slug>, then reload the extension.

Use --chrome / --c to select Chrome explicitly. Use --firefox / --f to select Firefox. The options are mutually exclusive.

To use a specific local extension build instead of the CDN one, pass --from:

nowly extension youtube --chrome --from ../nowly/apps/extension/dist/chrome
nowly extension youtube --firefox --from ../nowly/apps/extension/dist/firefox

Zip drop

If Nowly is already loaded as an unpacked development build, pack the presence and drop it in the Debug panel:

nowly pack youtube

The zip is written to dist/packs/youtube.zip. Drop it on Settings → Advanced → Debug. Unsigned zips only work on unpacked builds, not Chrome Web Store installs. Developer mode only reveals the Debug UI.

If you have the full monorepo

If you cloned nowly itself and ran pnpm repos (which clones presences into packages/presences), you can build the extension with every presence baked in directly:

pnpm build:extension:dev --bundled

Rebuild the changed presence then the extension after each change:

nowly build youtube
pnpm build:extension:dev --bundled

Reload at chrome://extensions - the presence is already installed and ready to use.

List Presences

nowly list

Validate Metadata

nowly validate