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

aarin-graviton-cli

v1.0.0

Published

CLI tool for adapting Helm charts and Kubernetes APIs to use ARM Graviton CPU architecture

Readme

🚀 Adapt Graviton CLI

Adapte seus Helm charts e APIs Kubernetes para ARM Graviton em um único comando!

Um CLI para adaptar completamente suas aplicações para usar a arquitetura ARM Graviton em clusters Kubernetes, com suporte a versionamento automático, adaptação de Dockerfiles, configuração de environments e pipelines GitLab CI otimizadas.


⚡ Quick Start

1. Executar a Adaptação Completa

npx graviton-cli run

2. Responder as Perguntas Interativas

📦 URL SSH do Helm GitLab: [email protected]:seu-usuario/helm.git
🔌 URL SSH da API GitLab: [email protected]:seu-usuario/api.git

3. Pronto! 🎉

  • ✅ Dockerfiles adaptados para ARM64
  • ✅ Chart.yaml versionado
  • ✅ Values files com affinity configurado
  • ✅ Pipeline GitLab CI otimizada
  • ✅ Branch feat/graviton criada com todas as mudanças
  • ✅ MRs automáticas criadas:
    • Helmmain com título (PRD) feat: change to use ARM CPU
    • APIdev, sandbox, main com títulos correspondentes (DEV), (SDX), (PRD)
  • ✅ VSCode aberto com os arquivos adaptados (opcional)

📋 O que o Comando run Faz?

O comando run é um orquestrador completo que:

1️⃣ Clone Automático

- Clona repositório Helm
- Clona repositório API
- Cria branch feat/graviton em ambos

2️⃣ Adaptação Completa

📦 Dockerfiles

  • Remove ferramentas x86-específicas
  • Remove Datadog
  • Garante compatibilidade ARM64

📊 Chart.yaml

  • Incrementa versão (minor+1, patch=0)
  • Adiciona dependência helm-aarin-base 2.2.0

⚙️ Values Files (values-[env].yaml)

  • Adiciona affinity para ARM64
  • Força agendamento em nodes ARM64:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
            - matchExpressions:
              - key: "kubernetes.io/arch"
                operator: "In"
                values: ["arm64"]

🔄 Pipeline GitLab CI

  • Remove security-pipeline include
  • Remove jobs com "release" no nome
  • Atualiza para GitOps com ARM64 build:
    include:
      - project: aarintechfin/devops/gitops
        ref: main
        file: infrastructure/gitlab-pipelines/templates/aws-eks/eks-deployment.yaml
        inputs:
          build_apps:
            - name: myapp
              target_archs: linux/arm64
              #...ENVS
              dockerfile_path: "./src/MyApp/Dockerfile"
          chart_version: "0.2.0"

3️⃣ Commit & Push Automático

git add -A
git commit -m "feat: adapt for ARM Graviton" --no-verify
git push origin feat/graviton --no-verify

4️⃣ MRs Automáticas

Cria 4 MRs no GitLab:

  • Helm: 1 MR para main
  • API: 3 MRs para dev, sandbox, main

Comando reduce - Redução de Recursos de CPU e Memory em Lote

Reduz recursos (CPU: 50m, Memory: 256Mi) em arquivos values-dev.yaml e values-sdx.yaml de múltiplos repositórios Helm com um único comando. Automaticamente cria branch feat/reduce-cpu-memory, faz commit com a mensagem [DEV,SDX] feat: reduce resource CPU and Memory, faz push e cria MRs automaticamente (com token GitLab).

🚀 Uso

Processar repositórios com MRs automáticas

export GITLAB_TOKEN="seu-token-aqui"
graviton reduce --urls "[email protected]:grupo/helm1.git,[email protected]:grupo/helm2.git"

Caso queira fazer em lote, basta fornecer uma lista de URLs SSH dos repositórios separados por vírgula. O CLI irá processar cada um sequencialmente, aplicando as mudanças, fazendo commit, push e criando MRs automaticamente.

export GITLAB_TOKEN="seu-token-aqui"
graviton reduce --urls "[email protected]:grupo/helm1.git,[email protected]:grupo/helm2.git,[email protected]:grupo/helm3.git"

