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

sideren

v0.4.1

Published

One command to put your coding agents on Sideren: it finds the agents on your machine, asks for your key and a model, writes each agent's own config and checks it live. Claude Code, Codex, pi, oh-my-pi, ZCode, Hermes, OpenCode, Kilo Code, Aider, Crush, Go

Readme

sideren

One command puts the coding agents on your machine on Sideren: one endpoint, one key, one model list.

npx sideren

It finds the agents you have installed, then asks three things:

  1. Your key — checked with Sideren before anything is written. A key from an earlier setup or from SIDEREN_API_KEY is offered, so a re-run is one keypress.
  2. Your model — Auto (Sideren picks per request), your plan's default, or any model from the live list.
  3. Go — yes, or choose which agents.

Then each agent gets its own config, in its own format, and one live request is sent through it:

  SIDEREN  v0.4.1

    agents  Claude Code, OpenAI Codex, pi, oh-my-pi, Hermes Agent
    key     ✓ accepted · Pro plan
    models  auto  ·  stronger @sdn/glm-5.3, gpt-5.6-sol  ·  lighter @sdn/glm-5.3-flash

  ✓ Claude Code   ~/.claude/settings.json  · live check ok, 812 ms
  ✓ OpenAI Codex  ~/.codex/config.toml  · live check ok, 640 ms
  ✓ pi            ~/.pi/agent/models.json  · live check ok, 590 ms
  ✓ oh-my-pi      ~/.omp/agent/models.yml  · live check ok, 604 ms
  ✓ Hermes Agent  ~/.hermes/config.yaml  · live check ok, 571 ms

Get a key at sideren.io/dashboard/keys. Zero dependencies; needs Node 18 or newer.

Coming from LayerX1? npx layerx1 is now npx sideren. Your lx1_ key, your model ids and your LAYERX1_* variables keep working — see Coming from LayerX1.

Without questions

# every agent found on this machine, model auto
npx sideren setup --key sdn_your_key

# named agents and a named model
npx sideren setup --key sdn_your_key --tool claude-code,codex --model @sdn/glm-5.3

# see what would be written, write nothing
npx sideren setup --key sdn_your_key --print

setup exits with status 1 when an agent's live check fails (its config is still written), so a script can tell "configured" from "configured and working". npx sideren in a pipe or in CI runs setup when it has a key, and says how to give one when it has none.

Agents

| Agent | --tool | What is written | Wire | |---|---|---|---| | Claude Code | claude-code | ~/.claude/settings.json | Anthropic /v1/messages | | OpenAI Codex (CLI, IDE, app) | codex | ~/.codex/config.toml, ~/.codex/model-catalogs/sideren.json | Responses | | pi | pi | ~/.pi/agent/models.json, auth.json, settings.json | Chat | | senpi | senpi | the same three files under ~/.senpi/agent/ | Chat | | oh-my-pi | omp | ~/.omp/agent/models.yml, config.yml | Chat | | ZCode (CLI and desktop app) | zcode | ~/.zcode/v2/provider_config.json | Anthropic /v1/messages | | Hermes Agent | hermes | ~/.hermes/config.yaml, ~/.hermes/.env | Chat | | OpenCode | opencode | ~/.config/opencode/opencode.json | Chat | | Kilo Code | kilo | ~/.config/kilo/kilo.jsonc (Kilo 7), else opencode.json there | Chat | | Aider | aider | ~/.aider.conf.yml, ~/.aider.model.settings.yml, ~/.aider.model.metadata.json | Chat | | Crush | crush | ~/.config/crush/crush.json | Chat | | Goose | goose | ~/.config/goose/config.yaml, custom_providers/sideren.json, sideren.key | Chat | | Qwen Code | qwen | ~/.qwen/settings.json, ~/.qwen/.env | Responses | | Factory Droid | droid | ~/.factory/settings.json | Responses | | OpenClaw | openclaw | ~/.openclaw/openclaw.json, ~/.openclaw/.env | Responses | | Continue | continue | ~/.continue/config.yaml, ~/.continue/.env | Chat | | Cline | cline | ~/.cline/data/settings/providers.json and its model list | Chat | | Zed | zed | ~/.config/zed/settings.json | Responses | | Cursor (IDE), Roo Code | cursor, roo | nothing — exact steps are printed | — |

Paths are the macOS / Linux defaults; Windows paths, the variables that move a config directory and every per-agent detail are in TOOLS.md. --wire hermes=responses,crush=anthropic picks another wire for an agent that supports more than one.

Cursor CLI, Windsurf, Antigravity, Kiro and Gemini CLI cannot be pointed at another endpoint. --tool accepts their names and says so instead of writing a config that would not be used.

Each writer was checked against the real agent — what it reads, and what it then sends — except Zed (checked against its source) and the desktop apps and editor extensions, which were not run.

Models

Auto is the default. auto lets Sideren choose the model for each request. Pick a model in the wizard or name one with --model.

