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.
- π Documentation
- π Issue Tracker
- π¬ Discussions