No description
Find a file
Otto b4e2eb3c12 Remove Node.js hooks, require ots CLI only
- Delete hooks/post-commit-node (local proofs only, no attestation)
- Delete hooks/pre-commit-node (no upgrade support)
- Update hooks/install.sh to require ots CLI (no fallback)
- Update documentation with clear ots CLI requirement
- Add prominent warnings about Node.js limitations

Rationale: The @opentimestamps/ots Node.js package only creates
local proofs without calendar submission or Bitcoin attestation.
For tamper-evident timestamps, ots CLI is the only complete
implementation. No partial/fallback implementations.
2026-03-08 00:50:32 +01:00
hooks Remove Node.js hooks, require ots CLI only 2026-03-08 00:50:32 +01:00
.gitignore Initial commit: Git OpenTimestamp hooks skill 2026-03-08 00:12:45 +01:00
AGENTS.md Remove Node.js hooks, require ots CLI only 2026-03-08 00:50:32 +01:00
README.md Remove Node.js hooks, require ots CLI only 2026-03-08 00:50:32 +01:00
SKILL.md Remove Node.js hooks, require ots CLI only 2026-03-08 00:50:32 +01:00

Git OpenTimestamp Hook

Automatically generate OpenTimestamp proofs for git commits with full Bitcoin attestation.

⚠️ Requirements

Required: opentimestamps-client (ots CLI)

pipx install opentimestamps-client

Note: The Node.js @opentimestamps/ots package is not supported - it only creates local proofs without calendar submission or Bitcoin attestation. For tamper-evident timestamps, you must use the Python opentimestamps-client.

Quick Install

# Clone this repository
git clone <repository-url>
cd git-ots-hook

# Install hooks (requires ots CLI)
./hooks/install.sh /path/to/your/repo

# Commit the proofs
cd /path/to/your/repo
git add .ots/
git commit -m "Add OpenTimestamp proofs"

That's it! Every commit will now be timestamped and anchored to Bitcoin.

Manual Installation

# Copy hooks
cp hooks/post-commit-ots .git/hooks/post-commit
cp hooks/pre-commit-ots .git/hooks/pre-commit
chmod +x .git/hooks/post-commit .git/hooks/pre-commit

# Setup .gitignore
echo ".ots/.attestation-cache" >> .gitignore

What You Get

  • Automatic timestamping - Every commit gets a cryptographic proof
  • Bitcoin attestation - Proofs anchored to Bitcoin blockchain (~10 min)
  • Full history - Backfill hook upgrades all historical commits
  • Smart caching - Minimal network overhead after initial setup
  • Tamper-evident - Anyone can verify your commit history

Generated Files

repo/
├── .ots/
│   ├── <commit-hash>.ots   # Individual proof (commit this)
│   ├── proof.ots           # Latest proof (commit this)
│   ├── prev-commit.txt     # Chain link (commit this)
│   ├── commit-chain.txt    # Full chain (commit this)
│   └── .attestation-cache  # Local cache (ignore this)
└── ...

Verification

Check a proof:

ots info .ots/<commit-hash>.ots

Verify attestation:

ots verify .ots/<commit-hash>.ots

Upgrade pending proofs:

ots upgrade .ots/<commit-hash>.ots

How It Works

  1. You make a git commit
  2. Post-commit hook extracts commit hash
  3. Hash submitted to 4+ remote calendar servers
  4. Calendars aggregate and anchor to Bitcoin
  5. After ~10 min: proof becomes Bitcoin-attested
  6. Pre-commit hook upgrades old proofs before new commits

Performance

  • First backfill: 30-60s (full history scan)
  • Normal commits: 10-15s (cached, minimal network)
  • Attestation: ~10 min (Bitcoin block time)

Uninstall

rm .git/hooks/post-commit .git/hooks/pre-commit

License

MIT