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

situationship

v0.2.0

Published

Run OpenAI/Codex models alongside Claude models in Claude Code

Readme

Situationship

Claude Code running GPT models through Situationship

Use your ChatGPT/Codex subscription inside Claude Code, alongside Claude Fable 5.

Situationship lets ChatGPT/Codex (GPT) models run alongside Claude Fable in the Claude Code CLI. It does this by running a tiny translator on your machine that sits between Claude Code and the internet, and converts messages back and forth between Anthropic's format and OpenAI's format on the fly.

For all intents and purposes, it tricks Claude Code into thinking it's talking to Claude models, when some of them are actually OpenAI models, billed to your Codex subscription. Claude Code itself is never modified. You essentially combine your two subscriptions into one.

⚠️ This is very much a proof of concept! It uses a private ChatGPT endpoint and creative model remapping. There are no guarantees you won't get banned by OpenAI or Anthropic. Use at your own risk.

What it actually does

Two things, and only these two things:

  1. Adds one custom model to Claude Code's model picker (e.g. gpt-5.6-sol).
  2. Re-assigns the model names Claude Code already knows (Haiku, Sonnet, Opus) to OpenAI models.

| What Claude Code thinks it's using | What actually answers | | ----------------------------------- | -------------------------------- | | Opus | GPT 5.6 Sol | | Sonnet | GPT 5.6 Terra | | Haiku | GPT 5.6 Luna | | Fable, Mythos, any claude-* model | Real Anthropic models, untouched |

Claude models still go straight to Anthropic, just like Claude Code natively would. Only requests for the remapped names get translated and sent to ChatGPT.

Why would you want this?

  • Use Fable 5 Max as your "Chief-of-Thread", the model you talk to.
  • Let Fable delegate work to subagents that actually run on GPT models.
  • Save on Fable 5 usage and get work done faster, since the heavy lifting is spread across both subscriptions.

Why is this "safe"?

Claude Code runs completely unmodified: no patches, no plugins, no hacks to the app itself. Situationship only starts a small local server and tells Claude Code to send its traffic through it. Your Claude login and your Codex login are the same official ones you already use with claude login and codex login.

That said: this routes your Codex subscription through a private ChatGPT endpoint that OpenAI doesn't officially support for this purpose. Hence the disclaimer above.

Requirements

  • Node.js 18 or newer
  • Claude Code, logged in with claude login
  • Codex CLI, logged in with codex login

No exact versions are required or checked. The versions this was built and tested against are Claude Code 2.1.207 and Codex CLI 0.144.1; newer versions will most likely work too.

Run it

npx situationship

That's it. It finds a free local port, starts the translator, launches Claude Code pointed at it, and cleans everything up when you quit. You can run as many as you'd like.

If you're not logged in to Codex, it exits immediately and tells you to run codex login first.

Defaults (all can be changed):

| Setting | Default | How to change | | ---------------------------- | ------------- | ------------------------------ | | Main model | fable (Fable 5, high effort) | --model or SITUATIONSHIP_MODEL | | Permission mode | auto | --permission-mode | | Maximum GPT reasoning effort | high | --max-effort (low, medium, high, xhigh, max) |

Why is there a "max effort" limit?

Claude Code doesn't know it's talking to GPT models, so it asks for the same "thinking effort" it would ask from a Claude model. Claude models handle that fine, but GPT models interpret those top effort levels as "think extremely long and hard," which burns through your Codex usage very quickly and makes responses much slower, usually without better results for everyday coding.

So by default, Situationship caps the effort sent to GPT models at high. Claude requests are never touched by this cap. If you want the GPT models to think harder (and spend more of your subscription), raise it:

npx situationship --max-effort xhigh

⚠️ Claude Code has no way of setting effort levels per subagent! Whatever you set here is going to be used for every subagent, regardless of the model or how easy or difficult the task is.

Privacy and logs

Each session writes a small log file under ~/.situationship/logs/ for debugging. It contains metadata only: timings, model names, request sizes, and upstream API error messages (for failed requests). Your prompts, responses, code, and credentials are never logged. Old logs are automatically cleaned up (about 15 MB total).

If you run into problems, create an issue and attach some logs so I can make it better.

For the technically curious

  • The translator converts Anthropic "Messages" requests into OpenAI "Responses" requests and streams the answers back in Anthropic's format, including tool calls and images.
  • Claude Code's internal auto-mode classifier is detected and routed like any other model (GPT slugs to ChatGPT, Claude models to Anthropic). The [1m] context suffix and long-context betas are stripped from classifier requests, since subscriptions without the 1M-context beta would otherwise get a 400 and auto mode would fail closed.
  • Token-count requests for Claude models are forwarded to Anthropic for exact numbers; GPT models get a conservative local estimate (the ChatGPT backend has no counting endpoint).
  • It talks to the same private chatgpt.com/backend-api/codex interface that the Codex CLI (and many community tools) use for subscription access. Since that interface is undocumented, its behavior was reverse-engineered from the real clients; see docs/PROTOCOL.md for the evidence.
  • Verify the code with npm run check and npm test (the test suite runs entirely against local fake servers).

License

MIT