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

@juppytt/fws

v0.3.1

Published

Fake Web Services — local mock server for testing CLI tools and agents without real credentials

Readme

fws — Fake Web Services

A local mock server for testing CLI tools and agents against fake web services without real credentials. Supports Google Workspace (gws CLI), GitHub (gh CLI), and more.

Built with Claude Code.

How it works

fws runs a local HTTP mock server (port 4100) and a MITM CONNECT proxy (port 4101) that intercepts HTTPS traffic to *.googleapis.com and api.github.com, forwarding it to the mock server.

For gws: discovery cache URLs are rewritten to localhost, and GOOGLE_WORKSPACE_CLI_TOKEN=fake bypasses auth. For gh: HTTPS_PROXY routes traffic through the MITM proxy, and GH_TOKEN=fake bypasses auth.

All data lives in memory. When the server stops, everything is lost unless you save a snapshot first. Use fws snapshot save to persist state.

Install

npm install -g @juppytt/fws

Or from source:

git clone https://github.com/juppytt/fws.git && cd fws
npm install && npm link

Quick Start

# Start the server (runs in background)
fws server start

# Configure your shell
eval $(fws server env)

# Try gws commands
gws gmail +triage
gws calendar events list --params '{"calendarId":"primary"}'
gws drive files list

# Try gh commands
gh issue list                                      # requires GH_REPO=testuser/my-project
gh api /repos/testuser/my-project/issues
gh api /user

# When done
fws server stop

The server starts with sample seed data so you can try commands immediately.

Usage

Proxy mode (one-shot)

Starts a temporary server, runs gws, exits. No separate server needed.

fws gmail users messages list --params '{"userId":"me"}'
fws gmail +triage
fws calendar calendarList list
fws drive about get --params '{"fields":"*"}'

Server mode (persistent)

fws server start                  # Start in background
fws server status                 # Check if running
fws server stop                   # Stop
fws server start --foreground     # Run in foreground (for debugging)

Setup (add data to running server)

fws setup gmail add-message --from [email protected] --subject "Meeting" --body "See you at 3pm"
fws setup calendar add-event --summary "Team sync" --start 2026-04-08T15:00:00 --duration 1h
fws setup drive add-file --name "report.pdf" --mimeType application/pdf

Snapshots

Data is in-memory only. Save before stopping the server if you need to keep it.

fws snapshot save my-scenario     # Save current state to disk
fws snapshot load my-scenario     # Restore saved state into running server
fws snapshot list                 # List saved snapshots
fws snapshot delete my-scenario   # Delete a snapshot
fws reset                        # Reset to default seed data
fws reset --snapshot my-scenario  # Reset to a specific snapshot

Snapshots are stored in ~/.local/share/fws/snapshots/ (override with FWS_DATA_DIR).

Default seed data

| Service | Data | |----------|------| | Gmail | 5 messages (3 inbox, 1 sent, 1 read), system labels + "Projects" user label | | Calendar | 4 events (Daily Standup, Q3 Planning, 1:1, Team Lunch) | | Drive | 5 files (docs, spreadsheet, image, folder) | | Tasks | 1 task list with 2 tasks (1 pending, 1 completed) | | Sheets | 1 spreadsheet ("Budget 2026") | | People | 2 contacts (Alice, Bob), 1 contact group | | GitHub | 1 repo (testuser/my-project), 2 issues, 1 PR, 1 comment |

Documentation

Structure

bin/fws.ts              CLI entry point
src/server/routes/      Gmail, Calendar, Drive, and control API routes
src/store/              In-memory data store + seed data
src/config/             Discovery cache URL rewriting
src/proxy/              MITM proxy for helper commands
test/                   Vitest tests (with gws CLI validation)
docs/                   API support documentation