Skip to content

Documentation

Introduction

DCTL moves and backs up data across cloud providers the way rclone does, with every byte encrypted client-side and nothing reported stored until it is provably stored.

DCTL is a command-line tool for copying, syncing, backing up and streaming data across storage providers. If you have used rclone, the vocabulary will be familiar — copy, sync, cat, mount, REMOTE:PATH addressing, the same filter rules. That similarity is deliberate.

What is different is the contract underneath.

The one promise#

A run that says a file is stored is telling the truth.

Most transfer tools report success when the last byte leaves the machine. DCTL reports success when the bytes have been read back and checksum-verified at the destination, and the local index has durably committed that fact. A mismatch hard-aborts the run, deletes the staged object, and commits nothing.

There are no half-stored files, and no false copied lines in the log.

What follows from that#

Everything else in the design is downstream of the promise above, plus one assumption: that you are storing things you cannot afford to lose, for longer than any particular tool or provider will exist.

  • Encryption is client-side and optional. A remote is either plain or a vault. Through a vault, both file contents and path names are encrypted before anything leaves the machine. The verified-write contract applies identically to both.
  • Memory is bounded, whatever the file size. Chunked AEAD and constant-memory multipart mean a 50 GB video never has to fit in RAM, and seeking into it uses chunk-aware HTTP range requests.
  • The backend is authoritative. A fresh machine with only the password can rebuild the entire path map from the provider and restore byte-exact. There is no index backup to lose.
  • The format outlives the tool. On-disk identifiers are brand-neutral and design-frozen, and a dependency-free C99 reference decoder proves a vault written today can be read with no Rust, no DCTL and no network.

Where to start#

A note on maturity#

DCTL is pre-1.0, and this documentation says so wherever it is relevant rather than letting you find out later.

The cryptographic core, the frozen on-disk format, the encrypted index and the local filesystem backend are complete and exercised. The B2, S3 and R2 backends are implemented but have not yet been verified end to end against live providers. The CLI is mid-flight: the happy path is smoke-tested, some verbs are partial.

Keep independent copies of anything irreplaceable. That is good advice with any tool, and honest advice with this one.

Licence, briefly#

DCTL is source-available under two standard PolyForm licences:

  • PolyForm Small Business 1.0.0 — free and permanent for any company with fewer than 100 people and under 1,000,000 USD (2019, inflation-adjusted) revenue in the prior tax year. Commercial use is included. Individuals, freelancers and small studios are comfortably inside this.
  • PolyForm Free Trial 1.0.0 — for larger organisations: evaluate for under 32 consecutive days, then take a commercial licence.

Both let you modify the source; the Small Business License also lets you redistribute your changes.

Source-available is not open source

PolyForm licences are not OSI-approved, because they restrict who may use the software. If your organisation only permits OSI-approved licences, DCTL will not satisfy that policy without a commercial agreement. Better to know now.

The full texts are here: Small Business and Free Trial. Plain-English detail on the licence page.

Credit where it is due#

DCTL's architecture, addressing rules and feature set were heavily inspired by the excellent work of the Rclone project. DCTL is an independent implementation written from scratch in Rust, and is not affiliated with or endorsed by Rclone. If you want a mature tool with seventy backends today, use rclone — it is very good.