Open-source project
anishathalye/git-remote-dropbox avatar
anishathalye/git-remote-dropbox

git-remote-dropbox: Using Dropbox as a Git Remote with Full Atomicity Guarantees

A transparent bridge between Git and Dropbox - use a Dropbox (shared) folder as a Git remote! 🎁

3,135 stars154 forksPythonMIT

At a glance

What is it?
git-remote-dropbox is a Python tool that makes a Dropbox folder or shared Dropbox folder function as a true Git remote. It uses the Dropbox API directly rather than the desktop sync client, maintains all Git guarantees including atomicity under concurrent writes, and supports named multi-account configurations.
Who is it for?
git-remote-dropbox is a good fit for developers who already use Dropbox and want to version-control a project without a hosted Git service, or who need to share a Git repository with collaborators who lack GitHub access but already share a Dropbox folder. It is not a replacement for GitHub or GitLab in team workflows that depend on pull requests, issues, or CI/CD integration.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 96 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What git-remote-dropbox Solves and Who It Is For

git-remote-dropbox addresses the problem of using Dropbox as a Git remote safely. A common question in the README's FAQ is why keeping a plain Git repository in Dropbox and letting the desktop client sync it does not work: the desktop client is not aware of how Git manages its on-disk format, and concurrent changes or sync delays can produce conflicts that corrupt the repository. The same problem applies to a bare Git repository synced by the desktop client.

The tool is for developers who want to use Dropbox as a backing store for a Git repository while retaining full Git semantics: atomic pushes, correct conflict detection, and the ability for multiple users to operate on the same repository concurrently. The typical users are individuals who want to back up a repository privately, or small teams who share a Dropbox folder and want a quick Git remote without a separate hosting account.

The pyproject.toml classifies the project as Development Status: Production/Stable. Python 3.7 or above is required.

How the Remote Helper Works: Dropbox API, Not the Desktop Client

git-remote-dropbox is a Git remote helper: a program whose name matches the pattern git-remote-X and that Git calls transparently when a remote URL uses the X:// scheme. When you push to or fetch from a remote URL starting with dropbox://, Git calls git-remote-dropbox and passes the operation to it.

The tool communicates with Dropbox through the Dropbox API directly. The README states explicitly that it does not use or require the Dropbox desktop client. This avoids the file-system race conditions that cause corruption when the desktop client syncs Git objects.

The tool maintains the on-disk format in a layout compatible with Git's object store. Because of this, the README documents a recovery path that does not use the helper at all: download the repository's objects and refs directories from Dropbox, overwrite the corresponding directories in a fresh local repository, and check out a branch. No special tooling is required for that recovery.

Installing and Authenticating with Dropbox

Install git-remote-dropbox with uv:

bash
uv tool install git-remote-dropbox

After installation, verify it is on your PATH with `which git-remote-dropbox`. Then authenticate with your Dropbox account:

bash
git dropbox login

This opens the OAuth flow. Once authenticated, you can clone a repository stored in your Dropbox:

bash
git clone "dropbox:///path/to/repo"

To add a Dropbox-backed remote to an existing local repository:

bash
git remote add origin "dropbox:///path/to/repo"

The repository directory on Dropbox is created automatically on the first push. From that point, the remote behaves like any regular Git remote.

For scoped access to a Dropbox app folder rather than the full Dropbox:

bash
git dropbox login --app-folder

Note that app folders cannot be shared with other users, so this mode is limited to personal use across your own machines.

The README recommends using selective sync in the Dropbox desktop client to disable syncing of the repository folder. This prevents the desktop client from interfering with the API-managed object store.

Multi-Account Support and the git dropbox Manager

git-remote-dropbox supports multiple Dropbox accounts through named logins. To add a second account:

bash
git dropbox login work

The name is a local alias unrelated to the Dropbox login credentials. To use a specific named account for a remote, set the URL accordingly: `dropbox://work@/path/to/repo`. This makes it possible to maintain separate work and personal Dropbox remotes in the same Git configuration without ambiguity.

The git dropbox manager command provides account administration. The commands it supports are: git dropbox login [username] to add an account, git dropbox logout [username] to remove one, git dropbox show-logins to list all authenticated accounts, git dropbox set-head to set the default branch on a remote, and git dropbox version to check the installed version.

