Add CLI feature parity with L1 web UI
New commands: - stats: Show user counts (runs, recipes, effects, media, storage) - effect <cid>: Show effect details with --source option - storage list/add/test/delete: Manage IPFS storage providers - clear-data: Clear all user L1 data (preserves storage config) Enhanced commands: - runs/recipes/effects/cache: Add --offset pagination - cache: Add --type filter (all/image/video/audio) - status: Add --plan, --artifacts, --analysis flags for detailed views Other changes: - All list commands now require auth and use server-side pagination - Updated README with comprehensive CLI documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
365
README.md
365
README.md
@@ -8,170 +8,255 @@ CLI for interacting with the Art DAG L1 rendering server.
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Usage
|
||||
## Configuration
|
||||
|
||||
```bash
|
||||
# Set server URL (default: http://localhost:8100)
|
||||
# Set L1 server URL (default: http://localhost:8100)
|
||||
export ARTDAG_SERVER=http://localhost:8100
|
||||
|
||||
# Or pass with every command
|
||||
./artdag.py --server http://localhost:8100 <command>
|
||||
# Set L2 server URL for auth (default: http://localhost:8200)
|
||||
export ARTDAG_L2=https://artdag.rose-ash.com
|
||||
|
||||
# Or pass with commands
|
||||
./artdag.py --server http://localhost:8100 --l2 https://artdag.rose-ash.com <command>
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
The client authenticates against an L2 server for commands that require login (e.g., `run`, `publish`).
|
||||
Most commands require authentication. Login credentials are stored locally in `~/.artdag/token.json`.
|
||||
|
||||
```bash
|
||||
# Set L2 server URL (default: http://localhost:8200)
|
||||
export ARTDAG_L2=https://artdag.rose-ash.com
|
||||
# Register a new account
|
||||
artdag register <username> [--email user@example.com]
|
||||
|
||||
# Or pass with every command
|
||||
./artdag.py --l2 https://artdag.rose-ash.com <command>
|
||||
# Login
|
||||
artdag login <username>
|
||||
|
||||
# Check current user
|
||||
artdag whoami
|
||||
|
||||
# Logout
|
||||
artdag logout
|
||||
```
|
||||
|
||||
### Login
|
||||
```bash
|
||||
./artdag.py login <username>
|
||||
# You'll be prompted for your password
|
||||
## Commands Reference
|
||||
|
||||
# Or specify password with -p flag (will prompt)
|
||||
./artdag.py login <username> -p
|
||||
```
|
||||
|
||||
### Register
|
||||
```bash
|
||||
./artdag.py register <username>
|
||||
# You'll be prompted to enter and confirm your password
|
||||
|
||||
# Optionally include email
|
||||
./artdag.py register <username> --email user@example.com
|
||||
```
|
||||
|
||||
### Check Current User
|
||||
```bash
|
||||
./artdag.py whoami
|
||||
```
|
||||
|
||||
### Logout
|
||||
```bash
|
||||
./artdag.py logout
|
||||
```
|
||||
|
||||
## Commands
|
||||
|
||||
### Server Info
|
||||
```bash
|
||||
./artdag.py info
|
||||
```
|
||||
|
||||
### List Known Assets
|
||||
```bash
|
||||
./artdag.py assets
|
||||
```
|
||||
|
||||
### Start a Rendering Run
|
||||
```bash
|
||||
# Using asset name
|
||||
./artdag.py run dog cat
|
||||
|
||||
# Using CID
|
||||
./artdag.py run dog Qm33268b6e167deaf018cc538de12dbe562612b33e
|
||||
|
||||
# Wait for completion
|
||||
./artdag.py run dog cat --wait
|
||||
|
||||
# Custom output name
|
||||
./artdag.py run dog cat --name my-dog-video
|
||||
```
|
||||
|
||||
### List Runs
|
||||
```bash
|
||||
./artdag.py runs
|
||||
./artdag.py runs --limit 20
|
||||
```
|
||||
|
||||
### Check Run Status
|
||||
```bash
|
||||
./artdag.py status <run-id>
|
||||
```
|
||||
|
||||
### Delete a Run
|
||||
```bash
|
||||
./artdag.py delete-run <run-id>
|
||||
|
||||
# Skip confirmation
|
||||
./artdag.py delete-run <run-id> -f
|
||||
```
|
||||
|
||||
### List Cached Content
|
||||
```bash
|
||||
./artdag.py cache
|
||||
```
|
||||
|
||||
### View/Download Cached Content
|
||||
```bash
|
||||
# Show info
|
||||
./artdag.py view <cid>
|
||||
|
||||
# Download to file
|
||||
./artdag.py view <cid> -o output.mkv
|
||||
|
||||
# Pipe to mpv (use -o - for stdout)
|
||||
./artdag.py view <cid> -o - | mpv -
|
||||
```
|
||||
|
||||
### Import Local File to Cache
|
||||
```bash
|
||||
./artdag.py import /path/to/file.jpg
|
||||
```
|
||||
|
||||
### Delete Cached Content
|
||||
```bash
|
||||
./artdag.py delete-cache <cid>
|
||||
|
||||
# Skip confirmation
|
||||
./artdag.py delete-cache <cid> -f
|
||||
```
|
||||
|
||||
Note: Items that are inputs/outputs of runs, or published to L2, cannot be deleted.
|
||||
|
||||
### Config Commands
|
||||
|
||||
Configs are reusable DAG definitions with fixed and variable inputs.
|
||||
### Server & Stats
|
||||
|
||||
```bash
|
||||
# Upload a config YAML file
|
||||
./artdag.py upload-config recipe.yaml
|
||||
# Show server info
|
||||
artdag info
|
||||
|
||||
# List configs
|
||||
./artdag.py configs
|
||||
# Show user stats (counts of runs, recipes, effects, media, storage)
|
||||
artdag stats
|
||||
|
||||
# View config details
|
||||
./artdag.py config <config-id>
|
||||
|
||||
# Run a config with variable inputs
|
||||
./artdag.py run-config <config-id> -i node_id:cid --wait
|
||||
|
||||
# Delete a config
|
||||
./artdag.py delete-config <config-id>
|
||||
# List known named assets
|
||||
artdag assets
|
||||
```
|
||||
|
||||
## Example Workflow
|
||||
### Runs
|
||||
|
||||
```bash
|
||||
# Check server
|
||||
./artdag.py info
|
||||
# List runs (with pagination)
|
||||
artdag runs [--limit N] [--offset N]
|
||||
|
||||
# See available assets
|
||||
./artdag.py assets
|
||||
# Start a run
|
||||
artdag run <recipe> <input_cid> [--name output_name] [--wait]
|
||||
|
||||
# Run dog effect on cat, wait for result
|
||||
./artdag.py run dog cat --wait
|
||||
# Get run status
|
||||
artdag status <run_id>
|
||||
|
||||
# List completed runs
|
||||
./artdag.py runs
|
||||
# Get detailed run info
|
||||
artdag status <run_id> --plan # Show execution plan with steps
|
||||
artdag status <run_id> --artifacts # Show output artifacts
|
||||
artdag status <run_id> --analysis # Show audio analysis data
|
||||
|
||||
# Download the output
|
||||
./artdag.py view <output-cid> -o result.mkv
|
||||
# Delete a run
|
||||
artdag delete-run <run_id> [--force]
|
||||
```
|
||||
|
||||
### Recipes
|
||||
|
||||
```bash
|
||||
# List recipes (with pagination)
|
||||
artdag recipes [--limit N] [--offset N]
|
||||
|
||||
# Show recipe details
|
||||
artdag recipe <recipe_id>
|
||||
|
||||
# Upload a recipe (YAML or S-expression)
|
||||
artdag upload-recipe <filepath>
|
||||
|
||||
# Run a recipe with inputs
|
||||
artdag run-recipe <recipe_id> -i node_id:cid [--wait]
|
||||
|
||||
# Delete a recipe
|
||||
artdag delete-recipe <recipe_id> [--force]
|
||||
```
|
||||
|
||||
### Effects
|
||||
|
||||
```bash
|
||||
# List effects (with pagination)
|
||||
artdag effects [--limit N] [--offset N]
|
||||
|
||||
# Show effect details
|
||||
artdag effect <cid>
|
||||
|
||||
# Show effect with source code
|
||||
artdag effect <cid> --source
|
||||
|
||||
# Upload an effect (.py file)
|
||||
artdag upload-effect <filepath>
|
||||
```
|
||||
|
||||
### Media / Cache
|
||||
|
||||
```bash
|
||||
# List cached content (with pagination and type filter)
|
||||
artdag cache [--limit N] [--offset N] [--type all|image|video|audio]
|
||||
|
||||
# View/download cached content
|
||||
artdag view <cid> # Show info
|
||||
artdag view <cid> -o output.mp4 # Download to file
|
||||
artdag view <cid> -o - | mpv - # Pipe to player
|
||||
|
||||
# Upload file to cache and IPFS
|
||||
artdag upload <filepath>
|
||||
|
||||
# Import local file to cache (local server only)
|
||||
artdag import <filepath>
|
||||
|
||||
# View/update metadata
|
||||
artdag meta <cid> # View metadata
|
||||
artdag meta <cid> -d "Description" # Set description
|
||||
artdag meta <cid> -t "tag1,tag2" # Set tags
|
||||
artdag meta <cid> --publish "my-video" # Publish to L2
|
||||
|
||||
# Delete cached content
|
||||
artdag delete-cache <cid> [--force]
|
||||
```
|
||||
|
||||
### Storage Providers
|
||||
|
||||
```bash
|
||||
# List storage providers
|
||||
artdag storage list
|
||||
|
||||
# Add a provider (interactive)
|
||||
artdag storage add <type> [--name friendly_name] [--capacity GB]
|
||||
# Types: pinata, web3storage, nftstorage, infura, filebase, storj, local
|
||||
|
||||
# Test provider connectivity
|
||||
artdag storage test <id>
|
||||
|
||||
# Delete a provider
|
||||
artdag storage delete <id> [--force]
|
||||
```
|
||||
|
||||
### Folders & Collections
|
||||
|
||||
```bash
|
||||
# Folders
|
||||
artdag folder list
|
||||
artdag folder create <path>
|
||||
artdag folder delete <path>
|
||||
|
||||
# Collections
|
||||
artdag collection list
|
||||
artdag collection create <name>
|
||||
artdag collection delete <name>
|
||||
```
|
||||
|
||||
### v2 API (3-Phase Execution)
|
||||
|
||||
```bash
|
||||
# Generate execution plan
|
||||
artdag plan <recipe_file> -i name:cid [--features beats,energy] [--output plan.json]
|
||||
|
||||
# Execute a plan
|
||||
artdag execute-plan <plan_file> [--wait]
|
||||
|
||||
# Run recipe (plan + execute in one step)
|
||||
artdag run-v2 <recipe_file> -i name:cid [--wait]
|
||||
|
||||
# Check v2 run status
|
||||
artdag run-status <run_id>
|
||||
```
|
||||
|
||||
### Publishing to L2
|
||||
|
||||
```bash
|
||||
# Publish a run output to L2
|
||||
artdag publish <run_id> <output_name>
|
||||
```
|
||||
|
||||
### Data Management
|
||||
|
||||
```bash
|
||||
# Clear all user data (preserves storage configs)
|
||||
artdag clear-data [--force]
|
||||
```
|
||||
|
||||
## Example Workflows
|
||||
|
||||
### Basic Rendering
|
||||
|
||||
```bash
|
||||
# Login
|
||||
artdag login myuser
|
||||
|
||||
# Check available assets
|
||||
artdag assets
|
||||
|
||||
# Run an effect on an input
|
||||
artdag run dog cat --wait
|
||||
|
||||
# View runs
|
||||
artdag runs
|
||||
|
||||
# Download result
|
||||
artdag view <output_cid> -o result.mp4
|
||||
```
|
||||
|
||||
### Recipe-Based Processing
|
||||
|
||||
```bash
|
||||
# Upload a recipe
|
||||
artdag upload-recipe my-recipe.yaml
|
||||
|
||||
# View recipes
|
||||
artdag recipes
|
||||
|
||||
# Run with inputs
|
||||
artdag run-recipe <recipe_id> -i video:bafkrei... --wait
|
||||
|
||||
# View run plan
|
||||
artdag status <run_id> --plan
|
||||
```
|
||||
|
||||
### Managing Storage
|
||||
|
||||
```bash
|
||||
# Add Pinata storage
|
||||
artdag storage add pinata --name "My Pinata"
|
||||
|
||||
# Test connection
|
||||
artdag storage test 1
|
||||
|
||||
# View all providers
|
||||
artdag storage list
|
||||
```
|
||||
|
||||
### Browsing Media
|
||||
|
||||
```bash
|
||||
# List all media
|
||||
artdag cache
|
||||
|
||||
# Filter by type
|
||||
artdag cache --type video --limit 20
|
||||
|
||||
# View with pagination
|
||||
artdag cache --offset 20 --limit 20
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user