gilesb e642ffe301 Fix auth to use form data instead of JSON
L2 server now uses HTML form endpoints for login/register.
Updated client to:
- Send form data instead of JSON
- Extract token from cookie response
- Decode JWT to get username and expiry
- Handle HTML success/error responses

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 15:36:59 +00:00
2026-01-07 11:04:49 +00:00
2026-01-08 03:20:10 +00:00
2026-01-08 03:18:17 +00:00

Art DAG Client

CLI for interacting with the Art DAG L1 rendering server.

Setup

pip install -r requirements.txt

Usage

# Set server URL (default: http://localhost:8100)
export ARTDAG_SERVER=http://localhost:8100

# Or pass with every command
./artdag.py --server http://localhost:8100 <command>

Authentication

The client authenticates against an L2 server for commands that require login (e.g., run, publish).

# Set L2 server URL (default: http://localhost:8200)
export ARTDAG_L2=https://artdag.rose-ash.com

# Or pass with every command
./artdag.py --l2 https://artdag.rose-ash.com <command>

Login

./artdag.py login <username>
# You'll be prompted for your password

# Or specify password with -p flag (will prompt)
./artdag.py login <username> -p

Register

./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

./artdag.py whoami

Logout

./artdag.py logout

Commands

Server Info

./artdag.py info

List Known Assets

./artdag.py assets

Start a Rendering Run

# Using asset name
./artdag.py run dog cat

# Using content hash
./artdag.py run dog 33268b6e167deaf018cc538de12dbe562612b33e89a749391cef855b320a269b

# Wait for completion
./artdag.py run dog cat --wait

# Custom output name
./artdag.py run dog cat --name my-dog-video

List Runs

./artdag.py runs
./artdag.py runs --limit 20

Check Run Status

./artdag.py status <run-id>

Delete a Run

./artdag.py delete-run <run-id>

# Skip confirmation
./artdag.py delete-run <run-id> -f

List Cached Content

./artdag.py cache

View/Download Cached Content

# Show info
./artdag.py view <content-hash>

# Download to file
./artdag.py view <content-hash> -o output.mkv

# Pipe to mpv (use -o - for stdout)
./artdag.py view <content-hash> -o - | mpv -

Import Local File to Cache

./artdag.py import /path/to/file.jpg

Delete Cached Content

./artdag.py delete-cache <content-hash>

# Skip confirmation
./artdag.py delete-cache <content-hash> -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.

# Upload a config YAML file
./artdag.py upload-config recipe.yaml

# List configs
./artdag.py configs

# View config details
./artdag.py config <config-id>

# Run a config with variable inputs
./artdag.py run-config <config-id> -i node_id:content_hash --wait

# Delete a config
./artdag.py delete-config <config-id>

Example Workflow

# Check server
./artdag.py info

# See available assets
./artdag.py assets

# Run dog effect on cat, wait for result
./artdag.py run dog cat --wait

# List completed runs
./artdag.py runs

# Download the output
./artdag.py view <output-hash> -o result.mkv
Description
No description provided
Readme 366 KiB
Languages
Python 97.8%
Common Lisp 2.2%