Decentralized video archival with AI-powered analysis and blockchain verification.
- 📹 Video Archival: Archive videos from YouTube, local files, and more
- 🔐 Encryption: Lit Protocol access-controlled encryption
- 🗄️ Decentralized Storage: Filecoin/IPFS via Synapse
- 🤖 AI Analysis: VLM-powered timestamp and tag generation
- ⛓️ Blockchain Sync: Arkiv on-chain metadata records
- 🔌 Plugin System: Extensible archiver plugins
- ⏰ Scheduling: Cron-based automated archival
pip install haven-clihaven config inithaven upload video.mp4haven run# Start the Terminal User Interface for real-time monitoring
haven-tuihaven-cli now uses the Haven Cross-Application Data Format, ensuring full compatibility with:
- haven-player (Gold Standard)
- haven-dapp
When working with Arkiv entities created by haven-cli:
Payload Fields (Private):
filecoin_root_cid- The Filecoin CID for video contentis_encrypted- Boolean indicating encryption statuscid_hash- SHA256 hash of the CIDvlm_json_cid- CID of VLM analysis JSONlit_encryption_metadata- JSON string of Lit encryption metadatasegment_metadata- Multi-segment recording info
Attributes Fields (Public):
title- Video titleis_encrypted- Integer 0 or 1cid_hash- SHA256 hash of CIDcreated_at- ISO8601 timestampupdated_at- ISO8601 timestampcreator_handle- Content creatormint_id- NFT mint identifieranalysis_model- VLM model used
For detailed format documentation, see Arkiv Data Format and Migration Notes.
- User Guide - Comprehensive guide to using Haven CLI
- Configuration - Configuration options and environment variables
- Plugins - Plugin system documentation
- API Reference - Python API documentation
- CLI Reference - Command-line reference
- Arkiv Data Format - Data format specification
- Migration Notes - Format migration guide
- Troubleshooting - Common issues and solutions
- TUI User Guide - Complete guide to the Terminal User Interface
- Keyboard Shortcuts - Reference for all keyboard shortcuts
- TUI Architecture - Technical architecture documentation
- TUI Troubleshooting - TUI-specific troubleshooting
- TUI FAQ - Frequently asked questions about the TUI
- Python 3.11+
- FFmpeg (for video processing)
- Deno 1.40+ (for JS runtime)
- yt-dlp (for YouTube plugin)
pip install haven-cligit clone https://github.com/haven/haven-cli
cd haven-cli
pip install -e .git clone https://github.com/haven/haven-cli
cd haven-cli
pip install -e ".[dev]"| Command | Description |
|---|---|
haven config init |
Initialize configuration |
haven config show |
Show current configuration |
haven upload <file> |
Upload a video file |
haven download <cid> |
Download a file by CID |
haven jobs list |
List scheduled jobs |
haven jobs create --plugin <name> --schedule <cron> |
Create a scheduled job |
haven plugins list |
List available plugins |
haven plugins enable <name> |
Enable a plugin |
haven plugins test <name> |
Test a plugin |
haven run |
Start the daemon |
haven run status |
Check daemon status |
haven run stop |
Stop the daemon |
The Haven pipeline processes videos through these steps:
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌────────┐ ┌──────┐
│ Ingest │──▶│ Analyze │──▶│ Encrypt │──▶│ Upload │──▶│ Sync │
└─────────┘ └─────────┘ └─────────┘ └────────┘ └──────┘
- Ingest: Extract metadata, calculate pHash, check duplicates
- Analyze: Run VLM to generate timestamps and tags (optional)
- Encrypt: Encrypt with Lit Protocol (optional)
- Upload: Store on Filecoin via Synapse (optional)
- Sync: Record metadata on Arkiv blockchain (optional)
Configuration is stored in ~/.config/haven/config.toml:
[pipeline]
vlm_enabled = true
encryption_enabled = true
upload_enabled = true
sync_enabled = true
[scheduler]
enabled = true
[js_runtime]
runtime = "deno"See Configuration Reference for all options.
All configuration can be overridden via environment variables:
export HAVEN_VLM_ENABLED=true
export HAVEN_SYNAPSE_API_KEY=your-key
export HAVEN_LOG_LEVEL=DEBUG# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Type checking
mypy haven_cli
# Linting
ruff check haven_cli
# Format code
ruff format haven_cli┌─────────────────────────────────────────────────────────────┐
│ HAVEN CLI │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Upload │ │ Download │ │ Job Scheduler │ │
│ │ Command │ │ Command │ │ (Cron-based) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────────┬──────────┘ │
│ │ │ │ │
│ └────────────────┴────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Pipeline Engine │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌────────┐ │ │
│ │ │ Ingest │→│ Analyze │→│ Encrypt │→│ Upload │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ └────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────┼────────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Plugin │ │ Lit/ │ │ Synapse/ │ │
│ │ System │ │ Arkiv │ │ Filecoin │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
MIT
Contributions are welcome! Please see our Contributing Guide for details.