Clone every repo in a GitHub organisation or user to your NAS, and keep them up to date

Choose an account and a folder on a NAS or local disk. Repo Harbor writes a script for you to run that clones each repository into its own sub-folder, or, for clones you already have, stashes your changes and pulls main or master in every one.

  1. Choose the GitHub account

    For example vercel, torvalds or a link such as https://github.com/microsoft.

    Include private repositories (optional token)

    Only needed to list private repositories, or to raise GitHub's limit of 60 look-ups an hour. Use a fine-grained token with read-only “Metadata” access. It is sent only to GitHub, is never saved and is not put in the script.

  2. Pick the repositories

    Find an account in step 1 to see its repositories here.

  3. Choose where to put them

  4. Get your clone script

    Clone using

    HTTPS works anywhere and uses your saved git sign-in for private repositories. Choose SSH if you have an SSH key set up with GitHub.

Questions

Why do I run a script instead of the website doing it?

A web page isn't allowed to run git or write to your disks and network shares. So Repo Harbor does the parts a browser can: it finds the repositories and writes a script that's ready to run. You can read the script before you run it, and it never sends your files anywhere.

How do I point it at my NAS?

On Windows, use a network path such as \\nas\share\code or a mapped drive like Z:\code. On macOS, connect to the share in Finder and use /Volumes/share/code. On Linux, use where the share is mounted, such as /mnt/nas/code. With NAS selected, the script tells git to trust the repositories there, because shares often report a different file owner and git would otherwise refuse to work with them.

Can I run it again?

Yes. The clone script skips repositories that are already cloned, so running it again only adds new ones. The update script can run as often as you like, for example from Task Scheduler or cron.

What about private repositories?

Add a token in step 1 so the website can list them. To clone them, git on your computer must be signed in to GitHub. Git for Windows and GitHub Desktop do this for you; elsewhere use gh auth login or an SSH key.

Where did my changes go?

Into a stash named repo-harbor auto-stash with the date and the branch you were on. Run git stash list in the repository to see it and git stash pop to bring it back. The script lists every repository it stashed in.

What does it need?

Git, and PowerShell 5.1 or later (included with Windows) or Bash 3.2 or later (included with macOS and Linux). Nothing else is installed.

Privacy Policy

Second edition, effective 27 October 2026. It now covers the recent accounts and folders this website remembers.

This website

This policy covers Repo Harbor, https://adrianeyre.github.io/github-harbor/, a single static page published from its GitHub repository and hosted by GitHub Pages. It has no accounts, no sign-in and no server of its own.

What this website collects

Nothing. There is no analytics, no tracking and no advertising, and the page's fonts, icons and images all come from this site, so loading it sends nothing to anyone else.

What you type in

  • The organisation or username you enter is sent straight from your browser to GitHub's public API, at api.github.com, to list its repositories. Nothing passes through any other server.
  • A token, if you add one, is sent only to GitHub, in the same requests. It is held in the page's memory while the tab is open, is never saved and is never put in a script.
  • Folders and options you choose stay in your browser. Your scripts are made in your browser too, and are only saved when you download them.
  • Your settings (your last choices, up to 5 recent accounts and up to 8 recent folders, but never a token) are remembered in your browser's local storage so they can be filled in or suggested next time, as the Cookie Policy explains. Folder names may include your NAS's server and share names. They never leave your device, and you can clear them at any time.

Who else sees your visit

  • GitHub hosts this website and answers its API requests. Like any web host, it receives your IP address and what your browser asks for, and may log them, as the GitHub General Privacy Statement explains.
  • Links to other sites leave this website, and those sites have their own privacy policies.

The scripts

The scripts run on your computer and talk only to the git remotes they clone from or pull from, which are GitHub's. They report nothing to Repo Harbor or anyone else.

Your rights

This website holds nothing about you. To clear your saved settings, use the button in the Cookie Policy or clear this site's data in your browser. For a question about this policy, open an issue on GitHub.

Changes

This policy may change along with the website. The date at the top shows when it last changed.

Terms and Conditions

First edition, effective 27 October 2026.

Using this website

Repo Harbor writes scripts that clone and update git repositories. By using it, you agree to these terms and to GitHub's own terms, for the GitHub Pages this site is hosted on and for the GitHub API it uses.

Your scripts, your computer

The scripts are written for you to read before you run them. You run them on your own computer, at your own risk, against your own storage. They only create folders, clone, fetch, stash, switch branches and fast-forward, and they never delete files or force anything. Still, keep backups of work that matters.

Repositories and accounts

Only clone repositories you are allowed to. Their licences, and the terms of the GitHub accounts and organisations they belong to, still apply. A token you add must be your own, and you are responsible for it.

Names and trademarks

GitHub and Git are trademarks of their owners and are named only to say what Repo Harbor works with. Repo Harbor is not made or endorsed by GitHub.

No warranty

This website and the scripts it writes are provided as they are, without warranty of any kind. Its authors are not liable for any loss arising from their use, to the extent the law allows.

Law

These terms are governed by the law of England and Wales, whose courts settle any dispute about them. If you live elsewhere in the United Kingdom or in the European Union, you also keep the protection of your own country's mandatory laws.

Changes and contact

These terms may change along with the website. The date at the top shows when they last changed. For a question, open an issue on GitHub.

Accessibility

First edition, effective 27 October 2026.

Conformance status: this website is built to meet the Web Content Accessibility Guidelines (WCAG) 2.2 at Level AA.

What we have done

  • Keyboard access: every link, button, tab, checkbox and dialog works with a keyboard alone. Focus has a clear outline that the sticky header and footer never hide, and a "Skip to main content" link comes first on the page. On very short screens, or zoomed right in, the header and footer stop sticking so they don't take up the page.
  • Screen readers: one main heading, headings in order and labelled landmarks. Every control has a visible label, and results, errors, copying and downloading are announced.
  • Forms: labels and hints sit beside each field, errors say what went wrong and how to fix it, and your previous answers are filled in for you.
  • Colour and contrast: text has at least 4.5:1 contrast with its background, and controls, icons and focus outlines at least 3:1, in both light and dark mode, which follow your device. Windows Contrast Themes are respected, and colour is never the only way something is shown.
  • Motion: transitions are short, and they are switched off when your device asks for reduced motion.
  • Zoom and reflow: the page reflows down to 320 pixels wide and at 400% zoom without scrolling sideways.
  • Target sizes: every control is at least 24 by 24 pixels, and main buttons at least 44 pixels tall.
  • Dialogs: these policies and the Changelog move focus in, keep it there, close on Escape and return focus to whatever opened them.

Known limitations

  • Long lines in the script preview scroll sideways inside their own frame on narrow screens. The frame can take focus, so the arrow keys scroll it.
  • The scripts' coloured output in the terminal also says everything in words, but how it looks depends on your terminal.

Feedback

If something is hard to use, please open an issue on GitHub and tell us what you were trying to do and which browser and assistive technology you used.