✨ Recursos

  • Clonagem Automática: Clona repositórios diretamente via SSH
  • Branch Automática: Cria/usa branch feat/reduce-cpu-memory
  • Processamento em Lote: Processa múltiplos repositórios sequencialmente
  • Commit Automático: Mensagem padrão [DEV,SDX] feat: reduce resource CPU and Memory
  • Push Automático: Faz push para a branch
  • MRs Automáticas: Cria Merge Requests abertas (requer GITLAB_TOKEN)
  • Tolerações: Adiciona nodeSelector e tolerations para Graviton
  • Relatório Final: Mostra sucesso/falhas e URLs das MRs criadas

📝 Alterações Realizadas

Para cada ambiente (dev e sdx), reduz os requests:

# Antes
resources:
  customResource:
    requests:
      cpu: "200m"
      memory: "512Mi"

# Depois
nodeSelector:
  kubernetes.io/arch: "arm64"
tolerations:
  - effect: NoExecute
    operator: Equal
    key: graviton
    value: "true"
resources:
  customResource:
    requests:
      cpu: "50m"
      memory: "256Mi"

📊 Exemplo com 34 Repositórios do Consórcio

# Com MRs automáticas abertas
export GITLAB_TOKEN="glpat-..."
graviton reduce --urls "[email protected]:aarintechfin/consorcio/helms-consorcio/backoffice-self-contemplation/customer-query-api-helm.git,[email protected]:aarintechfin/consorcio/helms-consorcio/consorcio-public-sales-proxy-helm.git"

Ou use o script preparado:

export GITLAB_TOKEN="seu-token"
bash examples/reduce-consorcio-helms.sh

📋 Configurar GITLAB_TOKEN para MRs Automáticas

  1. Acesse GitLab: https://gitlab.com/-/user_settings/personal_access_tokens
  2. Crie um novo token com permissões: api, read_repository, write_repository
  3. Configure no shell:
    export GITLAB_TOKEN="glpat-..."
  4. Execute o comando reduce normalmente

🔧 Opções

  • --dry-run: Simular alterações sem fazer mudanças
  • --urls <urls>: URLs SSH separadas por vírgula (obrigatório para lote)

📚 Todos os Comandos Disponíveis

| Comando | Descrição | |---------|-----------| | run | 🚀 Adaptação completa (Helm + API) para ARM Graviton | | reduce | ⚙️ Reduzir recursos em múltiplos Helms (Dev/SDX) | | adapt-chart | 📊 Adaptar Helm chart para ARM Graviton | | adapt-dockerfile | 🐳 Adaptar Dockerfiles para ARM Graviton | | adapt-pipeline | 🔄 Adaptar pipelines GitLab CI para ARM Graviton | | validate | ✅ Validar compatibilidade do chart | | detect-image | 🔍 Detectar arquiteturas suportadas por imagem Docker | | update-projects | 📦 Atualizar versões do Chart.yaml | | update-environments | ⚙️ Adicionar nodeSelector e tolerations | | deploy | 🚀 Deploy em cluster Kubernetes | | clone-repos | 📥 Clonar repositórios do GitLab | | config | ⚙️ Gerenciar configurações |


Instalação

Global (Recomendado)

npm install -g graviton-cli
graviton run

Via npx (Sem Instalação)

npx graviton-cli run

Local (Desenvolvimento)

clone o repositório e instale dependências:

npm install
npm run build
npm install -g .
graviton run

📝 Usando o Comando run

Pré-requisitos

  1. Git SSH configurado

    ssh -T [email protected]
    # Deve responder: "Welcome to GitLab..."
  2. URLs SSH dos repositórios

  3. (Opcional) Token GitLab para MRs automáticas

    export GITLAB_TOKEN="glpat-..."

Executando

# Com npx
npx graviton-cli@latest run

# Ou com instalação global
graviton run

Fluxo Interativo

╭─────────────────────────────────────────────╮
│  🚀 Use Graviton CLI - Full Adaptation      │
╰─────────────────────────────────────────────╯

📦 URL SSH do Helm GitLab: 
> [email protected]:seu-usuario/helm-repo.git

🔌 URL SSH da API GitLab: 
> [email protected]:seu-usuario/api-repo.git

[Clone] ✓ Helm clonado em ./.graviton-work-xxx/helm
[Clone] ✓ API clonada em ./.graviton-work-xxx/api

[Adapt] 📦 Adaptando Dockerfiles...
[Adapt]    ✓ 2 Dockerfile(s) processado(s)

