Skip to content

Latest commit

 

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pulse

Pulse cover

Run one command to see which of your models are actually alive.

You have access to a pile of providers and models. Some are great, some run out of usage mid-session, and some models on a provider you can't touch at all (looking at you, Copilot Opus vs Sonnet). Instead of clicking through each one to see who answers, run pulse. It pings every provider you've configured and every model it can find, then shows you green (alive), red (refused / no access), or yellow (out of usage / can't tell) in one list.

What it does

  • Reads your Hermes setup: the credential pool in ~/.hermes/auth.json, custom providers from ~/.hermes/config.yaml, and API keys from ~/.hermes/.env.
  • Asks each provider for its real model list (falls back to a default when a provider doesn't expose one).
  • Sends a tiny "reply with: ok" to each model and records who answered.
  • Prints one clean grouped list. Secrets are never printed — keys are read from disk, held in memory, and never included in the output.

Install

git clone https://github.com/bchop-studio/pulse ~/github/pulse
sudo ln -s ~/github/pulse/pulse /usr/local/bin/pulse   # or add the dir to PATH

No dependencies. Python 3.8+, standard library only.

Use

pulse                      # check everything
pulse --provider copilot   # just one provider
pulse --limit 5            # cap models per provider (default 12)
pulse --list-only          # list models without probing
pulse --prices             # all Nous models with current prices
pulse --prices free        # only free Nous models
pulse --prices sale        # only discounted Nous models
pulse --json               # machine-readable output
pulse --watch              # live board, refresh liveness every 60s
pulse --watch 20           # live board, refresh every 20s

Exit code is 0 when at least one model is alive, 1 when none are — so you can wire it into scripts.

--prices reads the live Nous Portal catalog and shows input and output cost in US dollars per one million tokens. Sale rows include the original price, so Portal-only discounts are visible without hunting through a web page. Add --json when another tool needs the same price data.

Reading the output

copilot
  ● claude-sonnet-5          <- green: answered
  ● claude-opus-5  HTTP 400  <- red: you can't use this one

Providers that share their quota show it on the header line, so you see a near-empty balance before you start, not a dead model mid-session:

openrouter  usage: $8.40 left of $20 (58% used)
  • green — the model replied. Good to go.
  • red — the provider refused (no access, or model not found).
  • yellow — out of usage / rate-limited, or the provider errored.

--watch redraws the same board on a loop. It re-probes model liveness on your beat (default 60s, minimum 15s) but only re-asks each provider for its model list and usage every 5 minutes, so it stays cheap to run.

Security & privacy

Pulse reads your local Hermes config to find your providers and keys: ~/.hermes/auth.json, ~/.hermes/config.yaml, and ~/.hermes/.env. GitHub Copilot requires a Copilot credential from Hermes or COPILOT_GITHUB_TOKEN; Pulse never substitutes a general GitHub CLI token. This is read-only, on your own machine, the same way Hermes itself reads them.

  • Nothing leaves your machine except the health checks. The only network requests are tiny "reply with: ok" calls sent to each provider's own API, authorized with that provider's key.
  • Secrets are never printed, logged, or written anywhere. Keys live only in memory for the lifetime of the run. Output shows provider and model names and a status, never a credential.
  • Remote provider URLs must use HTTPS. Plain HTTP is allowed only for loopback development endpoints, and credentials never follow a redirect to another host, scheme, or port.
  • Provider text cannot control your terminal. Control characters are removed from the human-readable board and pricing output.
  • No telemetry or analytics. Pulse calls only the provider APIs needed for model lists, pricing, usage, and health checks.

If you fork or contribute, never commit your own .env or auth.json. The .gitignore already blocks them.

Notes

  • Anthropic's API isn't key-scoped to a model list, so pulse probes a model you name: pulse --provider anthropic --model claude-sonnet-4-5.
  • OpenRouter lists hundreds of models; pulse caps at 12 per provider unless you pass --limit 0 for all of them.
  • GitHub Copilot needs a dedicated Copilot token from Hermes or COPILOT_GITHUB_TOKEN. A normal gh auth token is not a Copilot credential.
  • Only OpenRouter exposes a credit balance over the plain API, so it's the one with a number on the usage line. Other providers don't share quota this way, so pulse shows nothing rather than guess. As more providers open up a quota endpoint, they slot into get_usage().

MIT. Do whatever you want with these.

Built by @BChopLXXXII

Built for BUILDERS who just want their AI to feel less... corporate.

Ship it. 🚀

If this helped, ⭐ the repo — it helps others find it.

About

Run one command to see which of your models are alive.

Resources

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages