npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@jawwws/bytes-cli

v0.2.0

Published

Command line interface for the Jawwws Bytes Developer API

Readme

Jawwws Bytes CLI

Command line interface for the Jawwws Bytes Developer API.

Jawwws Bytes helps small teams create, manage and measure short links, QR codes and Offline Engagement from one workspace. The CLI is for people who want to create and manage those links from scripts, deployments and repeatable workflows.

Requirements

  • Node.js 24 or newer
  • A Jawwws Bytes workspace
  • A workspace API key

Install

npm install -g @jawwws/bytes-cli

For local development:

npm install
npm run build
npm link

Create an API key

API keys are managed inside your Bytes workspace.

Open the app, choose the workspace you want the CLI to use, then go to:

Workspace Settings > Developer API

Direct app link:

https://app.jaww.ws/dashboard/workspace-settings?tab=api

Developer API authentication docs:

https://developer.jaww.ws/developer-api/authentication/

Keep API keys private. Do not commit them to source control or paste them into tickets, chat or documents.

Authentication

For scripts and CI, use an environment variable. This keeps the key out of your project files.

export BYTES_API_KEY="jwb_live_xxx"

Then run commands normally:

bytes tags list

For a local machine you control, you can store the key in the Bytes CLI config:

bytes config set-api-key jwb_live_xxx

The local config path is:

~/.config/jawwws-bytes/config.json

API base URL

The production API base URL is:

https://api.jaww.ws/api/v1

For local testing:

BYTES_API_BASE_URL=http://localhost:8000/api/v1 bytes tags list

Links

Create a short link:

bytes links create https://example.com/cops-and-coffee/coffee-tasting \
  --slug cops-coffee-tasting \
  --title "Cops and Coffee tasting event" \
  --channel print \
  --utm-source poster \
  --utm-medium qr \
  --utm-campaign coffee-tasting \
  --utm-content poster-v1

Expected output:

Short link created

ID: 01K0M4ZN8X7P9Q2R3S4T5V6W7X
Short URL: https://jaww.ws/cops-coffee-tasting
Slug: cops-coffee-tasting
Destination: https://example.com/cops-and-coffee/coffee-tasting
Title: Cops and Coffee tasting event
Status: active
Channel: print
UTM source: poster
UTM medium: qr
UTM campaign: coffee-tasting
UTM content: poster-v1

The link id shown by the CLI is an opaque public link ID. It is safe to use in Developer API and CLI commands. It is not the internal database ID.

List links:

bytes links list --per-page 10

Search links:

bytes links list --q coffee

Show one link:

bytes links get 01K0M4ZN8X7P9Q2R3S4T5V6W7X

Update a link:

bytes links update 01K0M4ZN8X7P9Q2R3S4T5V6W7X \
  --destination-url https://example.com/cops-and-coffee/new-page \
  --title "Updated Cops and Coffee tasting page" \
  --utm-content poster-v2

Mark a link inactive:

bytes links update 01K0M4ZN8X7P9Q2R3S4T5V6W7X --inactive

Archive a link:

bytes links archive 01K0M4ZN8X7P9Q2R3S4T5V6W7X --yes

Use JSON output for scripts:

bytes links list --json
bytes links get 01K0M4ZN8X7P9Q2R3S4T5V6W7X --json
bytes links create https://example.com --slug example --json

Tags

List tags:

bytes tags list

Create a tag:

bytes tags create "Coffee tasting" --slug coffee-tasting --colour "#2563eb"

Update a tag:

bytes tags update 01K0M5ABCD7EFGHJKMNPQRSTVW --description "Links for coffee tasting events"

Delete a tag:

bytes tags delete 01K0M5ABCD7EFGHJKMNPQRSTVW --yes

Attach tags to a link:

bytes links tags attach 01K0M4ZN8X7P9Q2R3S4T5V6W7X --tag-ids 01K0M5ABCD7EFGHJKMNPQRSTVW,01K0M5BCDE8FGHJKMNPQRSTVWX

Remove a tag from a link:

bytes links tags detach 01K0M4ZN8X7P9Q2R3S4T5V6W7X 01K0M5ABCD7EFGHJKMNPQRSTVW

The tag id shown by the CLI is an opaque public tag ID. It is safe to use in Developer API and CLI commands and is not the internal database ID.

Supported commands

bytes --help
bytes --version
bytes config show
bytes config set-api-key <api-key>
bytes config clear-api-key
bytes links list
bytes links create <destination-url>
bytes links get <link-id>
bytes links update <link-id>
bytes links archive <link-id> --yes
bytes tags list
bytes tags create <name>
bytes tags update <public-tag-id>
bytes tags delete <public-tag-id>
bytes links tags attach <link-id>
bytes links tags detach <link-id> <public-tag-id>

Public API scope

The CLI only uses documented /api/v1 Developer API endpoints.

It does not call:

  • browser session routes
  • admin APIs
  • internal Laravel endpoints
  • private dashboard APIs

Development

npm install
npm run typecheck
npm run test
npm run build

Run locally without linking:

npm run dev -- --help
npm run dev -- links create https://example.com --slug example
npm run dev -- links list

Verify the package contents before publishing:

npm run release:check

This runs typecheck, tests, build and npm pack --dry-run.

Documentation

Developer API docs:

https://developer.jaww.ws/developer-api/

OpenAPI YAML:

https://developer.jaww.ws/openapi/bytes-developer-api.openapi.yaml