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

sincronizado

v2.0.1

Published

<p align="center"> <a href="https://github.com/Microck/sincronizado"> <img src="/assets/logo/logosmall.png" alt="logo" width="250"> </a> </p>

Downloads

997

Readme


sincronizado ("synchronized") is the missing link for ai-native development. it allows you to use your own local files while running your heavy ai agents and code execution on a powerful vps.

the problem

local machines have good editors but weak compute. running multiple ai agents locally kills battery and blocks your terminal.

vps instances have the compute but editing on them is painful. ssh latency lags. remote connections drop. terminal-only editing is limiting when you need rich gui tools.

the fix

sincronizado bridges the gap.

  1. keep your files on your local machine.
  2. sync them instantly to a vps using mutagen.
  3. run your ai agent (claude, opencode) on the vps in a persistent tmux session.

you get local speed with server-grade compute.

workflow scenarios

scenario a: the "macbook air + h100"

you love macos but need serious gpu power. edit your training script locally. sinc pushes it to the vps instantly. you run python train.py in the remote session. your laptop stays cool and silent.

scenario b: the "digital nomad"

bad hotel wifi? no problem. mutagen syncs when the connection allows. tmux keeps your heavy compilation or long-running agent alive even if you disconnect for hours. resume with sinc -r exactly where you left off.

scenario c: the "battery saver"

running ollama or huge node builds locally kills battery in 2 hours. offload it all to a cheap hetzner box. keep your local machine purely for editing and browsing.

what it actually does

sinc is the cli for sincronizado. it orchestrates mutagen, ssh, and tmux.

when you run sinc in a project folder:

  1. checks if a sync session exists. if not, creates one.
  2. syncs local files to ~/workspace/<folder_name> on remote.
  3. opens an ssh connection.
  4. attaches to a tmux session named after your project.
  5. drops you into a shell where your agent is ready to run.

if you disconnect, the session stays alive. run sinc -r to reattach. files keep syncing in the background.

architecture

graph TB
    subgraph local ["local machine"]
        vs[editor]
        cli[sinc cli]
    end

    subgraph sync ["tunnel"]
        mut[mutagen daemon]
    end

    subgraph vps ["remote vps"]
        agent[ai agent]
        tmux[tmux session]
        fs[file system]
    end

    vs <-->|file changes| cli
    cli <-->|mutagen protocol| mut
    mut <-->|ssh tunnel| fs
    cli <-->|ssh stream| tmux
    tmux <--> agent
    agent <--> fs

installation

automated (linux / macos)

installs the binary to ~/.local/bin (or similar) and sets up config.

curl -fsSL https://sync.micr.dev/install.sh | bash

automated (windows powershell)

requires powershell 5+ and administrative privileges for symlinks if you don't use developer mode.

irm https://sync.micr.dev/install.ps1 | iex

llm-guided setup

want an ai assistant to walk you through install + vps setup? paste this into your llm agent session:

Install and configure sincronizado by following the instructions here:
https://raw.githubusercontent.com/Microck/sincronizado/refs/heads/main/INSTALL.md

if this helped, consider starring the repo ᕙ(⇀‸↼‶)ᕗ

manual (from source)

requires bun runtime.

git clone https://github.com/Microck/sincronizado.git
cd sincronizado
bun install
bun run build
# binary is in ./dist/sinc

usage

initial setup

run this once. it creates ~/.config/sincronizado/config.json, checks for ssh keys, and sets up your environment.

setup features:

  • vps connection: configure host, user, and port.
  • ssh keys: use existing or generate new ed25519 keys.
  • custom alias: create a shortcut (e.g. type opencode to run sinc).
  • vps bootstrap: auto-install tmux and create workspace folders.
  • security hardening: optional firewall (ufw), fail2ban, and auto-updates setup.

start a session

navigate to your project. run sync.

cd ~/my-project
sinc

this creates the remote folder ~/workspace/my-project and starts syncing.

resume a session

detached? network drop? reattach to the existing tmux session.

sinc -r

manual sync (push / pull)

force a one-way sync for the current project. this requires an active session and asks for confirmation.

sinc push
sinc pull

to skip the confirmation prompt:

sinc push --yes
sinc pull --yes

kill a session

stop the sync and kill the remote tmux session.

sinc --kill <session_name>
sinc -k <session_name>
sinc kill <session_name>

list active sessions:

sinc --list
sinc -l
sinc list

configuration

config lives at ~/.config/sincronizado/config.json.

example:

{
  "vps": {
    "hostname": "192.168.1.50",
    "user": "ubuntu",
    "port": 22,
    "keyPath": "~/.ssh/id_ed25519"
  },
  "sync": {
    "mode": "two-way-safe",
    "ignore": [
      ".git",
      "node_modules",
      "dist",
      ".next",
      "coverage"
    ],
    "remoteBase": "~/workspace"
  },
  "agent": "opencode"
}

remote base

remoteBase defines where projects live on the vps. default is ~/workspace. if you sync ~/code/my-app locally, it lands at ~/workspace/my-app remotely.

ignore files

create a .syncignore file in your project root to override global ignores. syntax matches .gitignore.

# .syncignore
build/
tmp/
*.log

dependencies

local:

  • mutagen: handles file synchronization. sinc --setup attempts to install this.
  • ssh: standard openssh client.

remote (vps):

  • tmux: required for session persistence.
  • opencode or claude: the agent you want to run.
  • git: recommended for version control operations.

bootstrap a fresh vps with our script:

# runs on your local machine, targets the vps
./scripts/setup-vps.sh

troubleshooting

sync conflicts run mutagen sync list to see status. if stuck, run mutagen sync terminate <id> and restart sinc.

ssh permission denied check your key is loaded: ssh-add -l. verify you can ssh manually: ssh user@host.

agent not found ensure your agent binary is in the remote $PATH. check .bashrc or .zshrc on the vps.

latency mutagen is fast but big node_modules folders slow it down. ignore them in config.json or .syncignore. run npm install on the vps side instead.

license

MIT ᕙ(⇀‸↼‶)ᕗ