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

@app-station/cli

v0.7.1

Published

CLI App Station pour lier un logiciel ou un module a AppStation/Registra ("aps init", "aps doctor", ...).

Readme


CLI officielle App Station : elle relie un depot de logiciel (ou un module d'un logiciel existant) a votre compte App Station, puis recupere et stocke localement la cle API Registra (X-Software-Api-Key) necessaire pour verifier des licences depuis votre code.

Elle couvre tout le cycle de vie du developpeur : lier ou creer le projet, verifier que l'integration fonctionne, prouver cryptographiquement que le depot est bien celui declare, puis basculer vers la production des la soumission en review — sans jamais avoir besoin d'acceder a l'admin Registra.

Demarrage rapide

Node.js 18 ou superieur est requis.

# ponctuel, sans installation globale (recommande)
npx @app-station/cli@latest login
npx @app-station/cli@latest init
npx @app-station/cli@latest doctor

# ou installe globalement
npm install -g @app-station/cli
aps login
aps init
aps doctor

aps init est interactif par defaut (il vous demande ce que vous voulez faire, quel logiciel lier, etc.). Pour un usage script/CI, tous les choix sont aussi disponibles en flags — voir la reference des commandes ci-dessous.

Une fois lie, dans le code de votre logiciel :

# Prouver que ce depot est bien celui declare sur App Station
aps sign
aps verify appstation.manifest.signed.json

# Des que le logiciel/module est en review : basculer vers la production
aps fetch-key --production

Ce que vous pouvez faire

  • aps login / aps logout — authentifier la CLI aupres d'App Station (navigateur, ou token pour la CI).
  • aps init — lier ce depot a un logiciel/module App Station existant, ou en creer un, et ecrire la configuration Registra locale.
  • aps doctor — verifier de bout en bout que la cle API resolue fonctionne reellement contre Registra.
  • aps status — identite du lien local par defaut ; --remote ajoute le statut App Station et les releases, --secrets ajoute la source des secrets.
  • aps update — mettre a jour les metadonnees (nom, tagline, prix, essai) du logiciel/module depuis le terminal, sans passer par l'UI App Station.
  • aps upgrade — mettre a jour la CLI aps elle-meme vers la derniere version publiee sur npm.
  • aps sign / aps verify — signer (HMAC-SHA256) et verifier un manifest prouvant la liaison depot ↔ App Station ↔ Registra, pour la soumission ou la CI.
  • aps fetch-key — recuperer/rafraichir la cle Registra locale : environnement courant par defaut, --production pour basculer le projet en production.
  • aps release <file> — publier une release (upload de fichier) pour le logiciel/module lie.

Politique de version

@app-station/cli est concu pour etre installe globalement ou lance avec npx — c'est un outil de developpeur, pas une dependance runtime de votre logiciel. L'installer dans les dependances du projet est deconseille : votre application finale n'a besoin que de appstation.conf.json et d'une variable d'environnement (voir Ou sont stockees les donnees), jamais de Node.js ni de la CLI elle-meme au runtime.

npx @app-station/cli@latest <commande> garantit toujours la derniere version ; en installation globale, aps upgrade (ou npm update -g @app-station/cli).

Reference des commandes

aps login

Authentifie la CLI aupres d'App Station et enregistre les identifiants localement (voir Ou sont stockees les donnees).

aps login [--token <token>] [--base-url <url>] [--dev] [--use-system-ca] [--non-interactive]

| Flag | Description | | --- | --- | | --token <token> | Saute l'ouverture du navigateur : colle directement un token (genere dans App Station -> Parametres -> CLI). Equivalent a la variable APS_TOKEN. | | --base-url <url> | URL de l'instance App Station a utiliser. Par defaut : https://app-station.neocode.ci. Equivalent a la variable APPSTATION_BASE_URL. | | --dev | Raccourci pour pointer vers un environnement de test : utilise https://app-station.test par defaut et active automatiquement --use-system-ca. | | --use-system-ca | Fait aussi confiance au magasin de certificats du systeme, en plus des CA racines integrees a Node — necessaire face a un certificat local auto-signe (Herd, Valet, mkcert...). Necessite Node 22+. | | --non-interactive | N'affiche jamais de prompt ; echoue avec un message clair si une information manque (utile en CI). |

Sans --token, aps login ouvre votre navigateur par defaut : la CLI demarre un petit serveur local, vous authentifie sur App Station, et recupere le token via une redirection retour vers ce serveur — sans code a copier/coller.

Ce mecanisme est volontairement different d'un flow "device code" classique (GitHub/Google/Docker) : App Station ne redirige jamais le token que vers un callback strictement 127.0.0.1/localhost, ce qui le rend resistant au phishing a distance — un attaquant ne peut pas relayer la redirection finale vers sa propre machine, quel que soit le lien qu'il parvient a faire cliquer a une victime. Contrepartie : ca ne fonctionne pas depuis une session SSH sans redirection de port ; utilisez --token/APS_TOKEN dans ce cas.

aps logout

Supprime les identifiants stockes localement.

aps logout

aps init

Lie le depot courant a un logiciel ou un module App Station, puis ecrit la configuration Registra locale (cle API, URL de l'API, etc.).

aps init [--link | --create] [--type software|module] [--env development|production] \
         [--software-id <id>] [--package-id <id>] [--parent-software-id <id>] \
         [--name <name>] [--tagline <tagline>] [--force-link] [-y|--yes] [--non-interactive]

| Flag | Description | | --- | --- | | --link | Lie le depot a un logiciel/module App Station existant (choix interactif ou via --software-id/--package-id). | | --create | Cree un nouveau logiciel/module sur App Station puis lie le depot a celui-ci. | | --type <type> | software (defaut) ou module. | | --env <env> | development (defaut) ou production — determine quelle cle Registra est emise. | | --software-id <id> | ID App Station du logiciel a lier (mode --link --type software). | | --package-id <id> | ID App Station du module a lier (mode --link --type module). | | --parent-software-id <id> | ID App Station du logiciel parent (mode --create --type module). | | --name <name> | Nom du logiciel/module (mode --create). Detecte depuis package.json/composer.json si omis. | | --tagline <tagline> | Description courte du logiciel (optionnel, mode --create). | | --force-link | Force la liaison meme si ce logiciel/module est deja lie a un autre depot local. | | -y, --yes | Ecrase appstation.conf.json existant sans confirmation. | | --non-interactive | N'affiche jamais de prompt. |

Ecrit deux fichiers a la racine du depot :

  • appstation.conf.json — configuration non sensible (a versionner).
  • appstation.conf.local.json — contient la cle API Registra et le signingSecret de l'environnement en cours uniquement (secret, ajoute automatiquement au .gitignore). Un champ environment indique laquelle : ce fichier ne contient jamais dev et prod en meme temps — voir aps fetch-key pour le cas ou les deux existent a des moments differents.

aps doctor

Diagnostique la liaison App Station/Registra du depot courant : valide appstation.conf.json, resout la cle API, puis effectue deux appels reels contre l'API Registra pour confirmer qu'elle est acceptee.

aps doctor [--env development|production] [--non-interactive]

--env force le diagnostic sur un environnement different de celui inscrit dans appstation.conf.json (utile pour verifier une cle de production tout en developpant en local). aps doctor exige alors que le champ environment de appstation.conf.local.json corresponde exactement a --env : sans aps fetch-key --production prealable, le fichier contient encore l'identite dev, donc aps doctor --env production echoue avec un message explicite plutot que de silencieusement tester la mauvaise cle.

Si l'ancienne cle (avant une rotation faite cote Registra) est encore dans sa periode de grace, aps doctor l'indique avec sa date d'expiration — pensez alors a aps fetch-key pour passer a la nouvelle cle avant qu'elle n'expire.

aps status

Etat en lecture seule du lien local App Station/Registra. Sans flag : identite locale uniquement (instance App Station, logiciel/module lie, environnement, fingerprint) — aucun appel reseau.

aps status [--remote] [--secrets]

| Flag | Description | | --- | --- | | --remote | Ajoute le statut App Station courant (draft, pending_review, published, ...) et le nombre de releases deja publiees (non retirees). Seul cas avec appel API — utile pour verifier ou en est la review avant de lancer aps fetch-key --production : des pending_review, la cle de production recuperee devient reellement active cote Registra (avant ca, la commande reussit deja mais la cle n'est encore connue que d'App Station). | | --secrets | Ajoute la source (jamais la valeur) de la cle API et du signingSecret — variable d'environnement ou appstation.conf.local.json. Signale aussi un fichier local desynchronise de appstation.conf.json (normalement seulement apres un echec partiel : aps init/aps fetch-key ecrivent toujours les deux fichiers ensemble). Utile pour deboguer "pourquoi ma variable d'environnement n'est pas prise en compte" sans lire le code. |

Pour verifier que les secrets fonctionnent reellement contre Registra, voir aps doctor — aps status ne fait jamais d'appel a Registra.

aps update

Met a jour les metadonnees du logiciel/module lie via l'API App Station, sans passer par l'UI web.

aps update [--name <name>] [--tagline <tagline>] [--description <text>] \
           [--price-per-day <xof>] [--lifetime-price <xof>] \
           [--trial-period-days <n>] [--disable-trial] [--non-interactive]

| Flag | Description | | --- | --- | | --name <name> | Nom, 120 caracteres max (software ou module). | | --description <text> | Description, 10 000 caracteres max (software ou module). | | --tagline <tagline> | Description courte, 180 caracteres max (software uniquement). | | --price-per-day <xof> | Prix par jour en XOF (software uniquement). | | --lifetime-price <xof> | Prix a vie en XOF (software uniquement). | | --trial-period-days <n> | Active l'essai gratuit, duree entre 1 et 365 jours (software uniquement). | | --disable-trial | Desactive l'essai gratuit (software uniquement). |

Seuls les champs passes en flag sont modifies (mise a jour partielle). Sur un module, les flags marques "software uniquement" echouent avec un message clair plutot que d'etre ignores silencieusement. Les limites de longueur/ plage ci-dessus sont verifiees par la CLI elle-meme, alignees sur le formulaire App Station officiel et sur l'API /api/v1/publisher/... qu'elle consomme — les trois appliquent desormais exactement les memes limites.

aps upgrade

Met a jour la CLI aps elle-meme (pas le logiciel/module lie) vers la derniere version publiee sur npm. Detecte la version installee, compare a npm registry, puis installe via le gestionnaire de paquets approprie (npm par defaut ; pnpm/yarn/bun si detecte).

aps upgrade [--check]

| Flag | Description | | --- | --- | | --check | Verifie seulement si une mise a jour est disponible, sans l'installer. |

Sans mise a jour disponible, la commande ne fait rien d'autre que l'annoncer. Si vous utilisez npx @app-station/cli@latest, vous avez deja toujours la derniere version — aps upgrade est surtout utile en installation globale (npm install -g @app-station/cli).

aps sign

Genere un manifest signe (HMAC-SHA256) prouvant la liaison entre ce depot local, le logiciel/module App Station et l'environnement Registra. Le manifest ne contient jamais la cle API en clair, uniquement son empreinte SHA-256.

aps sign [--output <file>]   # par defaut : appstation.manifest.signed.json

Soumettez le fichier genere a App Station (dashboard editeur ou review).

aps verify <file>

Verifie un manifest signe : schema, signature HMAC-SHA256, fraicheur de generation (30 jours par defaut). Code de sortie 0 si valide, 1 sinon.

aps verify appstation.manifest.signed.json

Necessite le meme signingSecret que celui utilise pour signer : appstation.conf.local.json du depot concerne, ou la variable APS_SIGNING_SECRET (utile en CI ou pour une verification hors du depot d'origine, par ex. cote App Station).

aps fetch-key

Recupere/rafraichit la cle Registra locale — fusionne ce qui etait aps rotate-key, aps release-key et aps promote.

aps fetch-key [--production] [--non-interactive]

Sans --production : rafraichit appstation.conf.local.json (cle API + signingSecret) pour l'environnement deja inscrit dans appstation.conf.json — apres une rotation de cle faite cote Registra (admin, ne declenche pas la rotation elle-meme).

Avec --production : bascule le projet en production, en un seul geste — appstation.conf.json et appstation.conf.local.json passent tous les deux a production (ces deux fichiers restent toujours coherents entre eux : jamais l'un en dev et l'autre en prod). registra/init genere la cle de production localement cote App Station des maintenant, quel que soit le statut du logiciel/module — meme encore draft — sans jamais contacter Registra a cet instant : Registra ne connaitra reellement cette cle qu'a partir de la soumission en review (pending_review), sans attendre l'approbation admin (published). Tant que ce n'est pas le cas, aps fetch-key --production vous le signale (avertissement, pas une erreur), et aps doctor --env production confirmera la meme chose sans faire echouer le diagnostic.

L'interet de --production : la release qui sert a passer la review est forcement buildee avec la cle dev (seule disponible jusqu'ici a ce stade). Sans aps fetch-key --production, cette meme release reste ensuite servie aux vrais clients apres approbation — alors qu'elle n'a jamais ete testee avec la cle prod. Ca permet de recuperer la vraie cle de production, rebuilder, et publier la bonne release avant que quiconque ne l'installe.

Pour revenir en developpement ensuite, aps fetch-key (sans --production) ne suffit plus une fois le projet bascule — il rafraichit toujours l'environnement courant du projet. Utilisez aps init --env development pour re-lier explicitement le depot en dev.

En CI/CD, mettez a jour la valeur de REGISTRA_API_KEY avec la nouvelle cle de production apres la bascule (meme nom de variable qu'avant, seule la valeur change).

Flow recommande, du premier lien du depot jusqu'a la production :

  1. aps init (environnement development) — build et testez avec la cle dev.
  2. Soumettez le logiciel/module en review (aujourd'hui via l'UI web App Station — pas encore pilotable depuis la CLI).
  3. aps status --remote — verifiez que le statut est bien passe a pending_review.
  4. aps fetch-key --production — basculez le projet en production et recuperez la vraie cle Registra, puis rebuildez votre logiciel avec.
  5. aps release <file> — publiez ce binaire rebuilde (celui qui utilise la vraie cle prod), pas celui qui a servi a passer la review.

aps release <file>

Publie une release (upload du fichier <file>) pour le logiciel/module lie — memes regles de validation que le formulaire App Station officiel.

aps release ./dist/mon-logiciel-1.4.0.exe --release-version 1.4.0 \
  [--channel stable|beta|rc|nightly] [--platform windows|macos|linux|android|ios|universal] \
  [--notes <text>] [--min-software-version <version>] [--max-software-version <version>]

| Flag | Description | | --- | --- | | --release-version <version> | Requis. Semver strict (ex. 1.4.0, 2.0.0-beta.1), 20 caracteres max. Pas --version (reserve au numero de version de la CLI elle-meme, collision avec -V/--version de Commander). | | --channel <channel> | stable (defaut), beta, rc ou nightly. | | --platform <platform> | windows, macos, linux, android, ios ou universal. Omis = archive generique. | | --notes <text> | Notes de version (markdown), 10 000 caracteres max. | | --min-software-version / --max-software-version | Compatibilite avec le logiciel hote (module uniquement). |

Si aucun signingSecret n'existe encore pour ce logiciel, la release est publiee sans signature (signature: null) — elle est calculee retroactivement des que possible, pas une erreur a corriger.

Ou sont stockees les donnees

| Donnee | Emplacement | Versionne ? | | --- | --- | --- | | Session (token App Station) | ~/.config/app-station/credentials.json (Linux/macOS) ou %APPDATA%\app-station\credentials.json (Windows), permissions 0600 | Non — local a la machine | | Config du projet | appstation.conf.json a la racine du depot | Oui | | Cle API Registra + signingSecret | appstation.conf.local.json a la racine du depot | Non — ajoute au .gitignore par aps init |

Contribuer

Voir CONTRIBUTING.md pour le developpement local et le processus de publication.

Licence

ISC