Self-hosted syncing for people who care about their data.

RemoteCabinet is a lightweight, local-first file sync and backup tool. Run a tiny server on your machine or home lab, connect with the CLI, and keep your files in sync across devices – without handing them to a third-party cloud.

Local-first Self-hosted CLI-driven
Diagram of RemoteCabinet server and clients
remote-cabinet ~
$ rc server start
Listening on localhost:4000

$ rc connect --host 192.168.1.10
Connected ✓

$ rc sync ~/Projects
Sync complete: 24 files updated

Why build something local like this?

Most file sync tools assume you are fine with a remote cloud owning your storage. RemoteCabinet flips that model. It treats your own machine as the cabinet, and gives you a simple protocol and CLI to open that cabinet from your other devices.

Own your storage

Every file lives on hardware you control. There is no dependency on an external provider, no opaque retention policies, and no background data mining.

Stay close to the metal

RemoteCabinet is small and focused. You get a straightforward server and a CLI client, designed for LANs and home labs, without heavyweight dashboards or background daemons you do not understand.

Made for developers & tinkerers

Because it is implemented in Python and lives on GitHub, you can read the code, extend the protocol, and integrate it into your own tooling and automations.

What RemoteCabinet does

At its core, RemoteCabinet is a personal sync and backup service. One machine runs the server; other machines connect as clients, push and pull files, and stay in sync.

📁

File sync & backup

Keep a chosen directory mirrored between your local machine and your RemoteCabinet server. Use it as a simple backup destination or a shared project workspace.

🔗

Simple network protocol

A focused client–server protocol handles listing, uploading, downloading, and updating files, without the complexity of a full distributed filesystem.

🛠️

CLI-first workflow

RemoteCabinet is controlled via the command line, making it ideal for terminals, SSH sessions, scripts, cron jobs, and automated backups.

🛡️

Local trust model

Because the server runs in your own environment, you can integrate system-level security: firewalls, VPNs, SSH tunnels, and OS permissions.

⚙️

Hackable & extensible

The codebase is structured for experimentation. Extend request types, add metadata, or plug in your own authentication and sync policies.

💡

Great for learning

RemoteCabinet is also a teaching tool: it demonstrates how to design a custom protocol, build a networked application, and reason about sync semantics.

How RemoteCabinet works

The architecture is intentionally small: a single server process, multiple CLI clients, and a clear separation between local folders and the remote cabinet.

  1. Start the server
    Run the RemoteCabinet server on a machine that has the storage you want to use as your cabinet.
  2. Connect from your client
    From another machine on your network, run the client and point it to your server’s host and port.
  3. Sync your folders
    Choose a local directory to sync. The client compares file states and transfers what is missing or outdated.
  4. Automate if you want
    Wrap commands in scripts or cron jobs to turn RemoteCabinet into a scheduled backup or project mirror.
RemoteCabinet client–server architecture

One server, multiple clients. Your cabinet lives where your storage and trust are.

Get started in a few commands

Once you have cloned the repository, starting a RemoteCabinet instance is a straightforward Python workflow.

1. Clone the project

git clone https://github.com/soumildatta/RemoteCabinet.git
cd RemoteCabinet

2. Start the server

# Example: run the server on port 4000
python RCServer.py --host 0.0.0.0 --port 4000 \
  --root /path/to/your/cabinet

3. Connect a client

# From another machine on the same network
python RCClient.py --host 192.168.1.10 --port 4000

# Upload or download files and folders
# (Exact commands may vary based on the CLI in the repo)

The GitHub repository contains full instructions and examples. Use this website as a conceptual overview; consult the README for up-to-date installation details and command-line options.

Where RemoteCabinet fits

Home lab storage

Run RemoteCabinet on a small home server or NAS. Use your laptop and desktop as clients to sync project folders and important documents.

Research & coding

Mirror experiments, code, or notes between a workstation and a laptop without involving third-party sync services.

Teaching & demos

Use RemoteCabinet as a concrete example when teaching networking, protocols, or local-first application design.

Frequently asked questions

Is RemoteCabinet a replacement for mainstream cloud storage?

Not directly. RemoteCabinet is more like a personal lab tool: it is small, understandable, and focused on local-first workflows. You can use it alongside cloud providers or instead of them, depending on your needs.

Do I need a public IP address?

No. RemoteCabinet works perfectly inside a local network or VPN. If you want to reach it from outside, you can expose the server yourself (for example via SSH tunneling, port forwarding, or a reverse proxy), keeping full control.

Is it secure?

The security model is intentionally transparent: the server runs on your hardware and inside your network. You can combine it with TLS, firewalls, and OS-level permissions. As with any self-hosted service, you should review the code and deployment setup for your environment.

Can I extend it?

Yes. The project is on GitHub, and the code is structured to be hackable. You can add new commands, enhance the protocol, or adapt the client for your own custom workflows.