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

glidea-web2api

v0.1.0

Published

Expose ChatGPT web sessions as a local OpenAI-compatible Responses API.

Readme

Web2API

Expose a logged-in ChatGPT Chrome session through a local OpenAI Responses API.

Supported response types include text, streaming text, image generation, image input, and emulated function calling.

Install

  1. Install the Web2API Chrome extension.
  2. Open its popup.
  3. Run the one-time command shown by the popup:
npx -y glidea-web2api@latest install --extension-id <extension-id>
  1. Click Check again in the popup.

The extension starts the local companion automatically. The popup provides the Base URL, API key, daemon controls, and concurrent tab setting.

Configure an OpenAI-compatible client with:

  • Base URL: http://127.0.0.1:3210/v1
  • API key: copy it from the extension popup
  • Model: chatgpt/default

The companion does not store prompts, responses, images, cookies, or ChatGPT credentials. The account must already be logged in to chatgpt.com.

Function Calling

Pass standard Responses API function tools, execute returned function_call items locally, then send function_call_output with previous_response_id. tool_choice and parallel_tool_calls are supported.

Function calling is emulated through a strict prompt protocol because the ChatGPT consumer page does not expose caller-defined functions. Tool names and JSON arguments are validated, but strict: true cannot provide the same guarantee as native OpenAI Structured Outputs. Tool-enabled streaming is buffered until the page response completes.

CLI

glidea-web2api doctor --extension-id <extension-id>
glidea-web2api start
glidea-web2api uninstall --extension-id <extension-id>

start is a manual fallback. Normal use is controlled from the extension popup.

Development

pnpm install
pnpm build:daemon
pnpm build:extension
pnpm test
pnpm typecheck
pnpm test:e2e:extension

Load src/extension/.output/chrome-mv3 through chrome://extensions, open the popup, and run its generated installation command. During local development, replace the published command with:

node bin/glidea-web2api.mjs install --extension-id <extension-id>

Real-page smoke testing opens a dedicated Chromium profile:

pnpm test:smoke:chatgpt:setup
pnpm test:smoke:chatgpt

Run the setup command once and log in inside the opened Chromium window. The profile remains under ~/.web2api/chatgpt-profile; later smoke runs reuse it without copying browser cookies.

Documentation