Getting Started
Requirements
- Go 1.22+ (for building from source)
- OpenTimestamps client for stamping (optional with
--no-ots)
bash
# Install the OTS client
pip install opentimestamps-client # Python
# or
brew install opentimestamps-client # macOSInstallation
Via go install (recommended)
bash
go install github.com/didvc/simple-ots@latestInstall script (binary download)
bash
curl -fsSL https://raw.githubusercontent.com/didvc/simple-ots/main/install.sh | bashThe script installs the binary to /usr/local/bin and the man page to /usr/local/share/man/man1. Override with environment variables:
bash
INSTALL_DIR=~/.local/bin MAN_DIR=~/.local/share/man/man1 \
curl -fsSL .../install.sh | bashBuild from source
bash
git clone https://github.com/didvc/simple-ots
cd simple-ots
go build -o simple-ots .First run
Go to your project directory and run:
bash
git ls-files | simple-otsOutput:
Root hash: 51167fb009b5b460cad1dba23b6872123e18391b143ae7a075ae1c8a0ea05182
Output: .simple-ots/results/20260626_120000
Files: 23
Leaves: 138
OTS: .simple-ots/results/20260626_120000/root.hash.otsFiles written:
.simple-ots/
└── results/
└── 20260626_120000/
├── manifest.jsonl ← one leaf per (file × path-variant × DID)
├── root.hash ← Merkle root (hex SHA-256)
└── root.hash.ots ← OpenTimestamps receipt (pending Bitcoin confirmation)The .ots file is initially a pending receipt. Confirm later (Bitcoin block ~10 min, confirmation ~2 hours):
bash
ots upgrade .simple-ots/results/20260626_120000/root.hash.ots
ots verify .simple-ots/results/20260626_120000/root.hash.otsConfig (optional)
Create .simple-ots/config.toml to bind DIDs and control which path variants to generate:
toml
# .simple-ots/config.toml
dids = ["did:web:yoursite.com"]
path_variants = ["null", "filename", "relative"]
include_no_did = trueSee Configuration for all options, or Config Examples for copy-paste recipes.
Next steps
- CLI Usage & Flags — all flags, pipe patterns, examples
- How It Works — Merkle tree, selective disclosure, OTS
- Configuration — full config.toml reference