[Adapt] 📊 Atualizando Chart.yaml...
[Adapt]    ✓ chart: 0.1.5 → 0.2.0

[Adapt] ⚙️  Atualizando environments...
[Adapt]    ✓ 3 arquivo(s) de environment atualizado(s)

[Adapt] 🔄 Adaptando pipelines...
[Adapt]    ✓ 1 pipeline(s) adaptada(s)

[Push] ✓ Helm: Push concluído
[Push] ✓ API: Push concluído

[MRs] 📦 Helm:
[MRs]    ✓ MR criada: https://gitlab.com/.../helm/-/merge_requests/42

[MRs] 🔌 API:
[MRs]    ✓ MR para dev: https://gitlab.com/.../api/-/merge_requests/123
[MRs]    ✓ MR para sandbox: https://gitlab.com/.../api/-/merge_requests/124
[MRs]    ✓ MR para main: https://gitlab.com/.../api/-/merge_requests/125

✅ Adaptação completa! Tudo pronto para revisão.

📂 Abrir pasta no VSCode? (s/n): s

🔍 O Que Mudou?

Após executar graviton run, você terá:

Branch feat/graviton

helm/
├── chart/
│   ├── Chart.yaml              ← Versão incrementada
│   ├── values-dev.yaml         ← Affinity adicionada
│   ├── values-sandbox.yaml     ← Affinity adicionada
│   └── values-main.yaml        ← Affinity adicionada
└── .git/
    └── feat/graviton branch    ← Criada automaticamente

api/
├── src/
│   ├── App.Api/
│   │   └── Dockerfile          ← x86 removido, ARM64 otimizado
│   └── Domain/
│       └── Dockerfile          ← Adapatado
├── .gitlab-ci.yml              ← GitOps configurada
└── .git/
    └── feat/graviton branch    ← Criada automaticamente

MRs no GitLab

| Repositório | Branch Origem | Branch Destino | Título | Status | |------------|---------------|----------------|--------|--------| | Helm | feat/graviton | main | (PRD) feat: change to use ARM CPU | ✅ Criada | | API | feat/graviton | dev | (DEV) feat: change to use ARM CPU | ✅ Criada | | API | feat/graviton | sandbox | (SDX) feat: change to use ARM CPU | ✅ Criada | | API | feat/graviton | main | (PRD) feat: change to use ARM CPU | ✅ Criada |


🐛 Troubleshooting

❌ "Git SSH não configurado"

Solução:

# Gerar chave SSH
ssh-keygen -t ed25519 -C "[email protected]"

# Adicionar ao GitLab
cat ~/.ssh/id_ed25519.pub
# Copiar e colar em: GitLab > Settings > SSH Keys

# Testar
ssh -T [email protected]

❌ "MR failed com 404"

Causa: Path do projeto incorreto

Solução:

# Verificar URL correto
git remote -v
# Use: [email protected]:grupo/projeto.git

❌ "Dockerfile não encontrado"

Causa: Estrutura de pastas diferente

Solução:

# Verificar estrutura
find repo -name "Dockerfile"
# Pode estar em src/, docker/, etc.

❌ "VSCode não abriu"

Cause: Comando code não disponível

Solução:

# Instalar Command Line Tools
# macOS: Cmd + Shift + P > Shell Command: Install 'code' command in PATH

✨ Recursos Adicionais

Variáveis de Ambiente

# Para MRs automáticas (opcional)
export GITLAB_TOKEN="seu-token-aqui"

# Usar CLI
npx graviton-cli run

Temporizações Típicas

| Operação | Tempo | |----------|-------| | Clone | 30-60s | | Adaptação | 5-10s | | Commit & Push | 10-20s | | MRs | 5-15s | | Total | ~2 min |

Arquivos Gerados

.graviton-work-YYYY-MM-DDTHH-MM-SS/
├── helm/              ← Repositório Helm clonado
├── api/               ← Repositório API clonado
└── summary.log        ← Log de todas as mudanças

🤝 Suporte

Problemas?

  1. Verifique o Troubleshooting
  2. Verifique o log de erros

📄 Licença

MIT


🎓 Versão

@latest - Sempre recomendado usar a versão mais recente:

npx graviton-cli run

Pronto para adaptar para ARM Graviton? Execute agora:

npx graviton-cli run

🚀 Boa sorte!