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

@label21/tstation

v0.3.0

Published

Command-line client for the Turing Station public API

Readme

tstation

Command-line client for the Turing Station public API.

Works without an account for publicly visible content. With an API key from your Turing Station account settings, it unlocks the content your membership includes.

Usage

No install needed:

npx @label21/tstation posts list

Or install globally to get the tstation command:

npm install -g @label21/tstation

Commands

tstation posts list                        # list posts
tstation posts list --tags podcast         # filter by tag slugs
tstation posts list --search "obsidian"    # search
tstation posts list --limit 5 --featured true
tstation posts get <id-or-slug>            # read a post
tstation posts get <id-or-slug> --formats plaintext,lexical
tstation posts tags                        # list available tags

tstation transcripts list                  # list podcast transcripts
tstation transcripts list --show turing-station --page 2
tstation transcripts list --search "lokaal model"   # full-text search with snippets
tstation transcripts get turing-station 3  # read a transcript

tstation auth login                        # verify and store an API key
tstation auth status                       # show active key and source
tstation auth logout                       # remove the stored key

tstation completion install                # set up tab-completion for your shell
tstation completion zsh                    # or print the script (zsh, bash, fish)

Every command accepts --json for raw API output, which makes the CLI easy to compose with jq or feed to other tools:

tstation posts list --json | jq '.items[].slug'

Paginate with the cursor printed at the end of a page:

tstation posts list --cursor '<next_cursor from previous page>'

Tab-completion

tstation completion install

Detects your shell from $SHELL (zsh, bash, or fish) and installs completion: for fish it drops a file in ~/.config/fish/completions/; for zsh and bash it writes the script to ~/.config/tstation/ and adds a source line to your rc file. Completions are computed live by the CLI itself (tstation __complete), so commands, flags, and flag values stay in sync with the installed version — including things like --read-status <TAB>all read unread.

Prefer to wire it up yourself? tstation completion zsh (or bash/fish) prints the script to stdout.

Authentication

Create an API key at turingstation.nl/settings, then:

tstation auth login

Paste the key at the prompt — input is hidden, so nothing appears while you type. The key is verified against the API and stored in ~/.config/tstation/config.json (mode 0600). Alternatively, set TSTATION_API_KEY in the environment or pass --api-key per invocation; those take precedence over the stored key, in that order: flag, environment, config file.

TSTATION_API_URL / --api-url override the API base URL (default https://api.turingstation.nl).

How it works

The CLI is generated from the public OpenAPI spec at docs.turingstation.nl/content/openapi-public.json. The spec is vendored in api/openapi-public.json, types are generated with openapi-typescript, and requests go through openapi-fetch, so the commands are type-checked against the live API contract. A weekly workflow re-fetches the spec and opens a PR when it changes.

Prefer a generic OpenAPI client? The same spec works directly with Restish.

Development

pnpm install
pnpm generate    # regenerate src/generated/ from the vendored spec
pnpm typecheck
pnpm build       # bundle to dist/cli.js
node dist/cli.js posts list

Releases: push a v* tag; CI publishes to npm with provenance.

License

MIT