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

@reforma/siwc-bridge

v0.0.1

Published

Bridge Sign in with ChatGPT loopback callbacks to remote backends, Docker environments, and VMs

Readme

@reforma/siwc-bridge

A small callback bridge for Sign in with ChatGPT.

OpenAI redirects the browser to an approved URL or to a loopback address such as http://127.0.0.1:<port>/auth/callback. That can be inconvenient when the backend handling the authorization flow runs somewhere else—for example, in Docker, on a development hostname, or on a remote VM.

@reforma/siwc-bridge runs a small HTTP listener on the machine where the browser is open. It receives the loopback callback and redirects the browser to your backend endpoint, preserving the complete query string, including parameters such as code and state.

It is useful for:

  • remote and self-hosted development environments;
  • applications running in Docker or on VMs;
  • development hostnames that cannot receive the OpenAI callback directly;
  • architectures where the browser and the backend completing authorization run on different machines.
OpenAI
   ↓
http://127.0.0.1:1455/auth/callback
   ↓
@reforma/siwc-bridge
   ↓
https://your-backend.example/auth/openai/callback

The package does not exchange, store, or modify credentials. It only redirects the callback from the local loopback listener to the endpoint you configure.

Usage

Start the bridge and point --api at the full URL of your backend callback endpoint:

npx @reforma/siwc-bridge \
  --api https://api.example/auth/openai/connect/callback

By default, the bridge listens at:

http://127.0.0.1:1455/auth/callback

If your authorization request uses a different loopback URI, pass the same value with --redirect-uri:

npx @reforma/siwc-bridge \
  --redirect-uri http://127.0.0.1:3000/auth/callback \
  --api https://api.example/auth/openai/connect/callback

Your application must use the same loopback URI as its redirect_uri when starting the OpenAI authorization flow.

How it works

  1. Your application starts the Sign in with ChatGPT flow with a loopback redirect_uri.
  2. The user signs in and approves access.
  3. OpenAI redirects the browser to the loopback callback on the browser's machine.
  4. @reforma/siwc-bridge receives the callback.
  5. It redirects the browser to the configured --api endpoint with the original query string intact.
  6. Your backend validates state and exchanges the authorization code as usual.

This follows the general pattern in OpenAI's guide for remote and self-hosted environments.

Use Sign in with ChatGPT only where permitted by OpenAI's terms and documentation. This package is intended for open-source projects, development, testing, and supported remote-environment workflows.

Requirements

Node.js 24 or newer.