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

syncerbytugu

v0.1.0

Published

Sync Claude Code conversation history between your computers through one private git repo. Exit on one PC, `claude --resume` on another.

Readme

syncerbytugu

Sync Claude Code conversation history between your computers through one private git repo. Exit Claude Code on one PC, run claude --resume on the other, and continue the exact same conversation.

Not affiliated with Anthropic. "Claude" and "Claude Code" are trademarks of Anthropic.

Setup (once per PC)

  1. Create an empty private repo on GitHub (e.g. my-claude-sessions). One repo for all your PCs.
  2. Make sure plain git clone <that-url> works on each PC without a password prompt (Git Credential Manager for HTTPS, or an SSH key).
  3. On every PC:
npm install -g syncerbytugu
syncerbytugu init https://github.com/<you>/my-claude-sessions.git

That's it. Daily use needs no commands:

  • Exiting Claude Code pushes your sessions (a SessionEnd hook).
  • Every 5 minutes and at logon a hidden background task pushes and pulls.
  • Starting Claude Code in a folder records where that project lives on this PC (a SessionStart hook).

On the other PC, cd into the project (it can be at a different path) and run claude --resume.

Commands

| Command | What it does | |---|---| | syncerbytugu init <repo-url> | One-time setup. Safe to run again. --machine <name> sets this PC's name. | | syncerbytugu status | Machine, repo, last push/pull, unmapped projects, conflicts, what's installed. | | syncerbytugu sync | Push then pull now. | | syncerbytugu push / pull | One direction only. | | syncerbytugu list | Local sessions and the project key each maps to. | | syncerbytugu uninstall | Removes the hooks and scheduled tasks. Asks before deleting ~/.syncerbytugu. Never touches your transcripts. |

How it works

  • Claude Code stores sessions in ~/.claude/projects/<slug>/<sessionId>.jsonl, where the slug is the project path. Only those *.jsonl files are synced. Login, settings, MCP, and plugins are never synced.
  • Projects are matched across PCs by their git remote ([email protected]:you/app.git and https://github.com/you/app are the same project), so C:\dev\app on one PC and D:\code\app on the other both work. Folders without a git remote inside your home folder (Desktop, Downloads, ...) are matched by their path relative to home; other folders without a remote are matched by folder name.
  • On push, this PC's project path inside the transcript is replaced with a placeholder. On pull, it becomes the other PC's path.
  • Transcripts only grow. The longer version wins when the shorter one is a prefix of it. If the same session was continued on both PCs, nothing is overwritten. The other copy is saved next to yours as <session>.conflict-<machine>.jsonl, and a warning is logged.
  • State lives in ~/.syncerbytugu/: config.json, registry.json (project → local folder), repo/ (clone), log.txt.

Known limitations

  • Exit Claude on one PC before resuming on the other. If a session diverges, you get a conflict file, not a merge.
  • The sessions repo must be private. Transcripts contain everything you typed or pasted into Claude. init refuses a public GitHub repo.
  • A project that has never been opened or cloned on a PC can't be mapped there yet. Open it once in Claude Code (or clone it), and the next sync picks it up. status lists these projects.
  • Background auto-sync is Windows-only in v0 (one hidden scheduled task, runs on battery too). On macOS/Linux, the exit hook still pushes. Run syncerbytugu pull yourself or from cron.
  • The Claude Code Desktop app may not list sessions synced from another machine. Use the CLI claude --resume.

Development

npm install
npm run build
npm test
npm link            # makes `syncerbytugu` point at this checkout

Test against copies, never your real chats. SYNCERBYTUGU_CLAUDE_DIR overrides ~/.claude, and SYNCERBYTUGU_HOME overrides ~/.syncerbytugu. Use a local bare repo (git init --bare C:\tmp\test-sessions.git) instead of GitHub.