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

dtpilot

v0.1.4

Published

Thin CLI client for the DataPilot server — unified agent-friendly commands over WebSocket.

Readme

dtpilot

Thin CLI client for a running DataPilot server. The CLI is designed to be driven by external agent tools (Claude Code, Codex, etc.) — every capability is reachable through a uniform entity action grammar with flat flags for identity and JSON input for data.

Install

npm install -g dtpilot

Requires Node.js ≥ 22 (for native WebSocket and crypto.randomUUID). No runtime dependencies are pulled in.

Verify the install:

dtpilot --version
dtpilot --help

Connect to a server

The CLI talks to a DataPilot server over WebSocket. It resolves the URL and token in this order:

  1. --url <ws-url> / --token <secret> flags
  2. $DATAPILOT_SERVER_URL / $DATAPILOT_SERVER_TOKEN env vars
  3. Discovery file at ~/.datapilot/.server.endpoint (written by the DataPilot desktop app)
  4. Default: ws://127.0.0.1:9100

For a DataPilot desktop install the discovery file is written automatically — once the app is running, dtpilot workspace list works out of the box. For other setups, point the CLI at your server explicitly:

export DATAPILOT_SERVER_URL=ws://127.0.0.1:9100
export DATAPILOT_SERVER_TOKEN=...secret...
dtpilot workspace list

For self-signed TLS: --tls-ca <path> or $DATAPILOT_TLS_CA.

Command shape

dtpilot [global-flags] <entity> <action> [positionals...] [flags...]
  • Entitiesworkspace, session, source, label, skill, automation, batch
  • Flat flags carry only identity or query params: --name, --event, --limit, etc.
  • Data fields go through JSON: --input '<json>' or --stdin for payloads

Run dtpilot <entity> with no action to list that entity's actions.

Output

  • When stdout is not a TTY (piped, captured by an agent), the CLI emits a JSON envelope:
    { "ok": true, "data": ..., "warnings": [] }
  • When stdout is a TTY, the CLI renders a human-readable view.
  • Force either mode with --json / --human.

This envelope contract is what makes the CLI agent-friendly — stable, parseable output everywhere an agent plugs in.

Examples

List workspaces and sessions:

dtpilot workspace list
dtpilot --workspace <id> session list

Create a label:

dtpilot label create --name TODO --input '{"color":"blue"}'

Send a message to an existing session:

dtpilot session message <session-id> --input '{"text":"summarize yesterday"}'

Create an automation:

dtpilot automation create \
  --name "nightly-recap" \
  --event SchedulerTick \
  --input '{"cron":"0 22 * * *","actions":[{"type":"prompt","prompt":"Post a recap"}]}'

Development

This package is developed inside the datapilot monorepo. Inside the repo:

bun run apps/cli/src/datapilot.ts <entity> <action> ...   # run from source
bun test apps/cli/src/                                    # tests
bun --cwd apps/cli run build                              # produce dist/datapilot.js

The published tarball contains only dist/, this README, and the license — no source or tests.

License

Apache-2.0. See LICENSE.