Skip to content

Getting Started

Requirements

bash
# Install the OTS client
pip install opentimestamps-client   # Python
# or
brew install opentimestamps-client  # macOS

Installation

bash
go install github.com/didvc/simple-ots@latest

Install script (binary download)

bash
curl -fsSL https://raw.githubusercontent.com/didvc/simple-ots/main/install.sh | bash

The 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 | bash

Build 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-ots

Output:

Root hash: 51167fb009b5b460cad1dba23b6872123e18391b143ae7a075ae1c8a0ea05182
Output:    .simple-ots/results/20260626_120000
Files:     23
Leaves:    138
OTS:       .simple-ots/results/20260626_120000/root.hash.ots

Files 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.ots

Config (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 = true

See Configuration for all options, or Config Examples for copy-paste recipes.


Next steps

Released under the Apache License 2.0.