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

@myinst/cli

v0.1.0-beta.16

Published

CLI para gerenciar seu vault MyInst

Readme

@myinst/cli

CLI oficial do MyInst para login, listagem, status, pull, push, Project State e histórico de chats do vault.

Versão atual: 0.1.0-beta.13.

Instalacao

npm install -g @myinst/cli

Uso

myinst --help
myinst login
myinst login --server https://api-myinst.lotoscore.com.br
myinst login --server http://localhost:3000 --api-key myinst_xxx
myinst status
myinst pull
myinst push
myinst st
myinst ls
myinst status myinst --workspace meus-projetos --client codex kimi
myinst push myinst --workspace meus-projetos --scope all --client codex
myinst state capture memory "Contexto do deploy" --body "Deploy ocorre por push e pull na VPS."
myinst state push .myinst/state/drafts/memory-contexto-do-deploy.json --reviewed
myinst state pull myinst --workspace meus-projetos
myinst state search "deploy" --workspace meus-projetos --project myinst
myinst chat push --workspace meus-projetos --project myinst --client codex --session sessao-1 --file chat.json
myinst chat import --workspace meus-projetos --project myinst --client codex --include history --path ~/.codex/sessions --dry-run
myinst chat import --workspace meus-projetos --project myinst --client codex --include history --path ~/.codex/sessions --reviewed
myinst chat list --workspace meus-projetos --project myinst --client codex --tag release
myinst chat show sessao-1 --workspace meus-projetos --project myinst
myinst chat export sessao-1 --workspace meus-projetos --project myinst --format markdown
myinst chat summarize sessao-1 --workspace meus-projetos --project myinst
myinst env push --workspace meus-projetos --project myinst --file .env.local --name local
myinst env push --workspace meus-projetos --project myinst --file .env.local --name local --create-recovery-key
myinst env pull --workspace meus-projetos --project myinst --name local --output .env.local

Aviso de atualização

A CLI consulta o npm no início de cada execução e avisa em stderr quando existir uma versão latest mais nova de @myinst/cli.

O aviso não bloqueia o comando, falhas de rede são ignoradas e a checagem pode ser desativada em automações:

MYINST_DISABLE_UPDATE_CHECK=1 myinst status myinst --workspace meus-projetos

Sync tipo repositorio remoto

myinst status [projeto] compara arquivos locais, vault remoto e .myinst/sync-state.json, mostrando pendências de pull, push e conflitos.

Por padrão, a CLI lê estruturas de clientes detectadas no projeto atual. Quando mais de um client for detectado, informe --client explicitamente para evitar aplicar conteúdo no layout errado. Isso inclui, por exemplo, .claude, .codex, .cursor, .kimi-code, GEMINI.md, .qwen, .aider e .antigravity quando existirem no repositório. Configurações globais da home do usuário só entram quando você usa --scope global ou --scope all.

Opções de sync:

  • --workspace <slug> seleciona o workspace remoto.
  • --client <id...> limita a operação a clientes específicos, como codex, claude ou kimi.
  • --scope <project|global|all> seleciona o escopo. O padrão é project.

O manifesto é atualizado automaticamente após myinst pull e após myinst push bem-sucedido. Se houver conflito, myinst push é bloqueado até revisão manual.

O sync bloqueia envio de segredos prováveis. Em mcp_config e settings, substitua valores reais por placeholders como {{MYINST_API_KEY}} e {{DATABASE_URL}}.

No pull nativo, configurações de client são protegidas por padrão. Se o arquivo local já existir, o MyInst preserva o conteúdo da máquina e ignora o item remoto correspondente; se o arquivo não existir, ele pode criar a versão redigida do vault. Isso evita sobrescrever API keys, caminhos locais, providers, modelos e ajustes específicos do notebook.

Fluxo recomendado:

myinst pull
myinst status
# editar arquivos locais
myinst status
myinst push

Atalhos equivalentes:

myinst st   # myinst status
myinst ls   # myinst list

No monorepo, sem instalar o pacote global, use o script da raiz:

pnpm myinst status
pnpm myinst st

Estados exibidos:

  • Pendente de pull: o vault remoto mudou ou possui item ausente no disco.
  • Pendente de push: o disco local mudou ou possui item ausente no vault.
  • Conflitos: local e remoto mudaram desde o último manifesto.
  • Sincronizado: local, remoto e manifesto estão equivalentes.

O v1 não faz merge automático nem deleção automática.

Exemplo:

Workspace: default
Projeto: default

Pendente de pull:
  claude     skill        deploy-local      remoto mais novo

Pendente de push:
  codex      instruction  agents            existe só local

Conflitos:
  kimi       skill        deploy            local e remoto mudaram

Cada linha usa a identidade estável { clientId, scope, workspace, project, type, slug }. Assim, codex/instruction/agents e claude/instruction/agents são tratados como itens diferentes, mesmo tendo o mesmo type e slug.

Project State

myinst state capture cria um draft local em .myinst/state/drafts/ e não envia nada ao servidor. Revise o JSON, confirme que não há segredos e envie com myinst state push.