You get a set, not one model. Agents have more than one model slot — a stronger model for planning or review, a small one for titles, summaries and background work. Setup fills every slot the agent has, so nothing falls back to a model the agent made up:

  • your pick (or auto),
  • one or two stronger models,
  • one or two lighter ones.

They are chosen from the live list, from what your plan can use. Name them yourself with --stronger, --lighter and --small-model (none leaves a group empty). --fallback <ids> registers more models in each agent's model picker.

New models need no new release. Nothing about models is compiled into this package. Every run reads GET /v1/models and GET /v1/me from Sideren: the models, their context windows, thinking levels and prices, and what your plan allows. A model added to Sideren today is in the wizard, in npx sideren models and in every agent's model picker on the next run. Without a network the last list is used (~/.sideren/catalog.json, six hours), then the snapshot shipped in the package.

Thinking effort

Your level stays yours. If you set your agent to high or xhigh, setup does not change it and it is sent as you set it.

  • Where you have set none, setup writes high, or the nearest level the model offers. --effort <level> picks another.
  • Each model is registered with the levels it really offers, so an agent's effort selector shows what the model can do.
  • Effort mapping is on: a level a model does not offer runs at the nearest one it does, instead of an error. --no-allow-effort-mapping turns that off.

Commands

| Command | What it does | |---|---| | npx sideren | Set up the agents on this machine. | | npx sideren setup --key <key> | The same without questions. | | npx sideren status | Which agents are set up (--all lists every agent). | | npx sideren test | One live request through every agent's config. Exits 1 on a failure. | | npx sideren models | The model list, with context window and price (--json). | | npx sideren unset | Put every config back the way it was (--tool <ids> for some). | | npx sideren doctor | Environment, install paths, where the model list came from, a live check per agent. | | npx sideren install <ids> | Install agents. Asks before running a vendor's install script. | | npx sideren help all | Every command, agent and flag. |

The flags used most:

| Flag | | |---|---| | --key <key> | Your sdn_… key. Read from SIDEREN_API_KEY or an earlier setup when left out. | | --tool <ids> | Agents to set up, comma-separated, or all. Default: the ones found on this machine. | | --model <id> | The main model. Default auto. | | --effort <level> | The default thinking level. Default high. | | --yes, -y | Ask nothing. | | --print | Show the configs instead of writing them. Writes nothing at all. | | --verbose, -v | Show every note each agent's setup produced. | | --no-verify | Skip the live check. | | --offline | Never touch the network. | | --home <dir> | Write under <dir> instead of your home (sandboxes, tests). |

The live check

After writing, setup sends one streamed request through each agent's config — read back from the file, not assumed: the agent's own endpoint, key, headers, model and thinking level. It passes when the answer streams to its end in that wire's own format. Each check has a deadline (--verify-timeout, 60 seconds) and is never retried, so it cannot be billed twice. The key is never printed.

Your config stays yours

  • Merged, never replaced. Setup adds Sideren to the file you have. Your other providers, settings and comments stay.
  • One thing is taken over: which model the agent starts on, so it starts on Sideren. What it was before is recorded.
  • npx sideren unset puts it back. Sideren's entries are removed and anything taken over is restored. A file setup created is removed.
  • A file that does not parse is left alone, with a message saying which one.

Installing agents

Setup only configures agents that are already installed. --install (or npx sideren install <ids>) installs the ones named. Some vendors ship only a curl … | bash installer, which downloads and runs a remote script: the exact command is shown and nothing runs until you say yes, or pass --yes.

Paying from wallet credit

On a subscription, setup uses the plan. --payment-mode payg makes Claude Code, Codex, Hermes or OpenCode spend purchased wallet credit instead (it needs a named --model). Run setup again without the flag, or with --payment-mode subscription, to go back. It does not change your subscription or buy credit.

Staging (Sideren team)

SIDEREN_STAGING_ACCESS_TOKEN is accepted only together with the private staging --url. Setup stores the guard header for Claude Code, Codex, Hermes and OpenCode and uses it for the model list and the live check. The token is never a flag, is hidden by --print, and is ignored for every other origin; a normal setup clears old staging headers.

Coming from LayerX1

LayerX1 is now Sideren. npx layerx1 prints a one-line notice and runs npx sideren.

| What you have | What happens | |---|---| | An lx1_… key | Works everywhere an sdn_… key does. | | lx1-* / sdn-* / bare model ids | Still accepted. New configs are written with the public id: @sdn/glm-5.3 for open-weight models, the plain name (gpt-5.6-sol) for closed ones. | | LAYERX1_* variables | Each SIDEREN_* variable falls back to its LAYERX1_* name. | | Configs written by npx layerx1 | Keep working. npx sideren status flags them; running setup again replaces each LayerX1 entry with the Sideren one, so you never have two providers for one account. | | npx sideren unset | Removes Sideren and LayerX1 entries alike. |

License

MIT