Proxy support is also documented: set the HTTP_PROXY and HTTPS_PROXY environment variables to route API calls through a proxy server.

Where git-remote-dropbox Falls Short

The README documents two categories of limitations. The first is shallow cloning: it is not supported. This is relevant for large repositories where a shallow clone would otherwise transfer only recent history.

The second is object accumulation: cloning a repository or fetching a large number of objects generates many loose objects. To reduce disk usage in the local repository, the README recommends running `git gc --aggressive` after a large clone or fetch.

If the remote HEAD (the default branch on the Dropbox-backed remote) is not set, checking out a branch after a fresh clone requires an explicit `git checkout <branch>` command. The `git dropbox set-head` command resolves this by setting the default branch on the remote.

The tool is only useful when you have Dropbox access. Unlike GitHub or a self-hosted Git server, the backing store is an external service with its own storage limits and API rate limits. The README does not document those limits, so teams with large repositories or high push frequency would need to verify they stay within Dropbox API thresholds.

Another documented constraint is the app folder scope: when you log in with the --app-folder flag to limit the tool's access to a dedicated app folder within Dropbox, that folder cannot be shared with other Dropbox users. App folders in Dropbox are private to the app that created them. This means app folder mode is only usable for personal single-machine or multi-machine access, not for collaboration. To use git-remote-dropbox with a shared folder, you must give it access to the full Dropbox rather than a scoped app folder.

The README advises against directly interacting with Git repositories inside the Dropbox folder using any tool other than git-remote-dropbox. Direct manipulation risks the same file-system races that caused corruption in the desktop-client-only approach the tool was designed to replace.

git-remote-dropbox versus Hosted Git Services

GitHub, GitLab, and Bitbucket are the standard alternatives for teams that want a hosted Git remote. Those platforms provide not just remote storage but pull requests, issue tracking, CI/CD pipelines, access controls, and review workflows. None of that is available through a Dropbox-backed remote.

The practical case for git-remote-dropbox is narrow but clear: teams who share a Dropbox account already, who want a private repository that does not require creating accounts on a third-party platform, and who do not need pull request workflows. A solo developer who wants a quick off-machine backup of a personal project is the most natural user.

For any workflow that requires code review, automated testing on push, or public visibility, a hosted Git service is the appropriate choice. git-remote-dropbox is a transport layer, not a collaboration platform. It does what its name says: it gives you a remote, and Dropbox happens to be the storage backend.

Editorial conclusion

git-remote-dropbox is a good fit for developers who already use Dropbox and want to version-control a project without a hosted Git service, or who need to share a Git repository with collaborators who lack GitHub access but already share a Dropbox folder. It is not a replacement for GitHub or GitLab in team workflows that depend on pull requests, issues, or CI/CD integration. Before adopting it, verify that the pyproject.toml's production-stable classification matches your use case, and be aware that shallow cloning is not supported and that cloning large repositories generates many loose objects requiring a gc pass.

Frequently asked questions

Does git-remote-dropbox work with Dropbox shared folders?

Yes. You can explicitly share a Dropbox folder with collaborators through the Dropbox website, and each collaborator installs git-remote-dropbox and logs in with their own Dropbox account. The tool maintains atomicity even when multiple users operate on the repository concurrently.

Does git-remote-dropbox require the Dropbox desktop client?

No. The README states explicitly that git-remote-dropbox uses the Dropbox API directly and does not require the desktop client to be installed. It also recommends using the desktop client's selective sync to disable syncing of the repository folder if the client is installed.

Can git-remote-dropbox use multiple Dropbox accounts?

Yes. Use git dropbox login work (or any alias) to add a named account, then set the remote URL to dropbox://work@/path/to/repo to specify which account to use. The alias is a local label and is not related to the Dropbox account credentials.

Official sources

  1. anishathalye/git-remote-dropbox on GitHub
  2. Issues
  3. License: MIT
  4. Project website
  5. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/anishathalye-git-remote-dropbox.svg)](https://hysenlabs.com/projects/anishathalye-git-remote-dropbox)