Comandos disponíveis:

  • myinst state capture <memory|decision|session> <titulo> cria draft revisável.
  • myinst state push <draft> --reviewed salva o estado revisado no vault.
  • myinst state pull [projeto] materializa memórias, decisões e sessões em .myinst/state/.
  • myinst state search <query> busca Project State com scope=state.

O push exige metadata.reviewed=true e bloqueia padrões prováveis de segredos como tokens, senhas, .env e connection strings.

Histórico de chats

myinst chat importa histórico apenas por fonte explícita. A CLI não varre transcripts locais, caches ou diretórios internos de clientes automaticamente.

Chats não entram no myinst pull/push de arquivos nativos. Eles usam um fluxo próprio por { workspace, project, client, session }, permitindo filtrar e exportar conversas por cliente de origem.

Comandos disponíveis:

  • myinst chat push --project <slug> --client <client> --session <id> --file <json|md> importa uma sessão.
  • myinst chat import --project <slug> --client codex --include history --path <arquivo|diretorio> --reviewed importa histórico Codex JSONL com adapter dedicado.
  • myinst chat list --project <slug> [--client <client>] [--q <texto>] [--tag <tag>] [--from <iso>] [--to <iso>] lista sessões importadas.
  • myinst chat show <session-id> [--message-limit <n>] [--message-offset <n>] mostra mensagens paginadas.
  • myinst chat export <session-id> --format markdown grava .myinst/chats/<session-id>.md.
  • myinst chat summarize <session-id> atualiza o resumo no servidor.

Arquivos JSON devem conter messages; Markdown entra como uma mensagem única revisada. O import dedicado de Codex aceita .jsonl do histórico, incluindo o formato payload do Codex desktop, e exige --dry-run ou --reviewed. Mensagens com segredo provável que não puderem ser redigidas granularmente viram {{SECRET}}. A categoria cache existe no contrato, mas fica bloqueada até existir persistência segura por client. O backend bloqueia padrões prováveis de segredo antes de persistir.

Conversas longas continuam sendo uma única sessão. Use --message-limit e --message-offset para navegar pelas mensagens; não divida uma conversa em sessões --part-*.

JSON recomendado:

{
  "title": "Correção do sync Codex",
  "summary": "Resumo opcional revisado.",
  "metadata": {
    "tags": ["codex", "sync"],
    "source": "codex-export"
  },
  "messages": [
    { "role": "user", "content": "Corrija o pull do Codex." },
    { "role": "assistant", "content": "Pull ajustado e validado." }
  ]
}

Use --client codex, --client claude, --client cursor, --client kimi ou outro ID controlado para preservar a origem da sessão. Suporte a history e cache é implementado client por client, porque cada ferramenta guarda dados em estrutura própria. O export grava Markdown em .myinst/chats/; ele não reescreve o histórico interno do client.

O import grava todas as sessões encontradas no --path dentro do projeto informado por --workspace e --project. Ele ainda não separa automaticamente sessões por cwd; se ~/.codex/sessions tiver conversas de vários repositórios, use --dry-run e importe apenas arquivos ou subdiretórios que pertencem ao projeto correto.

Env Vault

myinst env é o fluxo dedicado para arquivos .env de projeto. Ele não faz parte do myinst pull/push normal, porque .env continua bloqueado nos fluxos de conteúdo, chats e Project State.

Comandos disponíveis:

  • myinst env push --project <slug> --file .env.local --name local criptografa localmente e envia somente o envelope cifrado.
  • myinst env push --project <slug> --file .env.local --create-recovery-key gera uma recovery key local e envia um envelope cifrado do segredo de vault.
  • myinst env pull --project <slug> --name local --environment local --output .env.local baixa o envelope, descriptografa localmente e cria backup se o destino já existir.
  • myinst env list --project <slug> lista metadados seguros.
  • myinst env show --project <slug> --name local mostra metadados seguros sem revelar valores.
  • myinst env delete --project <slug> --name local remove o env cifrado do projeto.

--project é obrigatório para evitar gravar .env em um projeto genérico. O segredo do Env Vault deve ser informado por MYINST_ENV_VAULT_SECRET ou pelo prompt local oculto. Evite exportar o segredo na mesma linha do comando para não vazar em histórico, logs ou listagem de processos. O segredo não é salvo em ~/.myinst/config.json e não deve ser enviado ao backend. O backend recebe apenas encryptedPayload, envelopes de recuperação cifrados e metadados operacionais do ciphertext.

Se houver mais de um env com o mesmo --name, informe --environment em pull, show e delete para evitar operar no ambiente errado.

Recovery por e-mail ou 2FA só valida identidade e autoriza step-up; ela não descriptografa .env sozinha. Para recuperação real, guarde a recovery key gerada por --create-recovery-key ou informe uma recovery key existente por MYINST_ENV_VAULT_RECOVERY_KEY. No futuro, outros materiais criptográficos locais podem ser suportados, como dispositivo confiável, passphrase forte ou passkey. Se todos os fatores criptográficos forem perdidos, o MyInst não deve conseguir restaurar o plaintext.

env pull exige --output para não confiar em caminhos retornados pelo servidor. Se o arquivo de destino existir, a CLI cria <arquivo>.bak antes de gravar. Use --overwrite apenas quando quiser substituir sem backup.

Requisitos

  • Node.js 22+
  • acesso a um servidor MyInst

Repositorio