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

@teammove/teamcode-runner

v0.2.1

Published

Roda o TeamCode na sua máquina: agentes de programação, arquivos e terminal, em segundo plano e voltando sozinho no boot.

Readme

TeamCode Runner

O TeamCode roda na sua máquina. A tela vive no TeamMove (menu → TeamCode), mas quem sobe o agente de programação, lê os arquivos e abre o terminal é este processo, aqui, com o seu login.

A tela monta o comando pronto em Minhas máquinas → Conectar um computador:

npx @teammove/teamcode-runner TC-7K2P-9QX4 --url wss://<seu-teammove>/teamcode-runner --install

Um passo só: pareia, instala um serviço do seu usuário e sai. A partir daí o runner fica de pé em segundo plano e volta sozinho depois de reiniciar o computador. Precisa de Node 22+ (o WebSocket global vem de lá).

| Comando | O que faz | | ------------- | ------------------------------------------------------------------------------- | | --install | instala/atualiza o serviço (systemd --user no Linux, launchd no macOS) e liga | | --status | diz se está rodando, se sobe no boot e com que nome pareou | | --stop | encerra o processo em segundo plano (o serviço, se instalado, sobe de novo) | | --uninstall | remove o serviço; o pareamento continua salvo | | --bg | roda solto do terminal sem instalar serviço (não volta no boot) | | sem flag | roda em primeiro plano; Ctrl+C encerra |

No Windows não há instalação automática: o comando imprime o caminho pra apontar uma tarefa no Agendador.

Máquina sem acesso ao registro do npm? O mesmo runner é servido pela própria API — a tela mostra este comando em "Sem npm nessa máquina?":

mkdir -p ~/.teamcode \
  && curl -fsSL https://<seu-teammove>/api/teamcode-runner/runner.mjs -o ~/.teamcode/runner.mjs \
  && curl -fsSL https://<seu-teammove>/api/teamcode-runner/caminho.mjs -o ~/.teamcode/caminho.mjs \
  && node ~/.teamcode/runner.mjs TC-7K2P-9QX4 --url wss://<seu-teammove>/teamcode-runner

Antes de parear

Tenha pelo menos um agente instalado — o runner detecta sozinho quais existem:

| Agente | Como instalar | | ----------- | ----------------------------------------------------------------------------- | | OpenCode | npm i -g opencode-ai e depois opencode auth login | | Claude Code | npm i -g @agentclientprotocol/claude-agent-acp (precisa do claude logado) | | Codex | npm i -g codex-acp (login do Codex ou OPENAI_API_KEY) | | Gemini CLI | npm i -g @google/gemini-cli |

Nenhuma chave de provedor sai daqui: o servidor não guarda credencial de modelo, e a assinatura usada é a que você já tem.

O que ele faz

  • sobe um agente por conversa — o TeamCode abre até seis conversas ao mesmo tempo, e cada uma é um processo próprio nesta máquina, na pasta que a conversa apontar;
  • responde perguntas sobre arquivos — listar pasta, ler arquivo e git diff HEAD da pasta do projeto, que é o que alimenta o explorador e a revisão de alterações;
  • abre terminal — shell com entrada por linha (sem pty: build, teste e git funcionam; vim e htop, não).

Cerca de arquivos

Explorador e leitura ficam presos à sua HOME. O agente em si não tem essa cerca (ele roda com o seu usuário, como rodaria no terminal) — a cerca existe para que um token vazado não vire "leia qualquer arquivo desta máquina".

TEAMCODE_ROOT=/home/eu/projetos npx @teammove/teamcode-runner   # cerca em outra pasta
TEAMCODE_ALLOW_ALL=1 npx @teammove/teamcode-runner              # sem cerca (opt-in)

Variáveis

| Variável | Para quê | | --------------------- | --------------------------------------------- | | TEAMCODE_RUNNER_URL | endereço do gateway (mesma coisa que --url) | | TEAMCODE_ROOT | raiz da cerca de arquivos (padrão: sua HOME) | | TEAMCODE_ALLOW_ALL | 1 derruba a cerca |

Conferindo a cerca

node caminho.selfcheck.mjs

Onde ficam as coisas

  • Pareamento (token, tenant, URL): ~/.config/teammove-teamcode/runner.json, modo 0600.
  • Pasta padrão das conversas sem pasta escolhida: ~/teamcode.
  • Cópia estável usada pelo serviço: ~/.config/teammove-teamcode/{runner,caminho}.mjs (rodando por npx, o arquivo original vive num cache que o npm limpa).
  • Log: ~/.config/teammove-teamcode/runner.log.
  • Serviço: ~/.config/systemd/user/teammove-teamcode.service (Linux) ou ~/Library/LaunchAgents/com.teammove.teamcode.plist (macOS). No Linux o --install também tenta loginctl enable-linger — sem linger, serviço de usuário não sobe no boot, só quando você faz login.

Perdeu o token ou trocou de computador? Gere um código novo na tela (ícone de recarregar ao lado da máquina) — o código anterior e o token antigo deixam de valer na hora.