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

n8n-nodes-openrouter-tchik

v0.3.0

Published

OpenRouter Chat Model community node for n8n with reasoning.effort, service_tier and app attribution headers.

Readme

n8n-nodes-openrouter-tchik

Private fork of n8n-nodes-openrouter-reasoning v0.2.1 (MIT), customised for the Strat Calculator n8n instance.

Node display name: OpenRouter Chat Model (Custom).

What this fork adds

1. App attribution

A single App option (fixedCollection) under Options, grouping the two headers public_html/api/ai_proxy.php already sends for the AI Engineer:

| Field | Header sent | Example | |---|---|---| | App URL | HTTP-Referer | https://strat-calculator.online/push-to-talk | | App Name | X-Title | SC - Push To Talk |

App URL is mandatory once the App option is added — the node throws otherwise. This is not arbitrary strictness: per OpenRouter's App Attribution doc, HTTP-Referer is the app identity ("required for app attribution", without it "no app page will be created and your usage will not appear in rankings"), while X-Title only renames an app that already exists ("This header alone does not create an app page"). Letting App Name through on its own would send a header that provably does nothing.

App Name stays optional. Not adding the App option at all sends no header, as before.

Headers are injected through configuration.defaultHeaders, so they apply to every request the model makes — including the ones the LangChain agent fires on its own.

There is deliberately no generic "extra headers" field: attribution is the only real use case here, and a free-form header input is an easy way to ship a malformed request.

2. Service Tier dropdown

Options → Service Tier: Provider Default / Auto / Flex / Priority, merged into the request body as service_tier. Replaces having to hand-write {"service_tier": "priority"} in Extra OpenRouter Body JSON — that field still exists and still works.

Everything else is upstream

Reasoning effort, provider routing, ZDR, model capability validation, the tool-call arguments fix in createOpenRouterFetch — all unchanged from v0.2.1. See the upstream README for the full option list.

Build

npm install --include=dev   # NODE_ENV=production in the shell would otherwise skip devDeps
npm run build
npm run lint

n8n-workflow is pinned to 2.28.4 (upstream uses ^2.16.0) because @n8n/ai-utilities pins that exact version. With two different copies in the tree, TypeScript sees two incompatible INodeProperties / ISupplyDataFunctions types and the build fails. Runtime was never affected — this is a compile-time-only pin.

Install on the VPS

Deployed as a custom extension, not as an npm community package — nothing is published. Drop the built folder in /opt/n8n-strat/data/custom/ (mounted as /home/node/.n8n/custom) and restart the container.

⚠️ n8n registers custom-directory nodes under the fixed package name CUSTOM (CUSTOM_NODES_PACKAGE_NAME in n8n-core), so the node type is CUSTOM.lmChatOpenRouterCustom — the folder name here has no effect on it. Workflows using the old n8n-nodes-openrouter-reasoning.lmChatOpenRouterReasoning type must have the node re-added by hand.

Licence

MIT, inherited from upstream. See LICENSE.md.