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

@almyty/models

v1.5.5

Published

Manage the almyty model catalog from your terminal: register cards, validate them, host weights, watch spend.

Readme

@almyty/models

The almyty model catalog from your terminal: which models exist, which the router may pick and why not when it may not, what a routing policy would choose right now, what everything costs, and where self-hosted weights run.

npm i -g @almyty/cli
almyty login
almyty models list

What makes a model usable

Support in almyty is registry data, never a code list. You connect a provider once and every model it lists shows up. A model is usable when its card exists in your organization's catalog and:

  1. something can call it — a stored LLM provider row, or an endpoint URL from a hosted model,
  2. its status is active, and
  3. it is checked: its provider's key check has passed (one real call with the key covers every model that provider lists), or, for an endpoint with no provider row, a real short call through that model has.

A model the provider stops listing goes inactive; one the vendor answers "model not found" for is marked unavailable. list and get report which of those applies, so a card that will not be picked says so instead of looking like any other row:

Llama 3 8B  [llama-3-8b]  private_cloud/eu-central  $0.1/$0.2 per M (feed:litellm)
    9c2f…  not selectable: waiting for its provider's key check (check the provider on the Models page)

Commands

Every read command takes --json and writes undecorated JSON to stdout.

Catalog

| Command | What it does | |---|---| | list [--selectable] [--status s] [--tier t] [--provider id] | Model cards, each line saying selectable or why not | | get <id> | One card in full: what can call it, capabilities, pricing, the last check, measured latency | | register --name <n> --provider <providerId> --model <vendorModelId> [--tier t] [--region r] [--context n] | Register a card against a stored LLM provider. A server you run (vLLM, TGI, llama.cpp) is added as a custom LLM provider first, then registered against like any other | | set <id> [--name n] [--tier t] [--region r] [--context n] [--status s] [--price-in n --price-out n] [--clear-price] | Change a card; a price pair is an override that wins over the automatic feed | | sync [providerId] | Import what a provider lists; selectable at once when the provider's key check has passed. With no id, every active provider | | validate <id> | One real short call through one model. A provider's key check already covers its models; this is for an endpoint with no provider row | | delete <id> | Remove a card |

Cards arrive on their own: connecting a provider, changing it, every passing key check and a sweep every six hours import what that provider currently lists. sync is the same import by hand.

Routing

route is the honest answer to "why did it not pick that model". It takes the same policy an llm_call node carries, and calls nothing — it plans.

almyty models route --objective cheapest --tier private_cloud \
  --regions eu-central --needs tools --budget-headroom 500
2 candidate(s), in the order they would be tried:
  1. Llama 3 8B  [llama-3-8b]  openai  private_cloud/eu-central  $0.1 per M blended
     9c2f…  cheapest at $0.10 blended
  2. Mixtral  [mixtral-8x7b]  openai  private_cloud/eu-central  $0.24 per M blended
     4a71…  next cheapest

Rejected 3:
  1d0e…  no callable provider
  7bb2…  privacy tier public exceeds the ceiling private_cloud
  e551…  not usable yet

| Flag | Meaning | |---|---| | --objective cheapest\|fastest\|pinned | cheapest by blended feed price, fastest by measured p50 | | --tier local\|private_cloud\|public | Privacy ceiling; anything above it is rejected | | --regions <a,b> | Allowed regions | | --needs tools,vision,reasoning | Capabilities that must be true | | --capabilities '<json>' | The full capability object, when --needs is not enough | | --pinned <id> | One card or vendor model id, by name | | --chain <a,b> | An explicit fallback order | | --budget-headroom <cents> | Reject anything that would not fit | | --prefer <providerId or type,...> | Providers to prefer, best first, applied before cost |

It exits 5 when no card satisfies the policy, so a check can be a check.

Versions, adapters, hosting

Registering a version is optional: do it when you want lineage, a manifest digest and evaluation history attached to your own artifact. Skip it to just run a model that already lives somewhere.

| Command | What it does | |---|---| | versions | Registered model versions | | register-version --name <n> --uri <pinned uri> [--base b] [--quantizations q1,q2] | hf://org/repo@sha, s3://bucket/key@etag, gs://bucket/key@gen, file:///path@sha | | adapters | Every adapter: what it can run (modelSchemes), its capabilities, which config fields are secret | | host <model> --adapter <key> [...] | Run a model on a provider's managed product | | hosted | Hosted models: desired vs actual, state, spend | | hosted <id> | One hosted model in full, including its endpoint and rate | | scale <id> <replicas> | Set desired replicas; 0 scales to zero | | teardown <id> | Tear the endpoint down; weights stay in the registry |

deploy, deployments and deployment <id> also work, as other names for host, hosted and hosted <id>.

Naming the model is configuration, so it is the positional argument:

almyty models host hf://Qwen/Qwen3-0.6B@main --adapter huggingface-endpoints
almyty models host fireworks://accounts/acme/models/qwen3-tuned --adapter fireworks
almyty models host --model-version <id> --adapter modal --desired '{"replicas":1}'

An artifact reference points at bytes and is pinned, so the hosted model is reproducible. A provider reference (bedrock://, vertex://, fireworks://, …) names a model that already exists on a platform, which versions it itself. The two do not mix freely: adapters lists what each provider can really read, and a mismatch is refused at submit with ADAPTER_UNSUPPORTED_SOURCE rather than as a provider error later.

Secrets never travel on argv

ps shows every process's arguments to every user on the machine, shell history keeps them, and most CI runners echo them. So this tool does not take a secret as a flag value.

Adapter configuration. Best is not to paste one at all: connect the provider account once and name the connection.

almyty credentials add huggingface
almyty models host hf://Qwen/Qwen3-0.6B@main \
  --adapter huggingface-endpoints --credential <connectionId>

Otherwise pass the object from a file or stdin:

almyty models host hf://Qwen/Qwen3-0.6B@main --adapter huggingface-endpoints --config-file hf.json
cat hf.json | almyty models host hf://Qwen/Qwen3-0.6B@main --adapter huggingface-endpoints --config-stdin

--config still works for the fields an adapter does not mark secret, and is refused the moment it carries one that is. adapters prints which fields those are.

Pricing

Automatic. A daily job loads the LiteLLM cost map and cross-checks OpenRouter; a disagreement above 25% is kept on the card and get prints it. pricingSource says where a number came from: feed:litellm, feed:openrouter, native, adapter, manual (an override you set with set --price-in/--price-out), or unpriced.

Environment

| Variable | Meaning | |---|---| | ALMYTY_TOKEN | Token override; skips ~/.almyty/credentials.json | | ALMYTY_URL | API URL override | | NO_COLOR | Honoured: this tool never colours its output |

Exit codes

| Code | Meaning | |---|---| | 0 | success | | 1 | unexpected error | | 2 | usage error (bad flags, missing argument, unknown command) | | 3 | not authenticated — run almyty login | | 4 | not found | | 5 | the operation ran and failed (a check that did not pass, a policy that resolves to nothing) |

The same table in every @almyty/* CLI.

About almyty

almyty is the platform for AI agents, agnostic by design: any LLM, any API turned into tools, served over MCP, A2A, UTCP and Agent Skills.

  • Website: https://almyty.com
  • Design notes: docs/models.md in the almyty repository
  • Source: https://github.com/almyty-inc/almyty

Run almyty models --help for the full surface.

Apache-2.0 © Almyty Inc.