commit 81a89148b3ef3feb1b1289f505678bfcc1754db3 Author: wehub-resource-sync Date: Mon Jul 13 12:36:12 2026 +0800 chore: import upstream snapshot with attribution diff --git a/ClaudeCode_CheatSheet.html b/ClaudeCode_CheatSheet.html new file mode 100644 index 0000000..f836179 --- /dev/null +++ b/ClaudeCode_CheatSheet.html @@ -0,0 +1,564 @@ + + + + + +Claude Code Cheatsheet + + + + +
+ +
+
▸ Official Reference · v2.1.71
+

Claude Code Cheatsheet

+

Every command you need — sourced directly from the official docs

+
+
+ +
+ + +
+
+
+
Install & Authentication
+
+
+
+ curl -fsSL https://claude.ai/install.sh | bash + Install Claude Code (native binary, recommended) +
+
+ source ~/.bashrc + Reload shell after install +
+
+ claude --version + Verify installation +
+
+ claude auth login + Sign in to your Anthropic account +
+
+ claude auth logout + Log out from your account +
+
+ claude auth status + Show authentication status +
+
+ claude update + Update to latest version +
+
+
+ + +
+
+
+
CLI Commands
+
+
+
+ claude + Start interactive session in current directory +
+
+ claude "explain this project" + Start session with an initial prompt +
+
+ claude -p "your task" + Run one-off query then exit (non-interactive) +
+
+ cat file.txt | claude -p "explain" + Process piped content +
+
+ claude -c + Continue most recent conversation +
+
+ claude --model sonnet + Start with a specific model +
+
+ claude --debug + Start with debug logging enabled +
+
+
+ + +
+
+
+
Slash Commands (Inside Session)
+
+
+
+ /help + Show help and all available commands +
+
+ /clear + Clear conversation history and free context. Aliases: /reset, /new +
+
+ /compact [instructions] + Compress conversation with optional focus instructions +
+
+ /cost + Show token usage statistics for current session +
+
+ /context + Visualize context window usage as a colored grid +
+
+ /model [model] + Select or switch AI model mid-session +
+
+ /status + Show version, model, account and connectivity +
+
+ /init + Initialize project with CLAUDE.md guide +
+
+ /doctor + Diagnose and verify installation and settings +
+
+ /memory + Edit CLAUDE.md memory files and auto-memory +
+
+ /permissions + View or update tool permissions +
+
+ /feedback + Submit feedback or report a bug. Alias: /bug +
+
+ /exit + Exit Claude Code. Alias: /quit +
+
+
+ + +
+
+
🧠
+
Model Selection
+
+
+
+ /model + Open interactive model picker +
+
+ /model haiku + Claude Haiku — fastest & cheapest, simple tasks +
+
+ /model sonnet recommended + Claude Sonnet — best balance of speed and quality +
+
+ /model opus + Claude Opus — most powerful, complex reasoning +
+ +
+ Alt+P (Option+P on macOS) + Switch model without clearing your current prompt +
+
+
+ + +
+
+
+
Keyboard Shortcuts
+
+
+
+ Ctrl+C + Cancel current input or generation +
+
+ Ctrl+D + Exit Claude Code session +
+
+ Ctrl+L + Clear terminal screen (keeps conversation) +
+
+ Ctrl+R + Reverse search through command history +
+
+ Ctrl+G + Open current prompt in your default text editor +
+
+ Shift+Tab + Toggle between Auto-Accept, Plan, and Normal mode +
+
+ Esc + Esc + Rewind conversation to a previous point +
+
+ \ + Enter + Multiline input — works in all terminals +
+
+
+ + +
+
+
🔤
+
Quick Input Prefixes
+
+
+
+ ! npm test + Bash mode — run shell command directly, output added to conversation +
+
+ @ filename + File path mention — triggers file path autocomplete +
+
+ / command + Slash command or skill invocation +
+ +
+ cat logs.txt | claude -p "explain errors" + Pipe any file content directly into Claude +
+
+ git diff main | claude -p "review for security" + Pipe git diff for an instant code review +
+
+
+ + +
+
+
💻
+
Working with Code (Natural Language)
+
+
+
+ Explain what main.py does +
+
+ Add error handling to main.py +
+
+ Write unit tests for the get_users function +
+
+ Find and fix the bug in main.py +
+
+ Refactor this function to use async/await +
+
+ Create a new file called auth.py with JWT login +
+
+ Review all files and summarize the project +
+
+
+ + +
+
+
🔌
+
MCP Servers
+
+
+
+ claude mcp list + Show all configured MCP servers +
+
+ claude mcp add <name> + Add a new MCP server +
+
+ claude mcp remove <name> + Remove an MCP server +
+
+ claude mcp get <name> + Show details of a specific server +
+
+ /mcp + Manage MCP connections and OAuth inside session +
+
+ .mcp.json + Project-level MCP config file — place in project root +
+
+
+ + +
+
+
💡
+
Pro Tips & Best Practices
+
+
+
+ /clear + Use between unrelated tasks — free reset, zero token cost +
+
+ /compact + Use at logical breakpoints — after research or completing a milestone +
+
+ /cost + Check token spend regularly during long sessions +
+
+ /init + Run this first in any new project to auto-generate CLAUDE.md +
+
+ Always run claude from inside your project directory + Claude reads your files automatically for full context +
+
+ Use Sonnet by default, Opus only when needed + Sonnet handles 80% of tasks at significantly lower cost +
+
+ Keep active MCP servers under 10 per project + Too many MCPs reduce your usable context window +
+
+ Use CLAUDE.md to give Claude persistent project context + Add your stack, conventions, and common commands — loaded every session +
+
+
+ +
+ +
+ Claude Code Cheatsheet  ·  claude.ai  ·  official docs at code.claude.com/docs +
+ +
+ + \ No newline at end of file diff --git a/ClawWork.html b/ClawWork.html new file mode 100644 index 0000000..5202bed --- /dev/null +++ b/ClawWork.html @@ -0,0 +1,857 @@ + + + + + +ClawWork — AI Coworker Setup Guide + + + + +
+ + 🦞 CLAWWORK — AI COWORKER BENCHMARK   |   ATIC + QWEN3.5-PLUS: $19,915 IN 8HRS   |   220 REAL PROFESSIONAL TASKS   |   44 ECONOMIC SECTORS   |   STARTS WITH $10   |   SURVIVES ON QUALITY WORK   |   GDPVAL BENCHMARK   |   🦞 CLAWWORK — AI COWORKER BENCHMARK   |   ATIC + QWEN3.5-PLUS: $19,915 IN 8HRS   |   + +
+ +
+ +
+
OpenClaw Ecosystem — ClawWork
+

AI Coworker
Earn or Die.

+

ClawWork turns your AI assistant into an economically accountable coworker. It starts with $10, pays for every token, and earns money by completing real professional tasks. Run out of money and it dies.

+ +
+
+
$19,915
+
Top Earned (8hrs)
+
+
+
220
+
Real Tasks
+
+
+
44
+
Occupations
+
+
+
$10
+
Starting Balance
+
+
+ +
+
44 Occupations — GDPVal Benchmark
+ ClawWork 44 Occupations +
220 real professional tasks spanning 44 economic sectors — Developer, Lawyer, Financial Manager, Nurse, Journalist and more
+
+ + + +
+ +

Read This First.

+ +
+
+
+ Real API Costs Involved +

Every LLM call costs real money deducted from your balance. The evaluator also uses LLM calls. Set conservative token pricing and initial balance limits before running anything at scale.

+

The income figures are simulated economic value based on BLS wage data — not real money deposited anywhere.

+
+
+ +
+
+
01
+
API Costs Can Spiral
+

Both the agent and the GPT-based evaluator consume tokens. Set initialBalance conservatively and monitor token_costs.jsonl closely on first runs.

+
+
+
02
+
Simulated Income Only
+

The $19K figure is simulated economic value, not real revenue. Payment = quality × BLS wage rate. No money changes hands.

+
+
+
03
+
Full Tool Access
+

The agent has web search, file creation, and code execution. Understand what it is doing before running at scale with real API keys.

+
+
+
04
+
Complex Setup
+

Python 3.11, E2B sandbox, OpenAI key for evaluation, React frontend. More moving parts than a typical OpenClaw setup. Budget time for debugging.

+
+
+
+ + +
+ +

The Leaderboard.

+

Real performance across 220 GDPVal tasks. Agents start with $10 and pay for every token. Income comes only from completing quality professional work.

+ +
+
🏆 ClawWork Earnings Leaderboard
+
+
Rank
+
Agent
+
Earned
+
Pay Rate
+
Quality
+
+
+
1
+
ATIC + Qwen3.5-Plus
+
$19,914
+
$2,285/hr
+
61.6%
+
+
+
2
+
Gemini 3.1 Pro Preview
+
$15,757
+
$1,287/hr
+
43.3%
+
+
+
3
+
Qwen3.5-Plus
+
$15,264
+
$1,390/hr
+
41.6%
+
+
+
4
+
GLM-4.7
+
$11,503
+
$877/hr
+
40.6%
+
+
+
5
+
ATIC-DeepSeek
+
$10,870
+
$2,579/hr
+
66.8%
+
+
+
6
+
Qwen3-Max
+
$10,781
+
$1,072/hr
+
37.9%
+
+
+
7
+
Kimi K2.5
+
$10,483
+
$858/hr
+
36.6%
+
+
+
+ + +
+
ClawWork Agent Flow + OpenClaw/Nanobot Integration
+ ClawWork Agent Flow Diagram +
Left: Daily loop — receive task → decide → execute → earn income → persist state. Right: OpenClaw/Nanobot integration with TrackedProvider deducting costs from balance on every LLM call
+
+ + + +
+ +

Standalone Simulation.

+

The fastest way to see ClawWork in action. No OpenClaw required. Watch your agent make decisions, complete tasks, and earn income in real time.

+ +
+
1
+
+

Create Python environment

+
+ Terminal +
conda create -n clawwork python=3.11 -y
+conda activate clawwork
+
+
+
+ +
+
2
+
+

Clone and install dependencies

+
+ Terminal +
git clone https://github.com/HKUDS/ClawWork.git
+cd ClawWork
+pip install -r requirements.txt
+cd frontend && npm install && cd ..
+
+
+
+ +
+
3
+
+

Configure environment variables

+
+ Terminal +
cp .env.example .env
+nano .env
+
+ + + + + + + + + +
VariableRequiredDescription
OPENAI_API_KEYRequiredUsed for agent LLM calls and work evaluation
E2B_API_KEYRequiredCode sandbox execution (default backend)
WEB_SEARCH_API_KEYOptionalTavily or Jina for web search tool
+
+
+ +
+
4
+
+

Start dashboard and run agent

+
+ Terminal 1 — Dashboard +
./start_dashboard.sh
+# Opens at http://localhost:3000
+
+
+ Terminal 2 — Agent +
./run_test_agent.sh
+
+
+
+
+ + +
+ +

ClawMode + OpenClaw Integration.

+

Attach economic tracking to a live OpenClaw instance. Every conversation costs tokens. Your agent can earn income via the /clawwork command from any connected channel.

+ +
+
1
+
+

Create Python 3.11 environment and install nanobot

+
+ Terminal +
conda create -n clawmode python=3.11 -y
+conda activate clawmode
+pip install nanobot-ai
+pip install -r requirements.txt
+nanobot onboard
+
+
+
+ +
+
2
+
+

Configure ~/.nanobot/config.json

+
+ ~/.nanobot/config.json +
{
+  "providers": {
+    "openrouter": {
+      "apiKey": "sk-or-v1-YOUR_KEY"
+    }
+  },
+  "agents": {
+    "defaults": {
+      "model": "openai/gpt-4o"
+    },
+    "clawwork": {
+      "enabled": true,
+      "signature": "my-agent",
+      "initialBalance": 100.0,
+      "tokenPricing": {
+        "inputPrice": 2.50,
+        "outputPrice": 10.00
+      }
+    }
+  }
+}
+
+
+
+ +
+
3
+
+

Install ClawMode skill and set PYTHONPATH

+
+ Terminal +
mkdir -p ~/.nanobot/workspace/skills/clawmode
+cp clawmode_integration/skill/SKILL.md \
+   ~/.nanobot/workspace/skills/clawmode/SKILL.md
+export PYTHONPATH="$(pwd):$PYTHONPATH"
+
+
+
+ +
+
4
+
+

Start the gateway and send a paid task

+
+ Local CLI +
# Interactive chat with economic tracking
+python -m clawmode_integration.cli agent
+
+# Assign a paid task
+python -m clawmode_integration.cli agent \
+  -m "/clawwork Write a market analysis for EVs"
+
+
+ Channel Gateway (Telegram / Discord / Slack) +
python -m clawmode_integration.cli gateway
+
+
+
+
+ + +
+ +

14 Tools Available.

+ +
+
+
decide_activity()
+
ClawWork
+
Choose work or learn each day
+
+
+
submit_work()
+
ClawWork
+
Submit completed task for payment
+
+
+
learn()
+
ClawWork
+
Save knowledge to persistent memory
+
+
+
get_status()
+
ClawWork
+
Check balance and survival tier
+
+
+
search_web()
+
nanobot
+
Tavily or Jina web search
+
+
+
create_file()
+
nanobot
+
Create .txt .xlsx .docx .pdf
+
+
+
execute_code()
+
nanobot
+
Run Python in isolated sandbox
+
+
+
read_file()
+
nanobot
+
Read files from workspace
+
+
+
+ +
+

ClawWork — github.com/HKUDS/ClawWork

+

Built on OpenClaw + Nanobot + GDPVal benchmark

+

Income figures represent simulated economic value based on BLS wage data. Not real revenue.

+
+ +
+ + \ No newline at end of file diff --git a/Clawdbot_Config.txt b/Clawdbot_Config.txt new file mode 100644 index 0000000..48dca7a --- /dev/null +++ b/Clawdbot_Config.txt @@ -0,0 +1,70 @@ +Ubuntu@0138-ict-prxmx50045:~$ cat ~/.clawdbot/clawdbot.json +{ + "messages": { + "ackReactionScope": "group-mentions" + }, + "models": { + "providers": { + "ollama": { + "baseUrl": "http://127.0.0.1:11434/v1", + "apiKey": "ollama-local", + "api": "openai-responses", + "models": [ + { + "id": "glm-4.7-flash:latest", + "name": "GLM-4.7 Flash", + "reasoning": true, + "input": ["text"], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 128000, + "maxTokens": 8192 + } + ] + } + } + }, + "agents": { + "defaults": { + "model": { + "primary": "ollama/glm-4.7-flash:latest" + }, + "maxConcurrent": 4, + "subagents": { + "maxConcurrent": 8 + }, + "compaction": { + "mode": "safeguard" + }, + "workspace": "/home/Ubuntu/clawd" + } + }, + "gateway": { + "mode": "local", + "auth": { + "mode": "token", + "token": "b35761a4ed1f1e01b139aa4ddd4cd7b45bc51631b1483d0f" + }, + "port": 18789, + "bind": "loopback", + "tailscale": { + "mode": "off", + "resetOnExit": false + } + }, + "wizard": { + "lastRunAt": "2026-01-26T02:17:41.790Z", + "lastRunVersion": "2026.1.24-3", + "lastRunCommand": "onboard", + "lastRunMode": "local" + }, + "meta": { + "lastTouchedVersion": "2026.1.24-3", + "lastTouchedAt": "2026-01-26T02:17:41.796Z" + } +} +Ubuntu@0138-ict-prxmx50045:~$ diff --git a/Fine-Tune Qwen3.5 Guide b/Fine-Tune Qwen3.5 Guide new file mode 100644 index 0000000..61c62d9 --- /dev/null +++ b/Fine-Tune Qwen3.5 Guide @@ -0,0 +1,227 @@ + +Prompt to Generate Dataset: + +You are a Turkish culinary expert with deep knowledge of Turkish kebab culture, +history, and cuisine. Your task is to generate a high-quality fine-tuning dataset +for training a small language model to become a Turkish kebab expert. + +Generate 200 question and answer pairs covering Turkish kebabs in the following format: +{"prompt": "question here", "completion": "detailed expert answer here"} + +Each answer must be detailed, accurate, culturally rich and at least 3-5 sentences long. + +Cover the following topics evenly across the 200 pairs: + +KEBAB VARIETIES (cover each in depth): +Adana, Urfa, Shish, Döner, Iskender, Lahmacun, Pide, Beyti, Çöp Şiş, +Testi Kebabı, Tandır, Ali Nazik, Kuyu Kebabı, Cağ Kebabı, Orman Kebabı, +Kaburga, Patlıcan Kebabı, Güveç, Çılbır style kebabs, Ciğer + +TOPICS TO COVER PER VARIETY: +- What it is and how it looks +- Which region of Turkey it originates from +- Exact ingredients and meat type (lamb, beef, chicken, liver) +- Spice profile and marinade details +- Traditional cooking method (mangal, tandır, spit, clay pot) +- How it is traditionally served and with what sides +- Cultural significance and history +- How to identify authentic vs non-authentic versions +- Common variations across different cities +- Pairing with Turkish bread types, mezze, drinks + +ADDITIONAL TOPICS: +- Turkish kebab culture and etiquette +- Difference between kebab styles +- Regional Turkish cuisine differences +- Turkish spices used in kebab cooking +- How to cook each kebab at home +- Common mistakes when making Turkish kebab +- Street food vs restaurant kebab culture in Turkey +- Seasonal kebab traditions +- Vegetarian kebab alternatives in Turkish cuisine +- Turkish kebab vs other Middle Eastern kebab styles + +QUALITY RULES: +- Every answer must sound like a passionate Turkish food expert speaking +- Include Turkish words with English explanations where appropriate +- Include specific city names, regions, history where relevant +- Answers must be factually accurate +- Vary the question styles: some how, some what, some why, + some compare, some historical, some practical cooking advice +- Do not repeat the same question twice +- Output must be valid JSONL — one JSON object per line +- No preamble, no explanation, just raw JSONL output + +Start generating now. + +============================================== + +Action Plan for Fine-Tuning: + +pip install torch torchvision torchaudio --upgrade --pre --index-url https://download.pytorch.org/whl/nightly/cu121 + +# Core dependencies from source +pip install git+https://github.com/huggingface/transformers +pip install git+https://github.com/huggingface/accelerate + +# Unsloth +pip install unsloth unsloth_zoo + +# Other dependencies +pip install huggingface_hub datasets trl peft bitsandbytes + +# Launch Jupyter +jupyter notebook + +Cell 1 — Check GPU +import torch +from I.display import Markdown, display + +display(Markdown("## ⚙️ System Check")) +print(f"PyTorch version: {torch.__version__}") +print(f"CUDA available: {torch.cuda.is_available()}") +if torch.cuda.is_available(): + print(f"GPU: {torch.cuda.get_device_name(0)}") + print(f"VRAM: {torch.cuda.get_device_properties(0).total_memory / 1e9:.1f} GB") + +Cell 2 — Load model with Unsloth +from unsloth import FastLanguageModel + +display(Markdown("## 📦 Loading Qwen3.5-0.8B with Unsloth")) + +model, tokenizer = FastLanguageModel.from_pretrained( + model_name = "Qwen/Qwen3.5-0.8B", + max_seq_length = 2048, + load_in_4bit = False, + load_in_16bit = True, +) + +print("✅ Model loaded successfully") + +Cell 3 — Attach LoRA adapters +display(Markdown("## 🔧 Attaching LoRA Adapters")) + +model = FastLanguageModel.get_peft_model( + model, + r = 16, + target_modules = [ + "q_proj", "k_proj", "v_proj", "o_proj", + "gate_proj", "up_proj", "down_proj", + ], + lora_alpha = 16, + lora_dropout = 0, + bias = "none", + use_gradient_checkpointing = "unsloth", + random_state = 3407, + max_seq_length = 2048, +) + +print("✅ LoRA adapters attached") +print(f"Trainable parameters: {sum(p.numel() for p in model.parameters() if p.requires_grad):,}") + +Cell 4 — Load and preview dataset +from datasets import load_dataset +from I.display import Markdown, display + +display(Markdown("## 📂 Loading Turkish Kebab Dataset")) + +dataset = load_dataset( + "json", + data_files={"train": "/home/Ubuntu/finetune/dataset.jsonl"}, + split="train" +) + +print(f"✅ Dataset loaded: {len(dataset)} records") +print("\n--- Sample record ---") +print(f"Prompt: {dataset[0]['prompt']}") +print(f"Completion: {dataset[0]['completion']}") + +Cell 5 — Format dataset +display(Markdown("## 🔄 Formatting Dataset for Training")) + +def format_example(example): + return { + "text": f"<|im_start|>user\n{example['prompt']}<|im_end|>\n<|im_start|>assistant\n{example['completion']}<|im_end|>" + } + +dataset = dataset.map(format_example) +print("✅ Dataset formatted") +print("\n--- Formatted sample ---") +print(dataset[0]['text']) + +Cell 6 — Train +from trl import SFTTrainer, SFTConfig + +display(Markdown("## 🚀 Starting Fine-tuning")) + +trainer = SFTTrainer( + model = model, + train_dataset = dataset, + tokenizer = tokenizer, + args = SFTConfig( + dataset_text_field = "text", + max_seq_length = 2048, + per_device_train_batch_size = 2, + gradient_accumulation_steps = 4, + warmup_steps = 10, + num_train_epochs = 3, + logging_steps = 5, + output_dir = "/home/Ubuntu/finetune/outputs", + optim = "adamw_8bit", + seed = 3407, + dataset_num_proc = 2, + fp16 = not torch.cuda.is_bf16_supported(), + bf16 = torch.cuda.is_bf16_supported(), + ), +) + +trainer_stats = trainer.train() +print(f"✅ Training complete!") +print(f"Training time: {trainer_stats.metrics['train_runtime']:.0f} seconds") +print(f"Final loss: {trainer_stats.metrics['train_loss']:.4f}") + +Cell 7 — Test base model first (before saving) +display(Markdown("## 🧪 Testing: Base Model vs Fine-tuned Model")) + +FastLanguageModel.for_inference(model) + +def ask(question): + messages = [{"role": "user", "content": question}] + inputs = tokenizer.apply_chat_template( + messages, + tokenize=True, + add_generation_prompt=True, + return_tensors="pt" + ).to("cuda") + + outputs = model.generate( + input_ids=inputs, + max_new_tokens=512, + temperature=0.7, + top_p=0.8, + do_sample=True, + ) + response = tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True) + return response + +question = "What makes Adana kebab different from Urfa kebab?" +print(f"Question: {question}\n") +print(f"Answer: {ask(question)}") + +Cell 8 — Save the model +display(Markdown("## 💾 Saving Fine-tuned Model")) + +# Save LoRA adapters only +model.save_pretrained("/home/Ubuntu/finetune/qwen35_kebab_lora") +tokenizer.save_pretrained("/home/Ubuntu/finetune/qwen35_kebab_lora") + +# Also save merged 16bit for vLLM +model.save_pretrained_merged( + "/home/Ubuntu/finetune/qwen35_kebab_merged", + tokenizer, + save_method="merged_16bit" +) + +print("✅ Model saved!") +print("LoRA adapters: /home/Ubuntu/finetune/qwen35_kebab_lora") +print("Merged model: /home/Ubuntu/finetune/qwen35_kebab_merged") \ No newline at end of file diff --git a/Flux-Lora-Workflow.json b/Flux-Lora-Workflow.json new file mode 100644 index 0000000..c949bb2 --- /dev/null +++ b/Flux-Lora-Workflow.json @@ -0,0 +1,648 @@ +{ + "last_node_id": 26, + "last_link_id": 44, + "nodes": [ + { + "id": 5, + "type": "EmptyLatentImage", + "pos": { + "0": 411, + "1": 238 + }, + "size": { + "0": 315, + "1": 106 + }, + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 23 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [ + 1024, + 1024, + 1 + ] + }, + { + "id": 13, + "type": "SamplerCustomAdvanced", + "pos": { + "0": 403, + "1": 391 + }, + "size": { + "0": 355.20001220703125, + "1": 106 + }, + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "noise", + "type": "NOISE", + "link": 37, + "slot_index": 0 + }, + { + "name": "guider", + "type": "GUIDER", + "link": 30, + "slot_index": 1 + }, + { + "name": "sampler", + "type": "SAMPLER", + "link": 19, + "slot_index": 2 + }, + { + "name": "sigmas", + "type": "SIGMAS", + "link": 20, + "slot_index": 3 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 23, + "slot_index": 4 + } + ], + "outputs": [ + { + "name": "output", + "type": "LATENT", + "links": [ + 24 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "denoised_output", + "type": "LATENT", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "SamplerCustomAdvanced" + }, + "widgets_values": [] + }, + { + "id": 8, + "type": "VAEDecode", + "pos": { + "0": 401, + "1": 546 + }, + "size": { + "0": 210, + "1": 46 + }, + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 24 + }, + { + "name": "vae", + "type": "VAE", + "link": 12 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 9 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 22, + "type": "BasicGuider", + "pos": { + "0": 769, + "1": 524 + }, + "size": { + "0": 241.79998779296875, + "1": 46 + }, + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 43, + "slot_index": 0 + }, + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 40, + "slot_index": 1 + } + ], + "outputs": [ + { + "name": "GUIDER", + "type": "GUIDER", + "links": [ + 30 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "BasicGuider" + }, + "widgets_values": [] + }, + { + "id": 9, + "type": "SaveImage", + "pos": { + "0": 1193, + "1": 115 + }, + "size": [ + 583, + 594 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 9 + } + ], + "outputs": [], + "properties": {}, + "widgets_values": [ + "ComfyUI" + ] + }, + { + "id": 12, + "type": "UNETLoader", + "pos": { + "0": 73, + "1": 326 + }, + "size": { + "0": 315, + "1": 82 + }, + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 38, + 42 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "UNETLoader" + }, + "widgets_values": [ + "flux1-dev.safetensors", + "default" + ] + }, + { + "id": 11, + "type": "DualCLIPLoader", + "pos": { + "0": 71, + "1": 467 + }, + "size": { + "0": 315, + "1": 106 + }, + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 41 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "DualCLIPLoader" + }, + "widgets_values": [ + "t5xxl_fp8_e4m3fn.safetensors", + "clip_l.safetensors", + "flux" + ] + }, + { + "id": 10, + "type": "VAELoader", + "pos": { + "0": 74, + "1": 617 + }, + "size": { + "0": 315, + "1": 58 + }, + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 12 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "ae.safetensors" + ] + }, + { + "id": 26, + "type": "LoraLoader", + "pos": { + "0": 780, + "1": 314 + }, + "size": { + "0": 315, + "1": 126 + }, + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 42 + }, + { + "name": "clip", + "type": "CLIP", + "link": 41 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 43 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 44 + ], + "slot_index": 1, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "LoraLoader" + }, + "widgets_values": [ + "outfit-generator.safetensors", + 1, + 1 + ] + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": { + "0": 749, + "1": 101 + }, + "size": { + "0": 422.84503173828125, + "1": 164.31304931640625 + }, + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 44 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 40 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "A dress with Color: Multicolored, Department: Dresses, Detail: Split, Fabric-Elasticity: High Stretch, Fit: Fitted, Hemline: Slit, Material: Gabardine, Neckline: V Neck, Pattern: Leopard, Sleeve-Length: Sleeveless, Style: Casual, Type: T Shirt, Waistline: Regular" + ] + }, + { + "id": 16, + "type": "KSamplerSelect", + "pos": { + "0": 62, + "1": 89 + }, + "size": { + "0": 315, + "1": 58 + }, + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 19 + ], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler_ancestral" + ] + }, + { + "id": 17, + "type": "BasicScheduler", + "pos": { + "0": 412, + "1": 92 + }, + "size": { + "0": 315, + "1": 106 + }, + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 38, + "slot_index": 0 + } + ], + "outputs": [ + { + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 20 + ], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "BasicScheduler" + }, + "widgets_values": [ + "simple", + 30, + 1 + ] + }, + { + "id": 25, + "type": "RandomNoise", + "pos": { + "0": 68, + "1": 196 + }, + "size": { + "0": 315, + "1": 82 + }, + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "NOISE", + "type": "NOISE", + "links": [ + 37 + ], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "RandomNoise" + }, + "widgets_values": [ + 269484993923664, + "fixed" + ] + } + ], + "links": [ + [ + 9, + 8, + 0, + 9, + 0, + "IMAGE" + ], + [ + 12, + 10, + 0, + 8, + 1, + "VAE" + ], + [ + 19, + 16, + 0, + 13, + 2, + "SAMPLER" + ], + [ + 20, + 17, + 0, + 13, + 3, + "SIGMAS" + ], + [ + 23, + 5, + 0, + 13, + 4, + "LATENT" + ], + [ + 24, + 13, + 0, + 8, + 0, + "LATENT" + ], + [ + 30, + 22, + 0, + 13, + 1, + "GUIDER" + ], + [ + 37, + 25, + 0, + 13, + 0, + "NOISE" + ], + [ + 38, + 12, + 0, + 17, + 0, + "MODEL" + ], + [ + 40, + 6, + 0, + 22, + 1, + "CONDITIONING" + ], + [ + 41, + 11, + 0, + 26, + 1, + "CLIP" + ], + [ + 42, + 12, + 0, + 26, + 0, + "MODEL" + ], + [ + 43, + 26, + 0, + 22, + 0, + "MODEL" + ], + [ + 44, + 26, + 1, + 6, + 0, + "CLIP" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 1, + "offset": [ + -5, + -52 + ] + } + }, + "version": 0.4 +} \ No newline at end of file diff --git a/GLM 5.1 with OpenClaw b/GLM 5.1 with OpenClaw new file mode 100644 index 0000000..c39194e --- /dev/null +++ b/GLM 5.1 with OpenClaw @@ -0,0 +1,278 @@ + + +{ + "wizard": { + "lastRunAt": "2026-03-28T02:16:54.296Z", + "lastRunVersion": "2026.3.24", + "lastRunCommand": "onboard", + "lastRunMode": "local" + }, + "auth": { + "profiles": { + "zai:default": { + "provider": "zai", + "mode": "api_key" + } + } + }, + "models": { + "mode": "merge", + "providers": { + "zai": { + "baseUrl": "https://api.z.ai/api/coding/paas/v4", + "api": "openai-completions", + "models": [ + { + "id": "glm-5.1", + "name": "GLM-5.1", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 204800, + "maxTokens": 131072 + }, + { + "id": "glm-5", + "name": "GLM-5", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 1, + "output": 3.2, + "cacheRead": 0.2, + "cacheWrite": 0 + }, + "contextWindow": 202800, + "maxTokens": 131100 + }, + { + "id": "glm-5-turbo", + "name": "GLM-5 Turbo", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 1.2, + "output": 4, + "cacheRead": 0.24, + "cacheWrite": 0 + }, + "contextWindow": 202800, + "maxTokens": 131100 + }, + { + "id": "glm-4.7", + "name": "GLM-4.7", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.6, + "output": 2.2, + "cacheRead": 0.11, + "cacheWrite": 0 + }, + "contextWindow": 204800, + "maxTokens": 131072 + }, + { + "id": "glm-4.7-flash", + "name": "GLM-4.7 Flash", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.07, + "output": 0.4, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 200000, + "maxTokens": 131072 + }, + { + "id": "glm-4.7-flashx", + "name": "GLM-4.7 FlashX", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.06, + "output": 0.4, + "cacheRead": 0.01, + "cacheWrite": 0 + }, + "contextWindow": 200000, + "maxTokens": 128000 + }, + { + "id": "glm-4.6", + "name": "GLM-4.6", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.6, + "output": 2.2, + "cacheRead": 0.11, + "cacheWrite": 0 + }, + "contextWindow": 204800, + "maxTokens": 131072 + }, + { + "id": "glm-4.6v", + "name": "GLM-4.6V", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 0.3, + "output": 0.9, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 128000, + "maxTokens": 32768 + }, + { + "id": "glm-4.5", + "name": "GLM-4.5", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.6, + "output": 2.2, + "cacheRead": 0.11, + "cacheWrite": 0 + }, + "contextWindow": 131072, + "maxTokens": 98304 + }, + { + "id": "glm-4.5-air", + "name": "GLM-4.5 Air", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.2, + "output": 1.1, + "cacheRead": 0.03, + "cacheWrite": 0 + }, + "contextWindow": 131072, + "maxTokens": 98304 + }, + { + "id": "glm-4.5-flash", + "name": "GLM-4.5 Flash", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 131072, + "maxTokens": 98304 + }, + { + "id": "glm-4.5v", + "name": "GLM-4.5V", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 0.6, + "output": 1.8, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 64000, + "maxTokens": 16384 + } + ] + } + } + }, + "agents": { + "defaults": { + "model": { + "primary": "zai/glm-5.1", + "fallbacks": ["zai/glm-5", "zai/glm-4.7"] + }, + "models": { + "zai/glm-4.7": { + "alias": "GLM" + }, + "zai/glm-5.1": {} + }, + "workspace": "/home/Ubuntu/.openclaw/workspace" + } + }, + "tools": { + "profile": "coding" + }, + "commands": { + "native": "auto", + "nativeSkills": "auto", + "restart": true, + "ownerDisplay": "raw" + }, + "session": { + "dmScope": "per-channel-peer" + }, + "gateway": { + "port": 18789, + "mode": "local", + "bind": "loopback", + "auth": { + "mode": "token", + "token": "" + }, + "tailscale": { + "mode": "off", + "resetOnExit": false + }, + "nodes": { + "denyCommands": [ + "camera.snap", + "camera.clip", + "screen.record", + "contacts.add", + "calendar.add", + "reminders.add", + "sms.send" + ] + } + }, + "meta": { + "lastTouchedVersion": "2026.3.24", + "lastTouchedAt": "2026-03-28T02:16:54.316Z" + } +} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LTX_Video_image_to_video.json b/LTX_Video_image_to_video.json new file mode 100644 index 0000000..b706b61 --- /dev/null +++ b/LTX_Video_image_to_video.json @@ -0,0 +1,719 @@ +{ + "last_node_id": 78, + "last_link_id": 190, + "nodes": [ + { + "id": 38, + "type": "CLIPLoader", + "pos": [ + 60, + 190 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 74, + 75 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPLoader" + }, + "widgets_values": [ + "t5xxl_fp16.safetensors", + "ltxv" + ] + }, + { + "id": 8, + "type": "VAEDecode", + "pos": [ + 1600, + 30 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 171 + }, + { + "name": "vae", + "type": "VAE", + "link": 87 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 106 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 69, + "type": "LTXVConditioning", + "pos": [ + 920, + 60 + ], + "size": [ + 223.8660125732422, + 78 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 183 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 184 + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "links": [ + 166 + ], + "slot_index": 0 + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 167 + ], + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "LTXVConditioning" + }, + "widgets_values": [ + 25 + ] + }, + { + "id": 72, + "type": "SamplerCustom", + "pos": [ + 1201, + 32 + ], + "size": [ + 355.20001220703125, + 230 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 181 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 166 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 167 + }, + { + "name": "sampler", + "type": "SAMPLER", + "link": 172 + }, + { + "name": "sigmas", + "type": "SIGMAS", + "link": 182 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 186 + } + ], + "outputs": [ + { + "name": "output", + "type": "LATENT", + "links": [ + 171 + ], + "slot_index": 0 + }, + { + "name": "denoised_output", + "type": "LATENT", + "links": null + } + ], + "properties": { + "Node name for S&R": "SamplerCustom" + }, + "widgets_values": [ + true, + 501744655390087, + "randomize", + 3 + ] + }, + { + "id": 44, + "type": "CheckpointLoaderSimple", + "pos": [ + 520, + 30 + ], + "size": [ + 315, + 98 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 181 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": null + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 87, + 189 + ], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "ltx-video-2b-v0.9.safetensors" + ] + }, + { + "id": 71, + "type": "LTXVScheduler", + "pos": [ + 856, + 531 + ], + "size": [ + 315, + 154 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "latent", + "type": "LATENT", + "link": 185, + "shape": 7 + } + ], + "outputs": [ + { + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 182 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "LTXVScheduler" + }, + "widgets_values": [ + 30, + 2.05, + 0.95, + true, + 0.1 + ] + }, + { + "id": 7, + "type": "CLIPTextEncode", + "pos": [ + 420, + 390 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 75 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 188 + ], + "slot_index": 0 + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "low quality, worst quality, deformed, distorted, disfigured, motion smear, motion artifacts, fused fingers, bad anatomy, weird hand, ugly" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 73, + "type": "KSamplerSelect", + "pos": [ + 860, + 420 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 172 + ] + } + ], + "properties": { + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler" + ] + }, + { + "id": 76, + "type": "Note", + "pos": [ + 40, + 350 + ], + "size": [ + 360, + 200 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "This model needs long descriptive prompts, if the prompt is too short the quality will suffer greatly." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 77, + "type": "LTXVImgToVideo", + "pos": [ + 863, + 181 + ], + "size": [ + 315, + 190 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 187 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 188 + }, + { + "name": "vae", + "type": "VAE", + "link": 189 + }, + { + "name": "image", + "type": "IMAGE", + "link": 190 + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "links": [ + 183 + ], + "slot_index": 0 + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 184 + ], + "slot_index": 1 + }, + { + "name": "latent", + "type": "LATENT", + "links": [ + 185, + 186 + ], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "LTXVImgToVideo" + }, + "widgets_values": [ + 768, + 512, + 97, + 1 + ] + }, + { + "id": 78, + "type": "LoadImage", + "pos": [ + 420, + 620 + ], + "size": [ + 385.15606689453125, + 333.3305358886719 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 190 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "island.jpg", + "image" + ] + }, + { + "id": 41, + "type": "SaveAnimatedWEBP", + "pos": [ + 1830, + 30 + ], + "size": [ + 680, + 610 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 106 + } + ], + "outputs": [], + "properties": {}, + "widgets_values": [ + "ComfyUI", + 24, + false, + 90, + "default" + ] + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 420, + 190 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 74 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 187 + ], + "slot_index": 0 + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "best quality, 4k, HDR, a tracking shot of a beautiful scene of the sea waves on the beach with a massive explosion in the water" + ], + "color": "#232", + "bgcolor": "#353" + } + ], + "links": [ + [ + 74, + 38, + 0, + 6, + 0, + "CLIP" + ], + [ + 75, + 38, + 0, + 7, + 0, + "CLIP" + ], + [ + 87, + 44, + 2, + 8, + 1, + "VAE" + ], + [ + 106, + 8, + 0, + 41, + 0, + "IMAGE" + ], + [ + 166, + 69, + 0, + 72, + 1, + "CONDITIONING" + ], + [ + 167, + 69, + 1, + 72, + 2, + "CONDITIONING" + ], + [ + 171, + 72, + 0, + 8, + 0, + "LATENT" + ], + [ + 172, + 73, + 0, + 72, + 3, + "SAMPLER" + ], + [ + 181, + 44, + 0, + 72, + 0, + "MODEL" + ], + [ + 182, + 71, + 0, + 72, + 4, + "SIGMAS" + ], + [ + 183, + 77, + 0, + 69, + 0, + "CONDITIONING" + ], + [ + 184, + 77, + 1, + 69, + 1, + "CONDITIONING" + ], + [ + 185, + 77, + 2, + 71, + 0, + "LATENT" + ], + [ + 186, + 77, + 2, + 72, + 5, + "LATENT" + ], + [ + 187, + 6, + 0, + 77, + 0, + "CONDITIONING" + ], + [ + 188, + 7, + 0, + 77, + 1, + "CONDITIONING" + ], + [ + 189, + 44, + 2, + 77, + 2, + "VAE" + ], + [ + 190, + 78, + 0, + 77, + 3, + "IMAGE" + ] + ], + "groups": [], + "config": {}, + "extra": {}, + "version": 0.4 +} \ No newline at end of file diff --git a/LTX_Video_text_to_video.json b/LTX_Video_text_to_video.json new file mode 100644 index 0000000..04c26d6 --- /dev/null +++ b/LTX_Video_text_to_video.json @@ -0,0 +1,612 @@ +{ + "last_node_id": 76, + "last_link_id": 182, + "nodes": [ + { + "id": 38, + "type": "CLIPLoader", + "pos": [ + 60, + 190 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 74, + 75 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPLoader" + }, + "widgets_values": [ + "t5xxl_fp16.safetensors", + "ltxv" + ] + }, + { + "id": 8, + "type": "VAEDecode", + "pos": [ + 1600, + 30 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 171 + }, + { + "name": "vae", + "type": "VAE", + "link": 87 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 106 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 69, + "type": "LTXVConditioning", + "pos": [ + 920, + 60 + ], + "size": [ + 223.8660125732422, + 78 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 169 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 170 + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "links": [ + 166 + ], + "slot_index": 0 + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 167 + ], + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "LTXVConditioning" + }, + "widgets_values": [ + 25 + ] + }, + { + "id": 72, + "type": "SamplerCustom", + "pos": [ + 1201, + 32 + ], + "size": [ + 355.20001220703125, + 230 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 181 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 166 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 167 + }, + { + "name": "sampler", + "type": "SAMPLER", + "link": 172 + }, + { + "name": "sigmas", + "type": "SIGMAS", + "link": 182 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 175 + } + ], + "outputs": [ + { + "name": "output", + "type": "LATENT", + "links": [ + 171 + ], + "slot_index": 0 + }, + { + "name": "denoised_output", + "type": "LATENT", + "links": null + } + ], + "properties": { + "Node name for S&R": "SamplerCustom" + }, + "widgets_values": [ + true, + 497797676867141, + "randomize", + 3 + ] + }, + { + "id": 44, + "type": "CheckpointLoaderSimple", + "pos": [ + 520, + 30 + ], + "size": [ + 315, + 98 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 181 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": null + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 87 + ], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "ltx-video-2b-v0.9.safetensors" + ] + }, + { + "id": 70, + "type": "EmptyLTXVLatentVideo", + "pos": [ + 860, + 240 + ], + "size": [ + 315, + 130 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 168, + 175 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "EmptyLTXVLatentVideo" + }, + "widgets_values": [ + 768, + 512, + 97, + 1 + ] + }, + { + "id": 71, + "type": "LTXVScheduler", + "pos": [ + 856, + 531 + ], + "size": [ + 315, + 154 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "latent", + "type": "LATENT", + "link": 168, + "shape": 7 + } + ], + "outputs": [ + { + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 182 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "LTXVScheduler" + }, + "widgets_values": [ + 30, + 2.05, + 0.95, + true, + 0.1 + ] + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 420, + 190 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 74 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 169 + ], + "slot_index": 0 + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "A woman with long brown hair and light skin smiles at another woman with long blonde hair. The woman with brown hair wears a black jacket and has a small, barely noticeable mole on her right cheek. The camera angle is a close-up, focused on the woman with brown hair's face. The lighting is warm and natural, likely from the setting sun, casting a soft glow on the scene. The scene appears to be real-life footage." + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 7, + "type": "CLIPTextEncode", + "pos": [ + 420, + 390 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 75 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 170 + ], + "slot_index": 0 + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "low quality, worst quality, deformed, distorted, disfigured, motion smear, motion artifacts, fused fingers, bad anatomy, weird hand, ugly" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 73, + "type": "KSamplerSelect", + "pos": [ + 860, + 420 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 172 + ] + } + ], + "properties": { + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler" + ] + }, + { + "id": 76, + "type": "Note", + "pos": [ + 40, + 350 + ], + "size": [ + 360, + 200 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "This model needs long descriptive prompts, if the prompt is too short the quality will suffer greatly." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 41, + "type": "SaveAnimatedWEBP", + "pos": [ + 1830, + 30 + ], + "size": [ + 680, + 610 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 106 + } + ], + "outputs": [], + "properties": {}, + "widgets_values": [ + "ComfyUI", + 24, + false, + 90, + "default" + ] + } + ], + "links": [ + [ + 74, + 38, + 0, + 6, + 0, + "CLIP" + ], + [ + 75, + 38, + 0, + 7, + 0, + "CLIP" + ], + [ + 87, + 44, + 2, + 8, + 1, + "VAE" + ], + [ + 106, + 8, + 0, + 41, + 0, + "IMAGE" + ], + [ + 166, + 69, + 0, + 72, + 1, + "CONDITIONING" + ], + [ + 167, + 69, + 1, + 72, + 2, + "CONDITIONING" + ], + [ + 168, + 70, + 0, + 71, + 0, + "LATENT" + ], + [ + 169, + 6, + 0, + 69, + 0, + "CONDITIONING" + ], + [ + 170, + 7, + 0, + 69, + 1, + "CONDITIONING" + ], + [ + 171, + 72, + 0, + 8, + 0, + "LATENT" + ], + [ + 172, + 73, + 0, + 72, + 3, + "SAMPLER" + ], + [ + 175, + 70, + 0, + 72, + 5, + "LATENT" + ], + [ + 181, + 44, + 0, + 72, + 0, + "MODEL" + ], + [ + 182, + 71, + 0, + 72, + 4, + "SIGMAS" + ] + ], + "groups": [], + "config": {}, + "extra": {}, + "version": 0.4 +} \ No newline at end of file diff --git a/NullClaw_with_Ollama.txt b/NullClaw_with_Ollama.txt new file mode 100644 index 0000000..e8ece51 --- /dev/null +++ b/NullClaw_with_Ollama.txt @@ -0,0 +1,110 @@ +Install Dependencies + +sudo apt install libsqlite3-dev -y + +Install Zig + +wget https://ziglang.org/download/0.15.2/zig-x86_64-linux-0.15.2.tar.xz +tar -xf zig-x86_64-linux-0.15.2.tar.xz +sudo mv zig-x86_64-linux-0.15.2 /usr/local/zig +echo 'export PATH=$PATH:/usr/local/zig' >> ~/.bashrc +source ~/.bashrc + +zig version + +Clone and Build + +git clone https://github.com/nullclaw/nullclaw.git +cd nullclaw +zig build -Doptimize=ReleaseSmall +sudo cp zig-out/bin/nullclaw /usr/local/bin/ + + +Onboard + +nullclaw onboard --interactive + +Config file ~/.nullclaw/config.json + +json{ + "default_provider": "ollama", + "default_temperature": 0.7, + "models": { + "providers": { + "ollama": { + "api_key": "dummy", + "api_url": "http://localhost:11434/v1" + } + } + }, + "agents": { + "defaults": { + "model": {"primary": "glm-4.7-flash:latest"} + } + }, + "channels": { + "telegram": { + "accounts": { + "main": { + "bot_token": "YOUR_BOT_TOKEN_HERE", + "allow_from": ["YOUR_TELEGRAM_USER_ID"] + } + } + } + }, + "diagnostics": { + "backend": "none" + }, + "autonomy": { + "level": "supervised", + "workspace_only": true, + "max_actions_per_hour": 20, + "max_cost_per_day_cents": 500 + }, + "memory": { + "backend": "sqlite", + "auto_save": true, + "hygiene_enabled": true, + "archive_after_days": 7, + "purge_after_days": 30, + "conversation_retention_days": 30 + }, + "gateway": { + "port": 3000, + "host": "127.0.0.1", + "require_pairing": true + }, + "tools": { + "shell_timeout_secs": 60, + "shell_max_output_bytes": 1048576, + "max_file_size_bytes": 10485760, + "web_fetch_max_chars": 50000 + }, + "hardware": { + "enabled": false, + "transport": "none", + "baud_rate": 115200 + } +} + +Test Agent + +nullclaw agent -m "Hello, what is 2+2?" + +Start Daemon + +bashnullclaw daemon + +Check Status and Health + +nullclaw status + +nullclaw doctor + +Check Binary Size + +ls -lh zig-out/bin/nullclaw + +Check Memory Usage + +bashps aux | grep nullclaw \ No newline at end of file diff --git a/OpenClaw Skills Demo.txt b/OpenClaw Skills Demo.txt new file mode 100644 index 0000000..1fa628f --- /dev/null +++ b/OpenClaw Skills Demo.txt @@ -0,0 +1,144 @@ +# Install SQLite +sudo apt update +sudo apt install sqlite3 -y + +# Create database directory +mkdir -p ~/databases +cd ~/databases + +# Create and populate the database +sqlite3 sales.db << 'EOF' +CREATE TABLE products ( + id INTEGER PRIMARY KEY, + name TEXT NOT NULL, + category TEXT, + price REAL +); + +CREATE TABLE sales ( + id INTEGER PRIMARY KEY, + product_id INTEGER, + quantity INTEGER, + sale_date TEXT, + revenue REAL, + FOREIGN KEY (product_id) REFERENCES products(id) +); + +INSERT INTO products (name, category, price) VALUES +('MacBook Pro M4', 'Laptops', 2499.00), +('iPhone 16 Pro', 'Phones', 1199.00), +('AirPods Pro 3', 'Audio', 249.00), +('iPad Air', 'Tablets', 599.00), +('Apple Watch Ultra', 'Wearables', 799.00), +('Magic Keyboard', 'Accessories', 349.00), +('Studio Display', 'Monitors', 1599.00), +('Mac Mini M4', 'Desktops', 599.00); + +INSERT INTO sales (product_id, quantity, sale_date, revenue) VALUES +(1, 5, '2026-02-01', 12495.00), +(2, 12, '2026-02-01', 14388.00), +(3, 25, '2026-02-02', 6225.00), +(1, 3, '2026-02-03', 7497.00), +(4, 8, '2026-02-03', 4792.00), +(5, 6, '2026-02-04', 4794.00), +(2, 15, '2026-02-05', 17985.00), +(3, 30, '2026-02-06', 7470.00), +(6, 10, '2026-02-07', 3490.00), +(7, 2, '2026-02-08', 3198.00), +(8, 20, '2026-02-09', 11980.00); +EOF + +# Verify database +sqlite3 ~/databases/sales.db "SELECT COUNT(*) FROM products;" +sqlite3 ~/databases/sales.db "SELECT COUNT(*) FROM sales;" + +# Cleanup and reinstall OpenClaw +systemctl --user stop openclaw-gateway +openclaw uninstall --all --yes +npm uninstall -g openclaw +rm -rf ~/.openclaw +sed -i '/openclaw/d' ~/.bashrc +source ~/.bashrc + +# Fresh install +curl -fsSL https://openclaw.ai/install.sh | bash +source ~/.bashrc + +# Create SQLite skill +mkdir -p ~/.openclaw/workspace/skills/sqlite +cat > ~/.openclaw/workspace/skills/sqlite/SKILL.md << 'EOF' +--- +name: sqlite +description: Query and analyze SQLite databases using SQL +metadata: {"openclaw": {"requires": {"bins": ["sqlite3"]}, "emoji": "🗄️"}} +--- + +# SQLite Database Query Skill + +This skill allows you to query SQLite databases using SQL. + +## Usage + +To query a database, use the `exec` tool with sqlite3: +```bash +sqlite3 /path/to/database.db "SELECT * FROM table_name;" +``` + +## Common Commands + +- List tables: `sqlite3 database.db ".tables"` +- Show schema: `sqlite3 database.db ".schema table_name"` +- Run query: `sqlite3 database.db "SELECT * FROM products LIMIT 5;"` +- Export CSV: `sqlite3 -csv database.db "SELECT * FROM sales;"` +- Column mode: `sqlite3 -column -header database.db "SELECT * FROM products;"` + +## Example Queries + +Query products: +```bash +sqlite3 ~/databases/sales.db "SELECT * FROM products;" +``` + +Analyze sales: +```bash +sqlite3 ~/databases/sales.db "SELECT p.name, SUM(s.revenue) as total FROM sales s JOIN products p ON s.product_id = p.id GROUP BY p.name ORDER BY total DESC;" +``` +EOF + +# Create exec-approvals.json +cat > ~/.openclaw/exec-approvals.json << 'EOF' +{ + "version": 1, + "defaults": { + "security": "allow", + "ask": "off" + }, + "agents": { + "main": { + "security": "allow", + "ask": "off", + "autoAllowSkills": true + } + } +} +EOF + +# Restart gateway +systemctl --user restart openclaw-gateway + +# Verify setup +openclaw skills list +openclaw models status + +# Open dashboard +openclaw dashboard +``` + +**Then in the web UI, send:** +``` +Show me all products and total revenue per product from ~/databases/sales.db +``` + +**Then:** +``` +Create an HTML page that displays this sales data in an interactive dashboard with charts, then deploy it to Vercel \ No newline at end of file diff --git a/OpenClaw_Upgrade_Downgrade_Guide.txt b/OpenClaw_Upgrade_Downgrade_Guide.txt new file mode 100644 index 0000000..113f13c --- /dev/null +++ b/OpenClaw_Upgrade_Downgrade_Guide.txt @@ -0,0 +1,130 @@ + +## Ubuntu/Linux + +### Method 1: Re-run Installer (Recommended) +```bash +curl -fsSL https://openclaw.bot/install.sh | bash +openclaw doctor +openclaw gateway restart +openclaw status +``` + +### Method 2: Direct npm Update +```bash +npm install -g openclaw@latest +openclaw doctor +openclaw gateway restart +``` + +### Method 3: Using openclaw update command +```bash +openclaw update + +## Windows (WSL2) + +OpenClaw on Windows requires WSL2. Update process is identical to Linux: +```bash +curl -fsSL https://openclaw.bot/install.sh | bash +openclaw doctor +systemctl --user restart openclaw-gateway +``` + +Or using npm: +```bash +npm install -g openclaw@latest +openclaw doctor +systemctl --user restart openclaw-gateway +``` + + +## macOS (Global Install) + +### Using Installer +```bash +curl -fsSL https://openclaw.bot/install.sh | bash +openclaw doctor +openclaw gateway restart +``` + +### Using npm +```bash +npm install -g openclaw@latest +openclaw doctor +openclaw gateway restart +``` + +### Using pnpm +```bash +pnpm add -g openclaw@latest +openclaw doctor +openclaw gateway restart +``` + +## macOS (Global Install) + +### Using Installer +```bash +curl -fsSL https://openclaw.bot/install.sh | bash +openclaw doctor +openclaw gateway restart +``` + +### Using npm +```bash +npm install -g openclaw@latest +openclaw doctor +openclaw gateway restart +``` + +### Using pnpm +```bash +pnpm add -g openclaw@latest +openclaw doctor +openclaw gateway restart +``` + +## Switching Update Channels + +OpenClaw has three channels: +- **stable**: Tagged releases (recommended) +- **beta**: Prerelease versions with new features +- **dev**: Latest development branch + +### Switch to beta +```bash +openclaw update --channel beta +``` + +### Switch to dev +```bash +openclaw update --channel dev +``` + +### Switch back to stable +```bash +openclaw update --channel stable +``` + + + + +## Rolling Back to Previous Version + +If an update breaks something: + +### For npm/pnpm installs +```bash +npm install -g openclaw@2026.1.29 # Replace with known-good version +openclaw doctor +openclaw gateway restart +``` + +### For source installs +```bash +cd ~/openclaw +git fetch origin +git checkout "$(git rev-list -n 1 --before=\"2026-01-29\" origin/main)" +pnpm install +pnpm build +openclaw gateway restart +``` \ No newline at end of file diff --git a/OpenClaw_with_LMstudio_config.txt b/OpenClaw_with_LMstudio_config.txt new file mode 100644 index 0000000..4764b5f --- /dev/null +++ b/OpenClaw_with_LMstudio_config.txt @@ -0,0 +1,68 @@ +{ + "messages": { + "ackReactionScope": "group-mentions" + }, + "models": { + "providers": { + "lmstudio": { + "baseUrl": "http://127.0.0.1:1234/v1", + "apiKey": "lmstudio-local", + "api": "openai-responses", + "models": [ + { + "id": "zai-org/glm-4.7-flash", + "name": "GLM-4.7 Flash (LM Studio)", + "reasoning": false, + "input": ["text"], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 32768, + "maxTokens": 8192 + } + ] + } + } + }, + "agents": { + "defaults": { + "model": { + "primary": "lmstudio/zai-org/glm-4.7-flash" + }, + "maxConcurrent": 4, + "subagents": { + "maxConcurrent": 8 + }, + "compaction": { + "mode": "safeguard" + }, + "workspace": "/home/Ubuntu/.openclaw/workspace" + } + }, + "gateway": { + "mode": "local", + "auth": { + "mode": "token", + "token": "your-secure-token-here" + }, + "port": 18789, + "bind": "loopback", + "tailscale": { + "mode": "off", + "resetOnExit": false + } + }, + "wizard": { + "lastRunAt": "2026-01-30T22:39:51.080Z", + "lastRunVersion": "2026.1.29", + "lastRunCommand": "onboard", + "lastRunMode": "local" + }, + "meta": { + "lastTouchedVersion": "2026.1.29", + "lastTouchedAt": "2026-01-30T22:39:51.087Z" + } +} diff --git a/OpenClaw_with_Qwen35.txt b/OpenClaw_with_Qwen35.txt new file mode 100644 index 0000000..6423d51 --- /dev/null +++ b/OpenClaw_with_Qwen35.txt @@ -0,0 +1,79 @@ +{ + "models": { + "providers": { + "qwen": { + "baseUrl": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1", + "apiKey": "", + "api": "openai-completions", + "models": [ + { + "id": "qwen3.5-plus", + "name": "Qwen3.5-Plus", + "input": [ + "text", + "image" + ], + "cost": { + "input": 0.4, + "output": 2, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 131072, + "maxTokens": 8192 + } + ] + } + } + }, + "agents": { + "defaults": { + "model": { + "primary": "qwen/qwen3.5-plus" + }, + "workspace": "/home/Ubuntu/.openclaw/workspace", + "compaction": { + "mode": "safeguard" + }, + "maxConcurrent": 4, + "subagents": { + "maxConcurrent": 8 + } + } + }, + "commands": { + "native": "auto", + "nativeSkills": "auto" + }, + "channels": { + "telegram": { + "enabled": true, + "dmPolicy": "pairing", + "botToken": "", + "groupPolicy": "allowlist", + "streamMode": "partial" + } + }, + "gateway": { + "port": 18789, + "mode": "local", + "bind": "loopback", + "auth": { + "mode": "token" + } + }, + "plugins": { + "entries": { + "telegram": { + "enabled": true + }, + "qwen-portal-auth": { + "enabled": true + } + } + }, + "meta": { + "lastTouchedVersion": "2026.2.15", + "lastTouchedAt": "2026-02-17T03:33:14.587Z" + } +} diff --git a/Picoclaw_with_Ollama.txt b/Picoclaw_with_Ollama.txt new file mode 100644 index 0000000..a4d41d6 --- /dev/null +++ b/Picoclaw_with_Ollama.txt @@ -0,0 +1,64 @@ + +Commands: + +wget https://go.dev/dl/go1.23.5.linux-amd64.tar.gz +sudo tar -C /usr/local -xzf go1.23.5.linux-amd64.tar.gz +export PATH=$PATH:/usr/local/go/bin +echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc +source ~/.bashrc + +# Clone and build +git clone https://github.com/sipeed/picoclaw.git +cd picoclaw +make deps +make build +make install + +# Initialize +picoclaw onboard + +# Test agent +picoclaw agent -m "Hello, introduce yourself briefly" + +# Start gateway +picoclaw gateway + + +config.json file: + +{ + "agents": { + "defaults": { + "workspace": "~/.picoclaw/workspace", + "model": "glm-4.7-flash:latest", + "max_tokens": 8192, + "temperature": 0.7, + "max_tool_iterations": 20 + } + }, + "providers": { + "openrouter": { + "api_key": "dummy", + "api_base": "http://localhost:11434/v1" + } + }, + "tools": { + "web": { + "duckduckgo": { + "enabled": true, + "max_results": 5 + } + } + }, + "channels": { + "telegram": { + "enabled": true, + "token": "8542124368:AAE47s5ViuqtbFtp1jgn4dWLMJEBEHXSRtA", + "allowFrom": ["6961858793"] + } + }, + "heartbeat": { + "enabled": true, + "interval": 30 + } +} diff --git a/PixelRAG Commands.txt b/PixelRAG Commands.txt new file mode 100644 index 0000000..2d8a8d9 --- /dev/null +++ b/PixelRAG Commands.txt @@ -0,0 +1,40 @@ + +# Environment +conda create -n ai python=3.12 -y && conda activate ai + +# Install PixelRAG with all stages +pip install 'pixelrag[embed,serve,index,pdf]' + +# Patch the article-id bug (sources use string IDs, pipeline expects int) +FILE=$(python3 -c "import pixelrag_index.pipelines as m; print(m.__file__)") +sed -i 's/max_idx = max(int(a\["id"\]) for a in articles) + 1 if articles else 0/max_idx = len(articles)/' $FILE +sed -i 's/idx = int(a\["id"\])/idx = next(i for i, x in enumerate(articles) if x is a)/' $FILE + +# Turn a Wikipedia page into a PDF (our source document) +mkdir -p my_docs +pip install weasyprint +python3 -c "import weasyprint; weasyprint.HTML(url='https://en.wikipedia.org/wiki/Terracotta_Army').write_pdf('my_docs/terracotta.pdf')" + +# Stage 1 — Render PDF to tiles at 100 DPI (keeps chunks under the 875px width limit) +pixelshot my_docs/terracotta.pdf -o ./pdf_tiles --dpi 100 + +# Move tiles into a numeric shard dir (embedder needs a numeric article-id dir name) +mkdir -p my_index/tiles +mv pdf_tiles/terracotta.png.tiles my_index/tiles/1.png.tiles + +# Stage 2 — Chunk tiles into strips +python -m pixelrag_embed.chunk --shard-dir my_index/tiles --workers 8 + +# Stage 3 — Embed chunks on the GPU via transformers (direct_gpu avoids vllm/sglang/flash-attn) +pixelrag embed --shard-dir my_index/tiles --output-dir my_index/embeddings --gpu-ids 0 --backend direct_gpu + +# Stage 4 — Build the FAISS index +pixelrag build-index build --embeddings-dir my_index/embeddings --output-dir my_index --nlist 1 + +# Create the articles.json mapping (index = article_id; slot 1 = our PDF) +cat > my_index/articles.json << 'EOF' +[{"title": "", "url": ""}, {"title": "Terracotta Army", "url": "https://en.wikipedia.org/wiki/Terracotta_Army"}] +EOF + +# Serve the index +pixelrag serve --index-dir my_index --tiles-dir my_index/tiles --articles-json my_index/articles.json --port 30001 \ No newline at end of file diff --git a/QWEN35_With_OpenClaw.txt b/QWEN35_With_OpenClaw.txt new file mode 100644 index 0000000..bad1126 --- /dev/null +++ b/QWEN35_With_OpenClaw.txt @@ -0,0 +1,76 @@ +{ + "meta": { + "lastTouchedVersion": "2026.3.2", + "lastTouchedAt": "2026-03-03T18:52:44.313Z" + }, + "wizard": { + "lastRunAt": "2026-03-03T18:42:37.678Z", + "lastRunVersion": "2026.3.2", + "lastRunCommand": "configure", + "lastRunMode": "local" + }, + "models": { + "mode": "merge", + "providers": { + "ollama": { + "baseUrl": "http://127.0.0.1:11434/v1", + "apiKey": "ollama", + "api": "ollama", + "models": [ + { + "id": "qwen3.5:0.8b", + "name": "Qwen3.5 0.8B", + "reasoning": false, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 32768, + "maxTokens": 8192 + } + ] + } + } + }, + "agents": { + "defaults": { + "model": { + "primary": "ollama/qwen3.5:0.8b" + } + } + }, + "commands": { + "native": "auto", + "nativeSkills": "auto", + "restart": true, + "ownerDisplay": "raw" + }, + "channels": { + "telegram": { + "enabled": true, + "dmPolicy": "pairing", + "botToken": "8715484363:AAGvY-vv0RGeFSGAyavq6JDMJGxbaVM4fhw", + "groupPolicy": "open", + "streaming": "partial" + } + }, + "gateway": { + "mode": "local", + "auth": { + "mode": "token", + "token": "002cb00b141254d1f9f1d6a59492a002a11d40b2071fe2d2" + } + }, + "plugins": { + "entries": { + "telegram": { + "enabled": true + } + } + } +} diff --git a/Qwen-Image-Workflow.json b/Qwen-Image-Workflow.json new file mode 100644 index 0000000..417754c --- /dev/null +++ b/Qwen-Image-Workflow.json @@ -0,0 +1,509 @@ +{ + "id": "91f6bbe2-ed41-4fd6-bac7-71d5b5864ecb", + "revision": 0, + "last_node_id": 66, + "last_link_id": 128, + "nodes": [ + { + "id": 8, + "type": "VAEDecode", + "pos": [ + 1210, + 190 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 128 + }, + { + "name": "vae", + "type": "VAE", + "link": 76 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 110 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 60, + "type": "SaveImage", + "pos": [ + 1478.3486328125, + 190.30274963378906 + ], + "size": [ + 821.0496215820312, + 871.7067260742188 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 110 + } + ], + "outputs": [], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.48" + }, + "widgets_values": [ + "ComfyUI" + ] + }, + { + "id": 58, + "type": "EmptySD3LatentImage", + "pos": [ + 410.6574401855469, + 620.5468139648438 + ], + "size": [ + 270, + 106 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 107 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "EmptySD3LatentImage" + }, + "widgets_values": [ + 1328, + 1328, + 1 + ] + }, + { + "id": 7, + "type": "CLIPTextEncode", + "pos": [ + 413, + 389 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 75 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 52 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + " " + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 66, + "type": "ModelSamplingAuraFlow", + "pos": [ + 418.2298278808594, + 68.82577514648438 + ], + "size": [ + 270, + 58 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 126 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 125 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "ModelSamplingAuraFlow" + }, + "widgets_values": [ + 3.500000000000001 + ] + }, + { + "id": 3, + "type": "KSampler", + "pos": [ + 472.95068359375, + 154.49595642089844 + ], + "size": [ + 315, + 262 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 125 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 46 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 52 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 107 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "slot_index": 0, + "links": [ + 128 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 1022313538096618, + "randomize", + 20, + 4, + "euler", + "simple", + 1 + ] + }, + { + "id": 37, + "type": "UNETLoader", + "pos": [ + 20, + 60 + ], + "size": [ + 346.7470703125, + 82 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 126 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "UNETLoader" + }, + "widgets_values": [ + "qwen_image_bf16.safetensors", + "default" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 38, + "type": "CLIPLoader", + "pos": [ + -11.340057373046875, + 188.20913696289062 + ], + "size": [ + 380, + 106 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 74, + 75 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "CLIPLoader" + }, + "widgets_values": [ + "qwen_2.5_vl_7b.safetensors", + "qwen_image", + "default" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 39, + "type": "VAELoader", + "pos": [ + 22.686290740966797, + 359.6993713378906 + ], + "size": [ + 330, + 60 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "slot_index": 0, + "links": [ + 76 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "qwen_image_vae.safetensors" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 923.2462158203125, + 338.67095947265625 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 74 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 46 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "Create an image of four cats sitting on a wooden floor, arranged in a row and facing the camera.\n\nThe cats have different breeds and colors, showcasing a variety of fur patterns and expressions. From left to right:\n\nThe first cat has light brown and white fur, with floppy ears and a friendly expression.\nThe second cat has golden-orange fur with a fluffy coat, looking curious and alert.\nThe third cat has black and white fur, possibly resembling a tuxedo pattern, with striking eyes and a calm demeanor.\nThe fourth cat has a mix of orange and white fur, with perked-up ears and an attentive gaze.\nIn front of the cats, there is a GoPro camera placed on the wooden floor. The camera is positioned centrally, slightly angled toward the viewer, with its lens and brand logo clearly visible.\n\nThe background features a bright blue wall with soft lighting, giving the scene a cheerful and vibrant atmosphere. The overall mood of the image is playful and engaging, highlighting the curiosity and charm of the cats as they look at the camera." + ], + "color": "#232", + "bgcolor": "#353" + } + ], + "links": [ + [ + 46, + 6, + 0, + 3, + 1, + "CONDITIONING" + ], + [ + 52, + 7, + 0, + 3, + 2, + "CONDITIONING" + ], + [ + 74, + 38, + 0, + 6, + 0, + "CLIP" + ], + [ + 75, + 38, + 0, + 7, + 0, + "CLIP" + ], + [ + 76, + 39, + 0, + 8, + 1, + "VAE" + ], + [ + 107, + 58, + 0, + 3, + 3, + "LATENT" + ], + [ + 110, + 8, + 0, + 60, + 0, + "IMAGE" + ], + [ + 125, + 66, + 0, + 3, + 0, + "MODEL" + ], + [ + 126, + 37, + 0, + 66, + 0, + "MODEL" + ], + [ + 128, + 3, + 0, + 8, + 0, + "LATENT" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 1, + "offset": [ + -815.4160387531228, + -214.19249043190945 + ] + }, + "frontendVersion": "1.23.4" + }, + "version": 0.4 +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..a31650a --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +This Repo contains ComfyUI Workflows which I create or use as part of videos on my YT channel https://www.youtube.com/@fahdmirza + +🔥 Buy Me a Coffee to support the content: https://ko-fi.com/fahdmirza diff --git a/README.wehub.md b/README.wehub.md new file mode 100644 index 0000000..4a278a1 --- /dev/null +++ b/README.wehub.md @@ -0,0 +1,7 @@ +# WeHub 来源说明 + +- 原始项目:`fahdmirza/comfyuiworkflows` +- 原始仓库:https://github.com/fahdmirza/comfyuiworkflows +- 导入方式:上游默认分支的最新快照 +- 原作者、版权和许可证信息以原始仓库及本仓库 LICENSE 为准 +- 本文件仅用于记录来源,不代表 WeHub 是原项目作者 diff --git a/Turboquantwithwithollama b/Turboquantwithwithollama new file mode 100644 index 0000000..0c81253 --- /dev/null +++ b/Turboquantwithwithollama @@ -0,0 +1,64 @@ +from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, StorageContext +from llama_index.core import Settings +from llama_index.llms.ollama import Ollama +from llama_index.embeddings.ollama import OllamaEmbedding +from turbovec.llama_index import TurboQuantVectorStore +from turbovec import TurboQuantIndex + +# Setup Ollama LLM and embeddings - fully local, nothing leaves your machine +Settings.llm = Ollama(model="gemma4:31b", request_timeout=120.0) +Settings.embed_model = OllamaEmbedding(model_name="nomic-embed-text") + +# Load document +print("Loading document...") +documents = SimpleDirectoryReader( + input_files=["/home/Ubuntu/TransferData/myfiles/fahd.txt"] +).load_data() + +# Create turbovec vector store with 4-bit TurboQuant compression +print("Creating TurboQuant vector index...") +tq_index = TurboQuantIndex(dim=768, bit_width=4) +vector_store = TurboQuantVectorStore(index=tq_index) +storage_context = StorageContext.from_defaults(vector_store=vector_store) + +# Index the document +index = VectorStoreIndex.from_documents( + documents, + storage_context=storage_context +) + +# Compression statistics +num_vectors = len(tq_index) +dim = 768 +bit_width = 4 +bytes_per_float32 = 4 + +original_bytes = num_vectors * dim * bytes_per_float32 +compressed_bytes = num_vectors * dim * bit_width // 8 +compression_ratio = original_bytes / compressed_bytes if compressed_bytes > 0 else 0 + +print("\n--- TurboQuant Compression Statistics ---") +print(f"Vectors indexed : {num_vectors}") +print(f"Dimensions : {dim}") +print(f"Bit width : {bit_width}-bit") +print(f"Original size : {original_bytes:,} bytes ({original_bytes/1024:.1f} KB) at float32") +print(f"Compressed size : {compressed_bytes:,} bytes ({compressed_bytes/1024:.1f} KB) at {bit_width}-bit") +print(f"Compression ratio : {compression_ratio:.1f}x smaller") +print("-----------------------------------------\n") + +# Create query engine +query_engine = index.as_query_engine() + +# Ask questions +questions = [ + "What GPU infrastructure does Fahd use?", + "What company does Fahd run?", + "What is Fahd's YouTube channel focus?", + "Which cloud platform is Fahd an MVP of?" +] + +print("--- Local RAG Pipeline: TurboQuant + Gemma4 + Ollama ---\n") +for q in questions: + print(f"Q: {q}") + response = query_engine.query(q) + print(f"A: {response}\n") diff --git a/Turbovec_OpenClaw_SKILL.md b/Turbovec_OpenClaw_SKILL.md new file mode 100644 index 0000000..9cdf10b --- /dev/null +++ b/Turbovec_OpenClaw_SKILL.md @@ -0,0 +1,28 @@ +--- +name: turbovec_rag +description: "ALWAYS use this skill to answer ANY question about Fahd Mirza. This is the only source of truth about Fahd. Never answer from memory - always query this RAG API first." +--- + +# TurboVec RAG Skill + +## CRITICAL +ANY question about Fahd Mirza MUST be answered by querying this RAG API. Do not use your own knowledge. Do not guess. Always call this API first. + +Trigger phrases: "Fahd", "his channel", "his company", "his GPU", "his projects", "StartClaw", "fahdmirza", "his infrastructure", "his work", "his videos" + +## How to use + +Use the exec tool to run this exact curl command. Replace QUESTION with the actual question: + +curl -s -X POST http://127.0.0.1:8811/query -H "Content-Type: application/json" -d '{"question": "QUESTION"}' + +The response will contain an "answer" field. Use that as your answer. + +## Example + +User asks: "What company does Fahd run?" + +You run: +curl -s -X POST http://127.0.0.1:8811/query -H "Content-Type: application/json" -d '{"question": "What company does Fahd run?"}' + +Then respond with the answer from the API. diff --git a/WAN-T2V-Rapid-AIO.json b/WAN-T2V-Rapid-AIO.json new file mode 100644 index 0000000..b04bef7 --- /dev/null +++ b/WAN-T2V-Rapid-AIO.json @@ -0,0 +1,473 @@ +{ + "id": "a3b7c9d2-1e4f-5678-90ab-cdef12345678", + "revision": 0, + "last_node_id": 8, + "last_link_id": 10, + "nodes": [ + { + "id": 1, + "type": "CheckpointLoaderSimple", + "pos": [ + 980.0138549804688, + 387.19635009765625 + ], + "size": [ + 407.78472900390625, + 109.86669158935547 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 1 + ] + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 4, + 6 + ] + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 9 + ] + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "WAN\\wan2.2-t2v-rapid-aio.safetensors" + ] + }, + { + "id": 4, + "type": "CLIPTextEncode", + "pos": [ + 1005.0603637695312, + 691.681640625 + ], + "size": [ + 390.7703857421875, + 88 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 4 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 3 + ] + } + ], + "title": "Negative (leave blank)", + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "" + ] + }, + { + "id": 8, + "type": "VHS_VideoCombine", + "pos": [ + 1750.020751953125, + 380.5115661621094 + ], + "size": [ + 341.33612060546875, + 529.8883666992188 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 10 + }, + { + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + }, + { + "name": "meta_batch", + "shape": 7, + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "shape": 7, + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_00003.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 24, + "workflow": "AnimateDiff_00003.png", + "fullpath": "D:\\ComfyUI2\\ComfyUI\\output\\AnimateDiff_00003.mp4" + } + } + } + }, + { + "id": 5, + "type": "CLIPTextEncode", + "pos": [ + 1000.1714477539062, + 556.259521484375 + ], + "size": [ + 390.7703857421875, + 88 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 6 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 5 + ] + } + ], + "title": "Positive Input", + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "An adult woman waving hello while riding a bear in a blizzard" + ] + }, + { + "id": 6, + "type": "EmptyHunyuanLatentVideo", + "pos": [ + 1107.83837890625, + 837.4425659179688 + ], + "size": [ + 270.0943298339844, + 130 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 7 + ] + } + ], + "properties": { + "Node name for S&R": "EmptyHunyuanLatentVideo" + }, + "widgets_values": [ + 848, + 480, + 41, + 1 + ] + }, + { + "id": 3, + "type": "KSampler", + "pos": [ + 1451.7734375, + 644.4122924804688 + ], + "size": [ + 270, + 262 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 2 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 5 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 3 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 7 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 8 + ] + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 192054346835137, + "fixed", + 4, + 1, + "sa_solver", + "beta", + 1 + ] + }, + { + "id": 2, + "type": "ModelSamplingSD3", + "pos": [ + 1454.6737060546875, + 534.7119140625 + ], + "size": [ + 270, + 58 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 1 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 2 + ] + } + ], + "properties": { + "Node name for S&R": "ModelSamplingSD3" + }, + "widgets_values": [ + 8.000000000000002 + ] + }, + { + "id": 7, + "type": "VAEDecode", + "pos": [ + 1759.31640625, + 283.5347595214844 + ], + "size": [ + 140, + 46 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 8 + }, + { + "name": "vae", + "type": "VAE", + "link": 9 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 10 + ] + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + } + } + ], + "links": [ + [ + 1, + 1, + 0, + 2, + 0, + "MODEL" + ], + [ + 2, + 2, + 0, + 3, + 0, + "MODEL" + ], + [ + 3, + 4, + 0, + 3, + 2, + "CONDITIONING" + ], + [ + 4, + 1, + 1, + 4, + 0, + "CLIP" + ], + [ + 5, + 5, + 0, + 3, + 1, + "CONDITIONING" + ], + [ + 6, + 1, + 1, + 5, + 0, + "CLIP" + ], + [ + 7, + 6, + 0, + 3, + 3, + "LATENT" + ], + [ + 8, + 3, + 0, + 7, + 0, + "LATENT" + ], + [ + 9, + 1, + 2, + 7, + 1, + "VAE" + ], + [ + 10, + 7, + 0, + 8, + 0, + "IMAGE" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 1.0834705943389031, + "offset": [ + -639.8582300809832, + -176.81472379708728 + ] + }, + "ue_links": [], + "frontendVersion": "1.23.4", + "VHS_latentpreview": false, + "VHS_latentpreviewrate": 0, + "VHS_MetadataImage": true, + "VHS_KeepIntermediate": true + }, + "version": 0.4 +} \ No newline at end of file diff --git a/ZeroClaw_with_Ollama.txt b/ZeroClaw_with_Ollama.txt new file mode 100644 index 0000000..40e5e03 --- /dev/null +++ b/ZeroClaw_with_Ollama.txt @@ -0,0 +1,107 @@ +workspace_dir = "/home/Ubuntu/.zeroclaw/workspace" +config_path = "/home/Ubuntu/.zeroclaw/config.toml" +api_key = "http://localhost:11434" +default_provider = "ollama" +default_model = "glm-4.7-flash:latest" +default_temperature = 0.7 + +[observability] +backend = "none" + +[autonomy] +level = "supervised" +workspace_only = true +allowed_commands = [ + "git", + "npm", + "cargo", + "ls", + "cat", + "grep", + "find", + "echo", + "pwd", + "wc", + "head", + "tail", +] +forbidden_paths = [ + "/etc", + "/root", + "/home", + "/usr", + "/bin", + "/sbin", + "/lib", + "/opt", + "/boot", + "/dev", + "/proc", + "/sys", + "/var", + "/tmp", + "~/.ssh", + "~/.gnupg", + "~/.aws", + "~/.config", +] +max_actions_per_hour = 20 +max_cost_per_day_cents = 500 + +[runtime] +kind = "native" + +[reliability] +provider_retries = 2 +provider_backoff_ms = 500 +fallback_providers = [] +channel_initial_backoff_secs = 2 +channel_max_backoff_secs = 60 +scheduler_poll_secs = 15 +scheduler_retries = 2 + +[heartbeat] +enabled = false +interval_minutes = 30 + +[channels_config] +cli = true + +[memory] +backend = "sqlite" +auto_save = true +hygiene_enabled = true +archive_after_days = 7 +purge_after_days = 30 +conversation_retention_days = 30 +embedding_provider = "none" +embedding_model = "text-embedding-3-small" +embedding_dimensions = 1536 +vector_weight = 0.7 +keyword_weight = 0.3 +embedding_cache_size = 10000 +chunk_max_tokens = 512 + +[tunnel] +provider = "none" + +[gateway] +port = 3000 +host = "127.0.0.1" +require_pairing = true +allow_public_bind = false +paired_tokens = [] + +[composio] +enabled = false +entity_id = "default" + +[secrets] +encrypt = true + +[browser] +enabled = false +allowed_domains = [] + +[identity] +format = "openclaw" diff --git a/clawrouter-install.html b/clawrouter-install.html new file mode 100644 index 0000000..dd52135 --- /dev/null +++ b/clawrouter-install.html @@ -0,0 +1,525 @@ + + + + + +ClawRouter — Installation Guide + + + + +
+ + +
+
Installation Guide
+

ClawRouter

+
The agent-native LLM router for OpenClaw
Route every request to the right model at the right price. 15-dimension scoring, <1ms local routing.
+ +
+
+
<1ms
+
Local Routing
+
+
+
30+
+
Models
+
+
+
92%
+
Cost Savings
+
+
+
$2.05
+
Blended /M tokens
+
+
+
0
+
API Keys Needed
+
+
+
+ + +
Installation Steps
+ + +
+
+
1
+
Install ClawRouter
+
+
One command installs ClawRouter and restarts your OpenClaw gateway with smart routing enabled.
+
+
+
bash
+
+
+
# Install with smart routing enabled
+curl -fsSL https://blockrun.ai/ClawRouter-update | bash
+openclaw gateway restart
+
+# Smart routing (blockrun/auto) is now your default model
+# Your wallet address will be printed on install
+
+
+ + +
+
+
2
+
Fund Your Wallet
+
+
No account, no API key. Payment is authentication via x402 — non-custodial USDC on Base (L2).
+
+
💳 How the wallet works
+
+
1
Wallet auto-generated on Base L2 — saved at ~/.openclaw/blockrun/wallet.key
+
2
Fund with USDC on Base — $5 is enough for thousands of requests
+
3
Each request triggers a 402 response with price — your wallet signs and pays automatically
+
4
USDC stays in your wallet until spent — fully non-custodial, you hold your keys
+
+
+
+
+
bash · wallet commands
+
+
+
/wallet     # Check balance and address
+/stats      # View usage and savings
+
+
+ + +
+
+
3
+
Choose a Routing Profile
+
+
Switch profiles at any time with /model <profile> in your chat.
+
+
+
Profile
+
Strategy
+
Savings
+
Best For
+
+
+
/model auto
+
Balanced (default)
+
74–100%
+
General use
+
+
+
/model eco
+
Cheapest possible
+
95–100%
+
Max savings
+
+
+
/model premium
+
Best quality
+
0%
+
Mission-critical
+
+
+
/model free
+
Free tier only
+
100%
+
Zero cost
+
+
+
+ + +
+
+
4
+
Model Shortcuts
+
+
Direct model shortcuts available alongside routing profiles.
+
+
+
bash · in-chat commands
+
+
+
/model grok        # grok-4-fast
+/model br-sonnet   # claude-sonnet-4 via ClawRouter
+/model gpt5        # gpt-5.2-codex
+/model o3          # o3 reasoning model
+/model auto        # back to smart routing
+/model free        # gpt-oss-120b (FREE fallback)
+
+
+ + +
+
+
5
+
ClawRouter vs OpenRouter
+
+
+
+
OpenRouter / LiteLLM
+
Human creates account
+
API key (shared secret)
+
Prepaid balance (custodial)
+
Proprietary routing
+
Per-key rate limits
+
~$25/M (Opus equivalent)
+
+
+
ClawRouter ⚡
+
Agent generates wallet
+
Wallet signature (cryptographic)
+
Per-request (non-custodial)
+
Open source, client-side
+
No rate limits
+
$2.05/M blended average
+
+
+
+ + + +
+ + diff --git a/flux2_example.json b/flux2_example.json new file mode 100644 index 0000000..7193175 --- /dev/null +++ b/flux2_example.json @@ -0,0 +1,1206 @@ +{ + "id": "7c048efb-a059-44e2-970a-43e1eb472d0d", + "revision": 0, + "last_node_id": 51, + "last_link_id": 138, + "nodes": [ + { + "id": 13, + "type": "SamplerCustomAdvanced", + "pos": [ + 864, + 192 + ], + "size": [ + 272.3617858886719, + 124.53733825683594 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [ + { + "name": "noise", + "type": "NOISE", + "link": 37 + }, + { + "name": "guider", + "type": "GUIDER", + "link": 30 + }, + { + "name": "sampler", + "type": "SAMPLER", + "link": 19 + }, + { + "name": "sigmas", + "type": "SIGMAS", + "link": 132 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 131 + } + ], + "outputs": [ + { + "name": "output", + "type": "LATENT", + "slot_index": 0, + "links": [ + 24 + ] + }, + { + "name": "denoised_output", + "type": "LATENT", + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "SamplerCustomAdvanced" + }, + "widgets_values": [] + }, + { + "id": 8, + "type": "VAEDecode", + "pos": [ + 866, + 367 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 24 + }, + { + "name": "vae", + "type": "VAE", + "link": 12 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 9 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 16, + "type": "KSamplerSelect", + "pos": [ + 480, + 740 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 19 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler" + ] + }, + { + "id": 22, + "type": "BasicGuider", + "pos": [ + 576, + 48 + ], + "size": [ + 222.3482666015625, + 46 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 133 + }, + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 130 + } + ], + "outputs": [ + { + "name": "GUIDER", + "type": "GUIDER", + "slot_index": 0, + "links": [ + 30 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "BasicGuider" + }, + "widgets_values": [] + }, + { + "id": 40, + "type": "VAEEncode", + "pos": [ + 165.49060363340644, + 43.926673731494525 + ], + "size": [ + 140, + 46 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "pixels", + "type": "IMAGE", + "link": 122 + }, + { + "name": "vae", + "type": "VAE", + "link": 120 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 121 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "VAEEncode" + }, + "widgets_values": [] + }, + { + "id": 41, + "type": "ImageScaleToTotalPixels", + "pos": [ + -156.19988089586272, + -3.7311758283972223 + ], + "size": [ + 270, + 82 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 123 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 122 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "ImageScaleToTotalPixels" + }, + "widgets_values": [ + "area", + 1 + ] + }, + { + "id": 45, + "type": "ImageScaleToTotalPixels", + "pos": [ + -160, + -380 + ], + "size": [ + 270, + 82 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 128 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 126 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "ImageScaleToTotalPixels" + }, + "widgets_values": [ + "area", + 1 + ] + }, + { + "id": 43, + "type": "ReferenceLatent", + "pos": [ + 362.3569995644578, + -36.81875998117904 + ], + "size": [ + 197.712890625, + 46 + ], + "flags": {}, + "order": 19, + "mode": 4, + "inputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 129 + }, + { + "name": "latent", + "shape": 7, + "type": "LATENT", + "link": 125 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 130 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "ReferenceLatent" + }, + "widgets_values": [] + }, + { + "id": 44, + "type": "VAEEncode", + "pos": [ + 171.32724960075282, + -55.05675969081743 + ], + "size": [ + 140, + 46 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "pixels", + "type": "IMAGE", + "link": 126 + }, + { + "name": "vae", + "type": "VAE", + "link": 127 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 125 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "VAEEncode" + }, + "widgets_values": [] + }, + { + "id": 26, + "type": "FluxGuidance", + "pos": [ + 480, + 144 + ], + "size": [ + 317.4000244140625, + 58 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 41 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 118 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "FluxGuidance" + }, + "widgets_values": [ + 4 + ], + "color": "#233", + "bgcolor": "#355" + }, + { + "id": 48, + "type": "Flux2Scheduler", + "pos": [ + 524.4243218480328, + 840.7535840503427 + ], + "size": [ + 270, + 106 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 136 + }, + { + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 138 + } + ], + "outputs": [ + { + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 132 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "Flux2Scheduler" + }, + "widgets_values": [ + 20, + 1024, + 1024 + ] + }, + { + "id": 39, + "type": "ReferenceLatent", + "pos": [ + 351.86683673369737, + 49.883904926480916 + ], + "size": [ + 197.712890625, + 46 + ], + "flags": {}, + "order": 18, + "mode": 4, + "inputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 118 + }, + { + "name": "latent", + "shape": 7, + "type": "LATENT", + "link": 121 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 129 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "ReferenceLatent" + }, + "widgets_values": [] + }, + { + "id": 47, + "type": "EmptyFlux2LatentImage", + "pos": [ + 480.6795224346065, + 447.6751719515771 + ], + "size": [ + 270, + 106 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 135 + }, + { + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 137 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 131 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "EmptyFlux2LatentImage" + }, + "widgets_values": [ + 1024, + 1024, + 1 + ] + }, + { + "id": 51, + "type": "PrimitiveNode", + "pos": [ + 110, + 740 + ], + "size": [ + 210, + 82 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "INT", + "type": "INT", + "widget": { + "name": "height" + }, + "links": [ + 137, + 138 + ] + } + ], + "title": "height", + "properties": { + "Run widget replace on values": false + }, + "widgets_values": [ + 1024, + "fixed" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 50, + "type": "PrimitiveNode", + "pos": [ + 110, + 620 + ], + "size": [ + 210, + 82 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "INT", + "type": "INT", + "widget": { + "name": "width" + }, + "links": [ + 135, + 136 + ] + } + ], + "title": "width", + "properties": { + "Run widget replace on values": false + }, + "widgets_values": [ + 1024, + "fixed" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 49, + "type": "Note", + "pos": [ + 368.29086262543825, + -205.44885961550833 + ], + "size": [ + 210, + 112.67995780780103 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Unbypass (CTRL-B) the ReferenceLatent nodes to give ref images. Chain more of them to give more images." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 25, + "type": "RandomNoise", + "pos": [ + 480, + 600 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "NOISE", + "type": "NOISE", + "links": [ + 37 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "RandomNoise" + }, + "widgets_values": [ + 391258831499701, + "randomize" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 10, + "type": "VAELoader", + "pos": [ + 48, + 432 + ], + "size": [ + 311.81634521484375, + 60.429901123046875 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "slot_index": 0, + "links": [ + 12, + 120, + 127 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "flux2-vae.safetensors" + ] + }, + { + "id": 38, + "type": "CLIPLoader", + "pos": [ + 50, + 270 + ], + "size": [ + 298.1818181818182, + 106 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 117 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "CLIPLoader" + }, + "widgets_values": [ + "mistral_3_small_flux2_fp8.safetensors", + "flux2", + "default" + ] + }, + { + "id": 9, + "type": "SaveImage", + "pos": [ + 1155, + 196 + ], + "size": [ + 985.3012084960938, + 1060.3828125 + ], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 9 + } + ], + "outputs": [], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73" + }, + "widgets_values": [ + "ComfyUI" + ] + }, + { + "id": 46, + "type": "LoadImage", + "pos": [ + -470, + -380 + ], + "size": [ + 274.080078125, + 314 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 128 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "girltshirt.png", + "image" + ] + }, + { + "id": 12, + "type": "UNETLoader", + "pos": [ + 48, + 144 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 133 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "UNETLoader" + }, + "widgets_values": [ + "flux2-dev.safetensors", + "default" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 42, + "type": "LoadImage", + "pos": [ + -466.82693606301376, + -3.7311758283972303 + ], + "size": [ + 274.080078125, + 314 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 123 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "fahdhd.png", + "image" + ] + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 384, + 240 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 117 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 41 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.73", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "A romantic couple standing face to face holding hands tenderly, the woman with long curly hair wearing a fitted white t-shirt and the man in a casual button-up shirt, looking deeply into each other's eyes with genuine affection and warm smiles, soft golden hour sunlight streaming through sheer curtains behind them creating a dreamy backlit glow and rim lighting, cozy modern living room with soft bokeh in the background, their intertwined hands in sharp focus showing the intimate connection, shot with Sony A7IV with 85mm f/1.4 lens at f/2.0, shallow depth of field, cinematic color grading with warm amber tones, natural skin tones, photorealistic detail, film grain texture" + ], + "color": "#232", + "bgcolor": "#353" + } + ], + "links": [ + [ + 9, + 8, + 0, + 9, + 0, + "IMAGE" + ], + [ + 12, + 10, + 0, + 8, + 1, + "VAE" + ], + [ + 19, + 16, + 0, + 13, + 2, + "SAMPLER" + ], + [ + 24, + 13, + 0, + 8, + 0, + "LATENT" + ], + [ + 30, + 22, + 0, + 13, + 1, + "GUIDER" + ], + [ + 37, + 25, + 0, + 13, + 0, + "NOISE" + ], + [ + 41, + 6, + 0, + 26, + 0, + "CONDITIONING" + ], + [ + 117, + 38, + 0, + 6, + 0, + "CLIP" + ], + [ + 118, + 26, + 0, + 39, + 0, + "CONDITIONING" + ], + [ + 120, + 10, + 0, + 40, + 1, + "VAE" + ], + [ + 121, + 40, + 0, + 39, + 1, + "LATENT" + ], + [ + 122, + 41, + 0, + 40, + 0, + "IMAGE" + ], + [ + 123, + 42, + 0, + 41, + 0, + "IMAGE" + ], + [ + 125, + 44, + 0, + 43, + 1, + "LATENT" + ], + [ + 126, + 45, + 0, + 44, + 0, + "IMAGE" + ], + [ + 127, + 10, + 0, + 44, + 1, + "VAE" + ], + [ + 128, + 46, + 0, + 45, + 0, + "IMAGE" + ], + [ + 129, + 39, + 0, + 43, + 0, + "CONDITIONING" + ], + [ + 130, + 43, + 0, + 22, + 1, + "CONDITIONING" + ], + [ + 131, + 47, + 0, + 13, + 4, + "LATENT" + ], + [ + 132, + 48, + 0, + 13, + 3, + "SIGMAS" + ], + [ + 133, + 12, + 0, + 22, + 0, + "MODEL" + ], + [ + 135, + 50, + 0, + 47, + 0, + "INT" + ], + [ + 136, + 50, + 0, + 48, + 0, + "INT" + ], + [ + 137, + 51, + 0, + 47, + 1, + "INT" + ], + [ + 138, + 51, + 0, + 48, + 1, + "INT" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 1.2492220224173072, + "offset": [ + -209.03795093046406, + -353.82551610506295 + ] + }, + "frontendVersion": "1.30.6", + "groupNodes": {} + }, + "version": 0.4 +} \ No newline at end of file diff --git a/gandhara_dataset.jsonl b/gandhara_dataset.jsonl new file mode 100644 index 0000000..d28786a --- /dev/null +++ b/gandhara_dataset.jsonl @@ -0,0 +1,94 @@ +{"conversations": [{"from": "human", "value": "What was the Gandhara civilization?"}, {"from": "gpt", "value": "Gandhara was one of the most remarkable ancient civilizations in South Asia, flourishing in the region that now encompasses northwestern Pakistan and eastern Afghanistan. It was centered in the Peshawar Valley and the Swat Valley, with its heartland along the Kabul and Indus rivers. Gandhara thrived roughly between the 6th century BCE and the 11th century CE, though its cultural golden age is most associated with the Kushan period between the 1st and 5th centuries CE. It was a crossroads civilization where Indian, Persian, Greek, Central Asian, and later Roman cultural influences converged, producing one of the most distinctive artistic and religious traditions in the ancient world. Gandhara is best known as a major center of Buddhist learning, philosophy, and art, and it was from here that Buddhism spread along the Silk Road into Central Asia and eventually China."}]} +{"conversations": [{"from": "human", "value": "Where exactly was Gandhara located?"}, {"from": "gpt", "value": "Gandhara occupied a strategically vital region at the crossroads of South Asia and Central Asia. Its core territory was the Peshawar Valley in what is now Khyber Pakhtunkhwa province of Pakistan, along with the Swat Valley to the north and the Kabul Valley extending into modern Afghanistan. The region is bounded by the Hindu Kush mountains to the west and north, the Indus River to the east, and the Khyber Pass — one of the most historically significant mountain passes in the world — connecting it to Afghanistan and Central Asia. Major cities included Pushkalavati (modern Charsadda), Taxila (Takshashila) to the southeast, and Peshawar itself, which was known as Purushapura during the Kushan period. This geographic position made Gandhara the gateway between the Indian subcontinent and the rest of Asia, which profoundly shaped its multicultural character."}]} +{"conversations": [{"from": "human", "value": "What is Gandharan art and why is it significant?"}, {"from": "gpt", "value": "Gandharan art is one of the most distinctive and historically important artistic traditions of the ancient world. It emerged primarily between the 1st and 5th centuries CE and is most famous for producing the first anthropomorphic representations of the Buddha in human form. Before Gandharan artists began depicting the Buddha as a human figure, Buddhist art used symbols such as footprints, an empty throne, or a wheel to represent him. Gandharan art fused Hellenistic artistic conventions — inherited from the Greek kingdoms established after Alexander's campaigns — with Indian Buddhist iconography and Central Asian influences. The result was a unique visual language: Buddha figures with wavy Greco-Roman hair, toga-like robes with realistic drapery, Apollo-like facial features, yet distinctly Buddhist hand gestures (mudras) and iconographic attributes. This artistic tradition was largely executed in schist, stucco, and terracotta, and it profoundly influenced Buddhist art across Central Asia, China, Korea, and Japan as Buddhism traveled the Silk Road."}]} +{"conversations": [{"from": "human", "value": "Who were the Kushans and what role did they play in Gandhara?"}, {"from": "gpt", "value": "The Kushans were a Central Asian people who rose to power in the 1st century CE to become one of the most powerful empires of the ancient world. They originated from the Yuezhi confederation that had migrated from northwestern China after being displaced by the Xiongnu. Under their greatest emperor, Kanishka I, who ruled from around 127 CE, the Kushan Empire stretched from the Aral Sea in the north to the Gangetic Plain in the east and the Arabian Sea to the south. Gandhara was the cultural and economic heartland of the Kushan Empire, and Purushapura (Peshawar) served as one of its principal capitals. The Kushans were remarkable for their religious tolerance and syncretic culture — they patronized Buddhism, Zoroastrianism, Hinduism, and even Greco-Roman cults simultaneously. Their patronage of Buddhism was especially consequential: Kanishka is traditionally credited with convening the Fourth Buddhist Council in Kashmir and commissioning enormous building projects including the famous Kanishka stupa in Peshawar. Under Kushan rule, Gandhara became the wealthiest and most cosmopolitan region of ancient South Asia, and Silk Road trade brought immense prosperity that funded the great monasteries and art workshops."}]} +{"conversations": [{"from": "human", "value": "What was the role of Alexander the Great in Gandhara's history?"}, {"from": "gpt", "value": "Alexander the Great's invasion of the Gandhara region in 327-326 BCE was a pivotal moment that permanently altered the cultural trajectory of the civilization. Alexander crossed the Hindu Kush mountains, conquered the Kabul Valley, and then moved through the Swat Valley, where he encountered fierce resistance from the mountain tribes. He founded several cities — some of which bore his name — and established Greek garrisons throughout the region. After crossing the Indus River, he encountered the kingdom of Taxila, whose ruler Ambhi submitted to him, and then fought the famous Battle of the Hydaspes (Jhelum River) against King Porus. Although Alexander himself withdrew westward after his army refused to march further east, the consequences of his campaigns were profound and long-lasting. He left behind Greek-Macedonian settlers, administrators, and garrison troops. After his death in 323 BCE, the Seleucid Empire inherited these eastern territories, and subsequently, a series of independent Greek kingdoms — most notably the Indo-Greek Kingdom — controlled Gandhara for nearly two centuries. This sustained Greek presence planted the Hellenistic cultural seeds that would later blossom into the distinctive fusion of Gandharan art."}]} +{"conversations": [{"from": "human", "value": "What was the Indo-Greek Kingdom and its connection to Gandhara?"}, {"from": "gpt", "value": "The Indo-Greek Kingdom was a remarkable Hellenistic state that ruled Gandhara and adjoining regions from approximately 180 BCE to around 10 CE, making it one of the longest-lasting Greek political entities outside of the Mediterranean world. It was founded when Demetrius I, king of Bactria, expanded south across the Hindu Kush into the Indian subcontinent. At its height, the Indo-Greek Kingdom encompassed most of modern Pakistan and parts of northwestern India. The Indo-Greek kings are fascinating historical figures who genuinely synthesized Greek and Indian cultures rather than merely imposing one upon the other. Their coinage is emblematic of this fusion — coins typically bore Greek legends and portraits on one side and Indian languages (Kharosthi script) with local iconography on the other. The most celebrated Indo-Greek king was Menander I (Milinda), who ruled around 155-130 BCE and is remembered in Buddhist tradition as a great patron of the faith. The Milindapanha (Questions of Milinda) is a famous Pali Buddhist text recording philosophical dialogues between Menander and the Buddhist monk Nagasena. The Indo-Greek presence in Gandhara created the cultural framework — the familiarity with Hellenistic artistic conventions alongside Buddhist religious patronage — that would later produce the distinctive Gandharan artistic style."}]} +{"conversations": [{"from": "human", "value": "What was Taxila and why was it important?"}, {"from": "gpt", "value": "Taxila, known in ancient Sanskrit as Takshashila, was one of the greatest cities of the ancient world and served as the intellectual and commercial capital of the broader Gandhara region for over a millennium. Located about 35 kilometers northwest of modern Islamabad in Pakistan, Taxila occupied a strategic position at the junction of three major trade routes: the royal road from the Mauryan capital Pataliputra in the east, the route from Kashmir and Central Asia to the north, and the road to the ports of the Arabian Sea to the south. Taxila is mentioned in both the Mahabharata and the Ramayana, and classical Greek and Roman authors including Strabo and Arrian wrote of its magnificence. It was home to one of the ancient world's great universities, where students came from across Asia to study medicine, law, military science, astronomy, and philosophy — the physician Charaka and the political philosopher Chanakya (Kautilya) are said to have been associated with Taxila. The city reached its zenith under the Mauryan emperor Ashoka in the 3rd century BCE and again under Kushan rule. Archaeological excavations at Taxila, conducted extensively by Sir John Marshall in the early 20th century, have revealed three distinct city sites — Bhir Mound, Sirkap, and Sirsukh — reflecting successive periods of occupation from the Achaemenid through the Kushan periods. Taxila was designated a UNESCO World Heritage Site in 1980."}]} +{"conversations": [{"from": "human", "value": "What was the relationship between Gandhara and the Achaemenid Persian Empire?"}, {"from": "gpt", "value": "The relationship between Gandhara and the Achaemenid Persian Empire represents one of the earliest documented chapters in Gandhara's recorded history. Around 518 BCE, the Persian emperor Darius I conquered Gandhara and incorporated it as a satrapy (provincial administrative unit) of the Achaemenid Empire. Gandhara is mentioned in the Behistun Inscription of Darius I as one of the provinces of his empire, and it appears again in the lists of subject peoples inscribed at Persepolis. Under Achaemenid rule, Gandhara was reportedly one of the wealthiest satrapies, contributing significant tribute in gold dust to the Persian treasury — Herodotus records that Gandhara paid a tribute of 170 talents of gold annually, the highest of any satrapy. The Persian administrative presence introduced Aramaic as an administrative language and the Aramaic script, which later evolved into the Kharosthi script used extensively for writing Gandhari language across the region. Achaemenid artistic motifs — particularly in stone carving, architectural decoration, and metalwork — also left their mark on Gandharan aesthetics. Persian rule lasted until Alexander the Great's defeat of Darius III in 330 BCE brought the Achaemenid Empire to an end, though the cultural influences of this Persian period persisted long afterward."}]} +{"conversations": [{"from": "human", "value": "What was the Mauryan Empire's impact on Gandhara?"}, {"from": "gpt", "value": "The Mauryan Empire's engagement with Gandhara was transformative, particularly through the reign of Emperor Ashoka, who ruled from approximately 268 to 232 BCE. Gandhara came under Mauryan control when Chandragupta Maurya, guided by his brilliant minister Chanakya, expanded northwestward and negotiated with Seleucus I Nicator after Alexander's death, receiving the trans-Indus territories including Gandhara in exchange for 500 war elephants around 305 BCE. But it was Ashoka who left the most enduring mark. After his conversion to Buddhism following the bloody Kalinga War, Ashoka became the greatest royal patron Buddhism had ever known. He sent Buddhist missionaries throughout his empire and beyond, including to Gandhara. He erected rock edicts in the Gandhara region — inscribed in both Kharosthi and Aramaic scripts — that proclaimed his dhamma (moral law) and encouraged ethical conduct. Ashoka also reportedly built numerous stupas (Buddhist reliquary mounds) throughout Gandhara, and Buddhist tradition credits him with enshrining relics of the Buddha in 84,000 stupas across the Buddhist world. The Mauryan period thus established Gandhara as a firmly Buddhist landscape of monasteries, stupas, and religious communities, laying the institutional and spiritual foundation upon which later Kushan patronage would build so magnificently."}]} +{"conversations": [{"from": "human", "value": "What is the Kharosthi script and its connection to Gandhara?"}, {"from": "gpt", "value": "Kharosthi is one of the two major ancient scripts of the Indian subcontinent — the other being Brahmi — and it has its deepest roots in the Gandhara region. Written from right to left (unlike Brahmi, which runs left to right), Kharosthi is believed to have been derived from the Aramaic script introduced during Achaemenid Persian rule over Gandhara in the 6th-5th centuries BCE. This derivation from Aramaic — itself a Semitic script — explains its right-to-left directionality, which is unique among ancient South Asian writing systems. Kharosthi was the primary script used to write Gandhari, the Prakrit language of Gandhara, and it appears on coins, rock inscriptions, and the Gandharan Buddhist manuscripts that represent some of the oldest surviving Buddhist texts. The script was in active use from roughly the 3rd century BCE to the 4th century CE, after which it gradually fell out of use and was completely forgotten. Kharosthi remained undeciphered until the brilliant work of James Prinsep in 1837, who cracked the script using bilingual coin legends. Gandharan Buddhist manuscripts written in Kharosthi on birchbark scrolls — now housed in collections in the British Library, the Bibliothèque nationale de France, and the University of Washington — are of immense importance for the study of early Buddhism and represent some of the oldest surviving Buddhist literature in the world."}]} +{"conversations": [{"from": "human", "value": "What were the major Buddhist monasteries of Gandhara?"}, {"from": "gpt", "value": "Gandhara was home to some of the most magnificent Buddhist monastic complexes in the ancient world, drawing pilgrims, scholars, and monks from across Asia. Among the most significant was Dharmarajika at Taxila, one of the oldest Buddhist establishments in the region, traditionally founded during the Mauryan period and featuring a grand stupa with a diameter of nearly 15 meters surrounded by numerous votive stupas and monastic cells. Mohra Moradu and Jaulian, also at Taxila, were particularly well-preserved monastic complexes featuring elaborate stucco sculpture decorating their stupas and assembly halls. In the Swat Valley, the monastery at Butkara I was one of the most important Buddhist sanctuaries, in continuous use from the Mauryan through the Hindu Shahi periods. The Chinese Buddhist pilgrims who visited Gandhara left invaluable descriptions of the monastic landscape: Faxian, who visited around 400 CE, described thousands of monks residing in Gandharan monasteries, while Xuanzang (Hsuan-tsang), who came in 630 CE, described over a thousand monasteries though many were already in decline. The great Kanishka stupa at Purushapura (Peshawar) was reportedly among the tallest structures in the ancient world — Chinese sources describe it as rising to a height of 400 feet or more, though these figures may be exaggerated. These monasteries were not merely religious establishments but served as centers of scholarship, art production, medicine, and international diplomacy."}]} +{"conversations": [{"from": "human", "value": "Who was Kanishka I and why is he important to Gandhara?"}, {"from": "gpt", "value": "Kanishka I was the greatest emperor of the Kushan dynasty and one of the most consequential rulers in the history of Gandhara and Buddhism. He ruled from approximately 127 CE (though the exact date remains a subject of scholarly debate) and his empire at its peak extended from the Aral Sea in Central Asia to Pataliputra (modern Patna) in the east and the Arabian Sea in the south. Kanishka made Purushapura (modern Peshawar) his principal winter capital, which he transformed into one of the grandest cities of the ancient world. His significance to Gandhara and Buddhism is multifaceted. He is traditionally credited with convening the Fourth Buddhist Council in Kashmir, which was an important synod that produced commentaries on the Abhidharma and helped consolidate Sarvastivadin Buddhist doctrine. He was a lavish patron of Buddhist art and architecture — the Kanishka stupa at Peshawar, housing relics of the Buddha, was described by Xuanzang as one of the wonders of the world. Kanishka's coinage is remarkable for its religious eclecticism, depicting deities from the Greek, Iranian, Hindu, and Buddhist pantheons, reflecting the cosmopolitan character of his empire. He also patronized art, literature, and scholarship, and the great Buddhist philosopher Ashvaghosha is associated with his court. Kanishka's reign represents the absolute zenith of Gandharan civilization — politically powerful, economically prosperous, and culturally creative."}]} +{"conversations": [{"from": "human", "value": "What was the Silk Road's role in Gandharan civilization?"}, {"from": "gpt", "value": "The Silk Road was not merely a trade route for Gandhara — it was the lifeblood of the civilization. Gandhara occupied perhaps the most strategically vital node of the entire Silk Road network, positioned at the junction where the southern branch from India connected with the main east-west routes through Central Asia. The Khyber Pass, the Bolan Pass, and the mountain routes through the Swat Valley and into the Pamirs all converged in or near Gandhara, making it an unavoidable transit point for goods, peoples, and ideas moving between China, India, Persia, and the Roman Mediterranean world. The commercial consequences were enormous: Gandhara became fabulously wealthy, and this wealth directly funded the construction of the great monasteries, stupas, and art workshops. Chinese silk, Roman glass, Indian spices, Bactrian horses, Central Asian lapis lazuli, and countless other goods passed through Gandharan markets. But the Silk Road's most consequential cargo was not material — it was ideas. Buddhism traveled the Silk Road from Gandhara into Central Asia and China, and Gandharan monks, manuscripts, and artistic models were the primary vehicles of this transmission. The Buddhist cave complexes along the Silk Road — at Bamiyan in Afghanistan, Kizil in Xinjiang, and Dunhuang in western China — all show the profound influence of Gandharan artistic and theological traditions. Without the Silk Road, Gandhara could not have become the great civilizational bridge that it was."}]} +{"conversations": [{"from": "human", "value": "How did Buddhism reach China from Gandhara?"}, {"from": "gpt", "value": "The transmission of Buddhism from Gandhara to China was one of the most consequential cultural transfers in human history, and Gandhara served as the primary staging ground and intellectual engine of this process. Buddhism began moving into Central Asia during the Mauryan period, but it was under Kushan patronage — when Gandhara was at its height — that the transmission became a sustained, institutionalized process. Gandharan missionaries and monks traveled the Silk Road north and east into Bactria, Parthia, Sogdia, and then the oasis kingdoms of the Tarim Basin (modern Xinjiang) — kingdoms like Khotan, Kucha, and Turfan that became deeply Buddhist cultures and served as relay stations for onward transmission into China. The Gandhari language and Kharosthi script were used for Buddhist texts in Central Asia well into the early centuries CE. Han Dynasty Chinese sources record the arrival of Buddhist monks in Luoyang (then capital of China) around 67 CE, and the White Horse Temple traditionally marks the beginning of Buddhism in China. Many of the earliest Buddhist translators in China were Parthian, Sogdian, Kushan, or Gandharan monks. The artistic language of early Chinese Buddhism was substantially Gandharan — the Buddha image type, the iconographic conventions for bodhisattvas, the narrative relief carvings all derive from Gandharan models. The Gandharan Buddhist manuscripts in Kharosthi script, some of which have been found at sites in Afghanistan and Central Asia, testify to the textual transmission that accompanied the artistic one."}]} +{"conversations": [{"from": "human", "value": "What was the Gandhari language?"}, {"from": "gpt", "value": "Gandhari was the Middle Indo-Aryan (Prakrit) language spoken in the Gandhara region during the ancient and early medieval periods. It belongs to the northwestern branch of the Indo-Aryan language family and is closely related to other Prakrits such as Pali and the Asokan Prakrits found in inscriptions across South Asia. Gandhari was the primary vernacular of the Gandhara region and served as an important Buddhist literary and religious language. What makes Gandhari particularly significant is that the Gandharan Buddhist manuscripts — written in Gandhari using the Kharosthi script on birchbark scrolls — represent some of the oldest surviving Buddhist texts ever discovered. These manuscripts, dated to approximately the 1st century BCE to the 3rd century CE, predate the Pali Canon manuscripts from Sri Lanka by many centuries and offer an invaluable window into early Buddhist textual traditions. The Gandhari Buddhist manuscripts were rediscovered in the late 20th century — some purchased from antiquities markets in Pakistan and Afghanistan — and scholarly work on them, led by scholars such as Richard Salomon at the University of Washington, has revolutionized our understanding of early Buddhism. Gandhari also served as a lingua franca along the Silk Road in the early centuries CE, and Gandhari inscriptions and texts have been found as far afield as Xinjiang in western China, testifying to Gandhara's far-reaching cultural influence."}]} +{"conversations": [{"from": "human", "value": "What materials were used in Gandharan sculpture?"}, {"from": "gpt", "value": "Gandharan sculptors worked in several distinct materials, each associated with different regions, time periods, and intended uses. The most celebrated Gandharan sculptures are carved in schist, a dark grey-green metamorphic stone found in the mountain regions of the Swat Valley and surrounding areas. Schist allowed for relatively fine carving and its dark color gave Gandharan sculptures their characteristic solemn appearance. Schist was the preferred medium for large-scale architectural relief panels depicting the life of the Buddha, and for freestanding statues. Stucco — a lime plaster mixture — was extensively used in the Peshawar Valley and became increasingly dominant in the later Gandharan period (3rd-5th centuries CE). Stucco allowed for rapid production, could be molded over a clay or rubble core, and was suitable for polychrome painting, making finished sculptures much more vivid than the grey schist pieces appear today after the paint has long since vanished. Terracotta was used for smaller votive figurines and decorative elements. Some of the finest Gandharan metalwork has also survived, including bronze statuettes of the Buddha and bodhisattvas. Ivory carving was practiced as well, though far fewer ivory objects have survived. The geographical distribution of materials reflects regional workshops: schist sculpture is concentrated in the Swat Valley and Taxila regions, while stucco is most associated with the Peshawar Valley and sites like Hadda in Afghanistan."}]} +{"conversations": [{"from": "human", "value": "What is the Buddha image in Gandharan art and how did it first appear?"}, {"from": "gpt", "value": "The appearance of the first anthropomorphic representations of the Buddha — depicting him as a human figure rather than through symbols — is one of the most significant developments in the history of religious art, and Gandhara (along with Mathura in northern India) is at the center of this story. In the earliest period of Buddhist art, roughly from the 3rd to 1st centuries BCE, the Buddha was represented only through symbols: a footprint, a parasol, a Bodhi tree, a wheel (dharmachakra), or an empty throne. This aniconic convention is thought to reflect the belief that the Buddha, having achieved parinirvana, could not be captured in physical form. By the 1st-2nd centuries CE, both the Gandharan school and the Mathura school in northern India began independently producing anthropomorphic Buddha images. The Gandharan Buddha image was heavily influenced by Hellenistic sculptural conventions: the face recalls Apollo or Helios with its wavy hair, idealized features, and serene expression; the body is clothed in a toga-like robe with naturalistic drapery folds rendered in the Greco-Roman manner; the figure stands with a slight Greek contrapposto. Yet the iconographic attributes are distinctly Buddhist: the ushnisha (cranial protuberance symbolizing wisdom), the urna (dot between the eyebrows), elongated earlobes, and the various mudras (hand gestures) signifying different aspects of the Buddha's teaching. This fusion of Hellenistic form with Buddhist content created an artistic template that, transmitted along the Silk Road, became the foundation of Buddhist iconography across all of Asia."}]} +{"conversations": [{"from": "human", "value": "Who were the Chinese Buddhist pilgrims who visited Gandhara?"}, {"from": "gpt", "value": "Several Chinese Buddhist pilgrims made the arduous overland journey to Gandhara and northwestern India, and their detailed travel accounts are among the most valuable historical sources we have for the region. The earliest and most celebrated is Faxian (Fa-hien), who traveled from China through Central Asia to India between 399 and 414 CE. Faxian's account describes a prosperous Buddhist landscape in Gandhara with numerous monasteries housing thousands of monks, grand stupas revered across the Buddhist world, and a thriving religious culture. He described the great Kanishka stupa at Peshawar in admiring terms and provided details of religious festivals and monastic practices. The most prolific and historically important pilgrim was Xuanzang (Hsuan-tsang or Huen Tsang), who traveled to India between 629 and 645 CE. His massive account, the Great Tang Records on the Western Regions (Da Tang Xiyu Ji), provides extraordinarily detailed descriptions of every kingdom, city, monastery, and stupa he encountered. By Xuanzang's time, Gandhara was in visible decline — he described hundreds of monasteries in ruins and greatly reduced monastic populations — but he still recorded numerous sacred sites associated with the Buddha's previous lives (jataka stories) and provided measurements and descriptions of the great monuments. A third important pilgrim was Yijing (I-ching), who traveled in the late 7th century and described the state of Buddhism in India and Southeast Asia. These accounts, cross-referenced with archaeology, remain indispensable for reconstructing the history of Gandharan Buddhism."}]} +{"conversations": [{"from": "human", "value": "What were the major trade goods that passed through Gandhara?"}, {"from": "gpt", "value": "Gandhara's position as the nexus of the Silk Road made it a great emporium where an extraordinary variety of goods from across the known world converged. From China came silk textiles — the commodity that gave the Silk Road its name — as well as lacquerware, bronze objects, and later paper and porcelain. These Chinese goods were highly prized throughout the ancient world and commanded premium prices in the markets of Gandhara, Persia, and Rome. From India to the south and east came spices (pepper, cardamom, cinnamon), cotton textiles, indigo dye, precious stones (diamonds, rubies, sapphires), and ivory. From Central Asia and the steppes came horses — particularly the prized Ferghana or Bactrian horses, essential for military power and highly valued throughout Asia — as well as furs, amber, and nomadic metalwork. From Afghanistan came lapis lazuli, the brilliant blue semi-precious stone from the Badakhshan mines that had been traded since the Neolithic and was prized from Egypt to China. From Persia and the west came glass (Roman glass vessels have been found at Gandharan and Taxila sites), gold and silver coinage, Mediterranean coral, and fine textiles. Gandhara itself exported cotton cloth, indigo, and various agricultural products of the fertile Peshawar plain. The wealth generated by this trade — taxed by successive rulers at the key mountain passes and river crossings — was the economic foundation that made the great monasteries, stupas, and art workshops of Gandhara possible."}]} +{"conversations": [{"from": "human", "value": "What happened to Gandhara and why did it decline?"}, {"from": "gpt", "value": "The decline of Gandharan civilization was gradual, complex, and driven by multiple overlapping causes rather than any single catastrophic event. The first major blow came from the Kidarite Huns, who invaded from Central Asia in the late 4th century CE and disrupted Kushan authority. Far more devastating were the Hephthalites (White Huns), who swept through the region in the late 5th century CE with tremendous destructive force. Xuanzang's account from 630 CE describes monasteries in ruins and greatly reduced monastic populations, and archaeological evidence at sites like Taxila shows destruction layers consistent with violent assault. However, the Hephthalite devastation, while severe, was not the end. Buddhism persisted in Gandhara under subsequent rulers, including the Turki Shahis and Hindu Shahis. The fundamental transformation came with the Arab Muslim conquests that began reaching the region in the 7th-8th centuries, and more definitively with the campaigns of Mahmud of Ghazni in the early 11th century, who systematically destroyed Buddhist institutions in his path. The shift of Silk Road trade patterns, the drying up of royal patronage for Buddhist institutions, the gradual reconversion of the population to other faiths, and the economic disruption caused by political instability all contributed. By the 10th-11th centuries, Buddhism had essentially disappeared from the Gandhara region, monasteries were abandoned, and the great artistic and intellectual traditions of Gandhara were extinguished — though their legacy lived on in the Buddhist art and literature of Central Asia, China, Korea, and Japan."}]} +{"conversations": [{"from": "human", "value": "What is the Swat Valley's significance in Gandharan history?"}, {"from": "gpt", "value": "The Swat Valley — known in ancient times as Udyana, meaning 'garden' or 'pleasure ground' — was one of the most sacred and prosperous regions within the broader Gandharan cultural sphere. Nestled in the mountains of what is now Khyber Pakhtunkhwa in Pakistan, Swat was renowned in Buddhist tradition as a land of exceptional natural beauty where the Buddha had visited in previous lives (according to jataka stories) and where Padmasambhava, the founder of Tibetan Buddhism, was born in the 8th century CE. Swat was home to a remarkably dense concentration of Buddhist monuments: archaeological surveys have identified thousands of stupas, rock carvings, and monastic sites throughout the valley, making it arguably the most intensively Buddhist landscape in the ancient world. The region's Buddhist rock carvings — depicting the Buddha, bodhisattvas, and devotional scenes carved directly into riverside boulders — are particularly notable, as are the numerous large Buddhas carved in relief on cliff faces. The Italian Archaeological Mission to Pakistan, which has worked in Swat since the 1950s, has excavated numerous important sites including Butkara I, Saidu Sharif, and Barikot, revealing continuous occupation from the Bronze Age through the medieval period. The high-quality dark schist available in the Swat mountains also made the valley a major center of Gandharan sculptural production, and Swat-type schist sculptures are among the most technically accomplished examples of Gandharan art."}]} +{"conversations": [{"from": "human", "value": "What is the Peshawar Museum's collection of Gandharan art?"}, {"from": "gpt", "value": "The Peshawar Museum, established in 1906 during the British colonial period, houses one of the world's finest collections of Gandharan art and is the primary repository for sculptures and artifacts excavated from sites in the Peshawar Valley and surrounding regions. The museum's collection encompasses thousands of objects including schist and stucco sculptures of the Buddha and bodhisattvas, relief panels depicting scenes from the life of the Buddha and jataka stories, architectural fragments from monasteries and stupas, coins from the Greek, Parthian, Kushan, and subsequent periods, and everyday objects that illuminate the material culture of ancient Gandhara. Among the highlights of the collection are extraordinary life-size stucco Buddha heads of haunting beauty, intricate narrative relief panels carved in schist showing the Buddha's birth, enlightenment, first sermon, and parinirvana, and a remarkable series of images depicting the emaciated Buddha during his period of extreme asceticism — a distinctly Gandharan iconographic type rarely found in other Buddhist artistic traditions. The Peshawar Museum was badly damaged during periods of political instability in the region, and significant portions of its collection were looted or damaged, though substantial conservation and restoration efforts have been undertaken. Other major repositories of Gandharan art include the Lahore Museum (which holds the famous Fasting Buddha), the Taxila Museum, the National Museum of Pakistan in Karachi, the British Museum, the Victoria and Albert Museum, the Guimet Museum in Paris, and several major American museum collections."}]} +{"conversations": [{"from": "human", "value": "What does Gandharan art tell us about the life of the Buddha?"}, {"from": "gpt", "value": "Gandharan sculptural art is among our richest visual sources for the biographical narrative of the historical Buddha Shakyamuni as understood and elaborated in the early centuries CE. Gandharan artists created extensive narrative relief cycles — carved on the drum and base of stupas, on the walls of monastic assembly halls, and as individual panels — that depicted the major episodes of the Buddha's life with remarkable detail and dramatic intensity. The Nativity scene shows the bodhisattva Siddhartha emerging from the right side of his mother Queen Maya as she grasps a branch of the sala tree, with divine attendants present. The Great Departure depicts the young prince Siddhartha leaving his palace at night on horseback, with the horse's hooves held aloft by attendant spirits so as not to wake the sleeping household. The Temptation of Mara shows the future Buddha seated under the Bodhi tree resisting the assaults of the demon Mara and his armies. The First Sermon at Deer Park near Varanasi is depicted with the Buddha making the dharmachakra mudra (turning the wheel of the law) flanked by disciples and devotees. The Parinirvana shows the Buddha's final passing, lying on his right side in a forest grove surrounded by grieving monks and celestial beings. Particularly distinctive to the Gandharan tradition is the series of Fasting Buddha images showing Siddhartha during his period of extreme asceticism before enlightenment — the body rendered as an emaciated figure with bones and tendons clearly visible, yet the face maintaining serene spiritual dignity. These narrative cycles served didactic purposes, educating the lay community about the life of the founder and providing visual foci for devotion and meditation."}]} +{"conversations": [{"from": "human", "value": "What were the Gandharan Buddhist manuscripts and why are they important?"}, {"from": "gpt", "value": "The Gandharan Buddhist manuscripts are a collection of ancient Buddhist texts written in the Gandhari language using the Kharosthi script, primarily on birchbark scrolls, that represent the oldest surviving Buddhist manuscripts ever discovered. The manuscripts date from approximately the 1st century BCE to the 3rd century CE, making them roughly five hundred to a thousand years older than the Pali manuscripts from Sri Lanka that had previously been considered the oldest surviving Buddhist texts. The manuscripts began coming to scholarly attention in the late 1990s when a group of them appeared on the antiquities market, having apparently been discovered somewhere in eastern Afghanistan. The British Library acquired a major group of these manuscripts in 1994, and other groups entered collections in Norway, the Schøyen Collection in Oslo, and university libraries in the United States including the University of Washington. The scholarly work of analyzing and editing these manuscripts, led by Professor Richard Salomon and colleagues in the British Library Gandharan Manuscripts Project, has produced extraordinary insights. The texts include sutras (discourses attributed to the Buddha), Abhidharma texts (philosophical analysis), and collections that have no exact parallel in the Pali or Sanskrit Buddhist canons, suggesting that the Gandharan Buddhist tradition had its own distinctive literary heritage. The manuscripts provide evidence that Buddhist textual traditions were more varied and less standardized in the early centuries than previously assumed, and they shed new light on the transmission of Buddhism along the Silk Road from Gandhara into Central Asia and China."}]} +{"conversations": [{"from": "human", "value": "How did Hellenistic influence shape Gandharan art?"}, {"from": "gpt", "value": "The Hellenistic influence on Gandharan art was pervasive and fundamental, shaping not only the stylistic vocabulary but the very conception of how sacred figures could be represented. This influence was not a superficial borrowing but the result of centuries of Hellenistic political presence and cultural interaction in the region, beginning with Alexander's campaigns and sustained through the Seleucid and Indo-Greek kingdoms. The most obvious Hellenistic borrowings appear in the treatment of the human figure: Gandharan Buddhas and bodhisattvas display the idealized facial features — straight nose, heavy-lidded eyes, wavy hair — associated with Apollo and other Hellenistic divine figures. The toga-like monastic robe (sanghati) worn by Gandharan Buddha figures is rendered with the realistic, heavy drapery folds characteristic of Hellenistic and Roman sculpture, quite unlike the more schematic treatment of clothing in Indian Mathura sculpture or Southeast Asian Buddhist art. The use of contrapposto — the slight weight shift that animates the standing figure — derives from Greek sculptural practice. Architectural elements of Gandharan monasteries and stupas show Corinthian capitals, acanthus leaf decoration, and other classical motifs. Narrative compositional conventions — multiple figures arranged in space, the use of gesture and facial expression to convey emotion, the depiction of crowd scenes — reflect Hellenistic visual storytelling. Some Gandharan panels include unmistakably Dionysian figures — wine-bearing putti, centaurs, tritons — that were incorporated into the Buddhist decorative program, presumably carrying auspicious connotations. This Hellenistic influence was so thoroughly absorbed and transformed that the resulting art is genuinely Gandharan rather than Greek — a creative synthesis rather than mere imitation."}]} +{"conversations": [{"from": "human", "value": "What was the city of Pushkalavati (Charsadda) in Gandhara?"}, {"from": "gpt", "value": "Pushkalavati, meaning 'city of the lotus' in Sanskrit, was one of the earliest and most important capitals of the Gandhara region, corresponding to the modern city of Charsadda located approximately 29 kilometers northeast of Peshawar in Khyber Pakhtunkhwa, Pakistan. Pushkalavati served as the administrative capital of Gandhara under the Achaemenid Persians and likely earlier, and it was a major urban center encountered and briefly besieged by Alexander the Great in 327 BCE. Classical Greek sources including Arrian describe the city as a significant fortified settlement. Archaeological excavations at Bala Hisar of Charsadda and surrounding mounds have revealed continuous occupation going back to at least the early Iron Age (circa 1000 BCE) and extending through the Mauryan, Greek, Parthian, Kushan, and later periods. Finds include the characteristic Northwestern Painted Grey Ware pottery of the early Iron Age Gandhara Grave Culture, coins of successive rulers, terracotta figurines, and evidence of extensive craft production and trade. Pushkalavati was eventually supplanted as the primary capital of the Peshawar Valley by Purushapura (Peshawar) under the Kushans, though it retained importance as a religious and commercial center. Excavations at Charsadda, conducted most extensively by British archaeologist Sir Mortimer Wheeler in 1958 and subsequently by Pakistani archaeologists, have been crucial for establishing the chronology of Gandharan cultural development."}]} +{"conversations": [{"from": "human", "value": "What was the Gandhara Grave Culture?"}, {"from": "gpt", "value": "The Gandhara Grave Culture is a distinctive archaeological culture of the late Bronze Age and early Iron Age (roughly 1800-600 BCE) identified in the Swat Valley and neighboring areas of northwestern Pakistan and Afghanistan. It represents one of the most important prehistoric cultures of the Gandharan region and is associated with the arrival of early Indo-Aryan-speaking peoples in the subcontinent. The culture is defined primarily by its characteristic burial practices: the dead were interred in individual graves within cemeteries, accompanied by pottery, bronze and iron objects, and various ornaments. The grave goods show a striking combination of connections to the Bronze Age steppe cultures of Central Asia and Iran — suggesting the origin of the people — alongside local South Asian elements. The pottery includes a distinctive painted ware and also a greyware that shows connections to Central Asian traditions. Weapons (swords, daggers, axes), horse equipment, and personal ornaments (including items made of lapis lazuli) are common grave goods. The discovery of horse bones and horse equipment in some graves is particularly significant, as the horse was not native to South Asia and its introduction from the steppes is associated with the Indo-Aryan migrations. The Gandhara Grave Culture has been controversially linked to the carriers of early Vedic traditions entering South Asia from the northwest, though this identification remains debated among scholars. Regardless of its ethnic associations, it represents the formative prehistoric layer beneath the historical Gandharan civilization."}]} +{"conversations": [{"from": "human", "value": "How did Gandharan art influence Buddhist art in Afghanistan?"}, {"from": "gpt", "value": "Afghanistan was not merely on the periphery of Gandharan civilization — much of ancient Afghanistan, particularly the regions of Bactria (northern Afghanistan) and Arachosia (southern Afghanistan), was within the broader Gandharan cultural sphere or deeply influenced by it. The Bamiyan Valley in central Afghanistan provides the most dramatic example of Gandharan artistic influence: the two colossal standing Buddhas carved into the sandstone cliffs at Bamiyan — the larger standing 55 meters high, the smaller 38 meters — represented the ultimate monumental expression of the Gandharan Buddha image type. These magnificent sculptures, which were destroyed by the Taliban in 2001 in one of history's most devastating acts of cultural vandalism, were part of a vast monastic complex featuring hundreds of cave cells and assembly halls decorated with paintings showing Gandharan, Sassanid, and Central Asian influences. Hadda, near Jalalabad in eastern Afghanistan, was one of the richest centers of Gandharan stucco sculpture and produced thousands of remarkable sculptural heads and figures of extraordinary technical quality and expressive power before the site was largely destroyed in the late 20th century. The site of Fondukistan in northern Afghanistan showed a later phase of Gandharan-influenced art blending with Iranian and Central Asian elements. Begram (ancient Alexandria ad Caucasum and Kapisi), the summer capital of the Kushans near modern Kabul, yielded an extraordinary hoard of luxury objects — Roman glassware, Indian ivory carvings, Chinese lacquerware — that vividly illustrates the cosmopolitan Silk Road culture of the Kushan-Gandharan world."}]} +{"conversations": [{"from": "human", "value": "What archaeological work has been done in Gandhara?"}, {"from": "gpt", "value": "Archaeological investigation of the Gandhara region has a long and distinguished history spanning nearly two centuries, producing discoveries of world historical importance. The pioneering figure was Sir Alexander Cunningham, who served as the first Director General of the Archaeological Survey of India and conducted surveys and excavations in the Gandhara region from the 1840s to 1880s, identifying key sites and collecting sculptures for Indian museums. The most systematic and scientifically rigorous early excavations were conducted by Sir John Marshall, Director General of the Archaeological Survey of India from 1902 to 1928, whose extensive excavations at Taxila spanning multiple seasons produced an extraordinarily detailed picture of the site through three distinct city phases and multiple religious establishments. Marshall's three-volume publication Taxila (1951) remains a foundational work. Sir Mortimer Wheeler conducted important excavations at Charsadda in 1958. The Italian Archaeological Mission to Pakistan (ISMEO/IsIAO), led initially by Giuseppe Tucci and subsequently by various directors, has conducted continuous fieldwork in the Swat Valley since 1955, producing critical data on sites including Butkara I, Saidu Sharif, and Barikot. French archaeologists have worked extensively in Afghanistan at sites including Hadda, Begram, and Ai-Khanoum (a Hellenistic city). Pakistani archaeologists, working through the Department of Archaeology and Museums, have conducted numerous salvage and research excavations. The period since the 1970s has unfortunately seen significant looting of Gandharan sites driven by international demand for Gandharan art, causing irreversible damage to the archaeological record."}]} +{"conversations": [{"from": "human", "value": "What is the Fasting Buddha of Lahore?"}, {"from": "gpt", "value": "The Fasting Buddha in the Lahore Museum is arguably the single most iconic and emotionally powerful work of Gandharan art in existence, and one of the masterpieces of world sculpture. Created in grey schist, probably during the 2nd-3rd centuries CE, it depicts the historical Buddha Siddhartha Gautama during his period of extreme asceticism before his enlightenment — the period when he nearly starved himself to death in the belief that physical mortification was the path to spiritual liberation, before realizing the value of the Middle Way. The sculpture shows a seated figure in meditation posture whose body has been reduced to a framework of bones and tendons rendered with almost unbearable anatomical precision: the ribs and vertebrae protrude sharply, the skin sinks into hollows between the bones, the muscles are atrophied, and the limbs are skeletal. Yet the face, despite its gauntness and the deeply sunken eyes, retains an expression of absolute spiritual composure and inner dignity. The contrast between the physical devastation of the body and the untroubled serenity of the spiritual presence is profoundly moving. Rudyard Kipling, whose father John Lockwood Kipling was curator of the Lahore Museum, described this sculpture in his novel Kim — one of the earliest and most eloquent appreciations of Gandharan art in Western literature. The Fasting Buddha type is a distinctly Gandharan contribution to Buddhist iconography — this image of radical physical deprivation as a spiritual state is rarely found in other Buddhist artistic traditions — and it represents one of the most psychologically penetrating achievements of ancient sculptors anywhere in the world."}]} +{"conversations": [{"from": "human", "value": "What was the relationship between Gandhara and Rome?"}, {"from": "gpt", "value": "The relationship between Gandhara and Rome, while geographically remote, was more substantive than might be expected and operated through multiple channels. The most direct connection was commercial: Roman merchants and goods reached the Indian subcontinent via both the overland Silk Road routes and the maritime routes through the Red Sea and Indian Ocean, and Roman luxury items have been found at Gandharan and Taxila sites. Roman glass vessels, including examples of the millefiori and mosaic glass techniques characteristic of Roman craftsmanship, have been excavated at Taxila and at the Begram hoard in Afghanistan, testifying to direct or indirect commercial contact. Roman coins — both official imperial issues and local imitations — circulated in the Gandhara region. Artistically, the Gandharan Buddha image shows specific parallels not only with Greek but with Roman imperial portraiture and sculptural conventions: the treatment of drapery in some Gandharan pieces closely resembles Roman togate portrait statues. Some scholars have suggested that Roman craftsmen or workshops directly influenced Gandharan art, possibly through the route of commercial contact. Classical authors including Strabo, Pliny the Elder, and Ptolemy wrote about the territories corresponding to Gandhara and provided geographical information that, while often imprecise, shows Roman awareness of the region. Indian and Gandharan embassies are recorded as having visited Rome, and the relationship, while never a formal political alliance, was one of the far-flung connections that characterized the cosmopolitan world of the early centuries CE."}]} +{"conversations": [{"from": "human", "value": "What were the major stupas of Gandhara?"}, {"from": "gpt", "value": "The stupa — a hemispherical burial mound enshrining relics of the Buddha or Buddhist saints — was the central architectural monument of Gandharan civilization, and Gandhara contained some of the most magnificent stupas in the Buddhist world. The Kanishka stupa at Peshawar, built by the Kushan emperor Kanishka I to house a relic casket containing relics of the Buddha, was according to Chinese pilgrim accounts one of the tallest structures in the ancient world. The Kanishka casket itself, excavated from the stupa in 1908-1909, is a masterpiece of Gandharan metalwork bearing a dedicatory inscription identifying it as the work of the Greek artist Agesilas — a remarkable document of the multicultural nature of Gandharan artistic production. At Taxila, the Dharmarajika stupa is one of the oldest in the region, traditionally associated with Ashoka's distribution of the Buddha's relics. The Mohra Moradu stupa and the Jaulian stupa, also at Taxila, feature elaborately decorated drum faces with rows of niches containing stucco Buddha images — some of the finest examples of Gandharan stucco sculpture. The Shingardar stupa in the Swat Valley bears a Kharosthi inscription identifying it as a royal foundation. Butkara I in Swat was a major stupa that grew by accretion over centuries, each successive ruler adding an outer casing to the existing structure. The Mankiala stupa near Rawalpindi, excavated in the 19th century, yielded important relic deposits. These stupas were not merely architectural monuments but living centers of devotion, circumambulation, and festival, around which the religious life of the community was organized."}]} +{"conversations": [{"from": "human", "value": "How was Gandharan art different from the art of Mathura in India?"}, {"from": "gpt", "value": "The Gandharan and Mathura schools of Buddhist art emerged roughly contemporaneously in the 1st-2nd centuries CE and represent two distinct but equally important traditions in the development of Buddhist iconography. Understanding their differences illuminates the diverse cultural sources that fed early Buddhist visual culture. The Mathura school, centered in the city of Mathura in the middle Gangetic plain, developed the Buddha image from indigenous Indian sculptural traditions, particularly the earthy, sensuous yaksha figure type. Mathura Buddhas are typically carved in the distinctive spotted red sandstone of the Mathura region. They are portrayed with a shaved or closely cropped head (unlike the wavy Hellenistic locks of Gandharan Buddhas), transparent or minimally draped robes that reveal the body's powerful physique, and a roundly Indian physical presence — broad shoulders, full torso. The facial type is distinctly Indian rather than Hellenistic. Gandharan Buddhas, by contrast, wear the heavy, toga-like robe that covers most of the body with realistic drapery folds, have Hellenistic facial features with wavy hair arranged above the ushnisha, and project a more austere and spiritual rather than physically vital presence. Both traditions use the same Buddhist iconographic attributes (mudras, ushnisha, urna) but express them through very different aesthetic languages. As Buddhism spread eastward along the Silk Road, it was primarily the Gandharan visual tradition that was transmitted to Central Asia and China, while Mathura's influence was stronger in southeastern India, Sri Lanka, and Southeast Asia. Over time, as Buddhist art spread across Asia, elements of both traditions were absorbed and transformed into the diverse regional Buddhist artistic styles of the Asian world."}]} +{"conversations": [{"from": "human", "value": "What role did women play in Gandharan Buddhist society?"}, {"from": "gpt", "value": "The role of women in Gandharan Buddhist society was more substantial than is often acknowledged, though the evidence is fragmentary and filtered through predominantly male-authored sources. Buddhist institutions in Gandhara, as elsewhere in the Buddhist world, included the bhikkhuni sangha — the order of fully ordained nuns — alongside the male monastic community. Inscriptional evidence from Gandhara records donations made by women to Buddhist establishments: female donors including queens, noblewomen, merchants' wives, and women of humbler status are attested dedicating stupas, commissioning sculptures, and sponsoring religious ceremonies. The Gandharan Buddhist manuscripts mention female members of the monastic community. In the sculptural record, women appear prominently in narrative relief scenes depicting the life of the Buddha — as Queen Maya giving birth to the bodhisattva, as female devotees presenting offerings, as the women of Kapilavastu lamenting the Great Departure, and as female figures attending the parinirvana. Terracotta figurines of women — some identified as mother goddesses, fertility figures, or representations of specific female deities — are found abundantly at Gandharan and Taxila sites, suggesting a rich popular religious culture involving female divine figures that coexisted with the more formal Buddhist monastic tradition. Kushan queens are attested in the numismatic record, with some Kushan coins bearing the portrait of the queen alongside the king. The overall picture is of a society in which women participated actively in Buddhist religious life as donors, devotees, and monastics, even if their institutional authority was more limited than that of male monastics."}]} +{"conversations": [{"from": "human", "value": "What is known about the economy and agriculture of ancient Gandhara?"}, {"from": "gpt", "value": "The economy of ancient Gandhara was built on a productive combination of fertile agricultural land, skilled artisanal production, and above all the extraordinary advantages of its geographic position as a Silk Road transit hub. The Peshawar Valley — the core of the Gandharan heartland — is one of the most agriculturally productive plains in South Asia, watered by the Kabul River and its tributaries and blessed with a climate suitable for wheat, barley, rice, cotton, sugar cane, and various fruits. Archaeological evidence and ancient textual sources attest to sophisticated irrigation systems that extended the agricultural reach beyond naturally watered land. Cotton cultivation and textile production were particularly important — Indian cotton cloth was highly valued in the ancient world and Gandharan merchants were significant participants in the textile trade. The region also produced indigo dye, various pharmaceutical plants, and agricultural surpluses that fed both the local population and provisioned the caravans passing through. Artisanal production was sophisticated and diverse: Gandharan workshops produced sculptures in schist and stucco for the enormous religious construction market, fine metalwork including coins and decorative objects, pottery, and various luxury goods. The Taxila excavations revealed entire craft quarters with evidence of bead-making, metal-working, and pottery production. The economic foundation provided by agriculture and trade was what made the extraordinary religious and cultural efflorescence of Gandhara possible — the monasteries, stupas, and art workshops were sustained by surplus wealth channeled through royal patronage and lay donations."}]} +{"conversations": [{"from": "human", "value": "What is the Begram hoard and what does it tell us about Gandhara?"}, {"from": "gpt", "value": "The Begram hoard is one of the most remarkable archaeological discoveries of the 20th century and a vivid testament to the cosmopolitan character of the Kushan-Gandharan world. Discovered at the ancient site of Begram (ancient Kapisi, and one of the Kushan royal capitals) near modern Kabul in Afghanistan during excavations in 1937 and 1939 by French archaeologists Joseph and Ria Hackin, the hoard consisted of two sealed rooms in a palace complex containing an extraordinary collection of luxury objects from across the ancient world. The collection included Roman glassware of exceptional quality — including painted glass beakers, millefiori bowls, and alabaster vessels — imported all the way from the Mediterranean world. From Egypt came Alexandrian plaster medallions and painted glass roundels. From India came spectacular carved ivory panels and plaques depicting scenes of great complexity and beauty, including female figures in elaborate jewelry and costume as well as mythological and domestic scenes — these ivories from Begram are among the finest surviving examples of ancient Indian ivory carving. Lacquerware from China was also represented. The hoard dates to approximately the 1st-3rd centuries CE, corresponding to the Kushan imperial period. The assemblage suggests either a royal treasury or storehouse for luxury trade goods, and it speaks directly to the Silk Road connections that made Gandhara and its related territories a nexus point where the finest products of Roman, Egyptian, Indian, and Chinese craftsmanship converged. The Begram ivories and glassware are now divided between the Kabul Museum and the Guimet Museum in Paris."}]} +{"conversations": [{"from": "human", "value": "How did the Parthians interact with Gandhara?"}, {"from": "gpt", "value": "The Parthian Empire and the various Parthian and Indo-Parthian rulers who held power in the Gandhara region during the 1st century BCE to 1st century CE represent an important transitional chapter between the Indo-Greek and Kushan periods. After the decline of Indo-Greek power, various Parthian and Scythian (Saka) chieftains competed for control of the northwestern Indian territories. The most significant of the Indo-Parthian rulers was Gondophares I, who ruled a substantial kingdom including Gandhara and adjacent regions in approximately the first half of the 1st century CE. Gondophares is notable in the history of Christianity as well as Buddhism: the apocryphal Acts of Thomas records that the Apostle Thomas traveled to India and was received by a king named Gondophares, creating an early and enduring tradition of Christian presence in the subcontinent. While this account is largely legendary, the historicity of Gondophares himself is confirmed by an inscription discovered at Takht-i-Bahi in Mardan district, Pakistan, which provides a regnal year that has been used to anchor the chronology of the Indo-Parthian period. Parthian artistic and cultural influences are visible in Gandharan art — certain garment styles, weapon types, and compositional conventions in Gandharan sculpture show Parthian connections. Parthian merchants were also important intermediaries in the Silk Road trade, controlling the routes through Iran that connected the Roman world with the east, and Parthian cultural influences filtered into Gandhara through these commercial connections."}]} +{"conversations": [{"from": "human", "value": "What do we know about education and learning in ancient Gandhara?"}, {"from": "gpt", "value": "Ancient Gandhara, and particularly the city of Taxila, was one of the great centers of learning in the ancient world, drawing students from across Asia in a manner that anticipates the later medieval universities of Europe. The educational tradition at Taxila is attested from the mid-first millennium BCE in Indian sources including the Jataka tales and the Jatakmala, which frequently mention Taxila as a destination for young men seeking advanced education. Students traveled from as far as Varanasi, Magadha, and other distant parts of India to study at Taxila, where they lived in the households of their teachers (gurukul system) or in formal establishments. The curriculum reportedly included the Vedas, grammar, astronomy, medicine, military science, political philosophy, music, and various practical arts. The great physician Jivaka, who is mentioned as the Buddha's personal physician in Pali canonical sources, is said to have trained in medicine at Taxila. The political philosopher and strategist Chanakya (Kautilya), author of the Arthashastra — one of the greatest works of political science in world literature — is associated with Taxila. In the Buddhist period, the monasteries of Gandhara functioned as centers of learning where monks studied Buddhist philosophy, logic, grammar, and medicine. The famous Mahayana Buddhist philosopher Vasubandhu, one of the most important thinkers in the history of Buddhism, is associated with Gandhara in some traditions. The region's multilingual character — with Sanskrit, Gandhari Prakrit, Greek, and later Persian and Bactrian all in use — meant that Gandharan scholars were exposed to an unusually broad range of intellectual traditions."}]} +{"conversations": [{"from": "human", "value": "What is the Takht-i-Bahi monastery?"}, {"from": "gpt", "value": "Takht-i-Bahi, meaning 'throne of the water spring' in Persian/Pashto, is one of the best-preserved and most extensively excavated Buddhist monastic complexes in the Gandhara region, and has been designated a UNESCO World Heritage Site (as part of the joint nomination with the neighboring city of Sahr-i-Bahlol). Located about 80 kilometers east of Peshawar in Mardan district of Khyber Pakhtunkhwa, the monastery is built dramatically on the summit and slopes of a steep isolated hill rising about 150 meters above the surrounding plain, which both provided natural defense and made it a prominent landmark visible from great distances. The monastery was founded in the 1st century CE and remained in active use until the 7th century CE, representing over six centuries of continuous Buddhist monastic life. The complex is organized into several distinct units: the Court of Stupas, where a large central stupa is surrounded by numerous smaller votive stupas; the Main Stupa Court; the Assembly Hall; the Monastic Quarters consisting of rows of small cells where monks lived; and the Tantric Monastery, a later addition. The walls of many of the stupa niches and court surfaces were originally decorated with stucco sculptures of Buddha figures and ornamental elements, and numerous fine sculptures have been recovered from the site. An important Kharosthi inscription found at Takht-i-Bahi provides a regnal year of the Indo-Parthian king Gondophares, giving archaeologists a valuable chronological anchor. The site is maintained by the Archaeological Survey of Pakistan and remains one of the most visited and evocative archaeological monuments in the country."}]} +{"conversations": [{"from": "human", "value": "What languages were spoken in ancient Gandhara?"}, {"from": "gpt", "value": "Ancient Gandhara was a region of remarkable linguistic diversity, reflecting its position at the crossroads of multiple civilizational spheres. The primary vernacular language was Gandhari, a Northwestern Prakrit (Middle Indo-Aryan) closely related to other Prakrits of the subcontinent but with distinctive phonological and grammatical features. Gandhari was written in the Kharosthi script and served as the primary language of Buddhist religious and administrative life in the region, as evidenced by the Gandharan Buddhist manuscripts and numerous inscriptions. Sanskrit was the language of high culture, religious scholarship, and Brahmanical learning, used in both Hindu and Buddhist contexts for the composition of learned texts. Greek was a significant language from the time of Alexander's campaigns through the Indo-Greek period (roughly 4th to 1st centuries BCE), and Greek inscriptions appear on coins and occasionally on other monuments; some bilingual Greek-Kharosthi coins demonstrate the coexistence of Greek and local linguistic traditions. Aramaic, introduced during Achaemenid Persian rule in the 5th-4th centuries BCE, served as an administrative language and left its mark in the development of the Kharosthi script itself. During the Kushan period, Bactrian — an eastern Iranian language written in a modified Greek alphabet — became an important administrative and literary language. Pashto, the language of much of the present-day Gandharan region, appears to have deep roots in the area though its ancient history is less well documented. This multilingual environment was a sign of Gandhara's cosmopolitan character and facilitated the cultural exchanges that made the civilization so creative."}]} +{"conversations": [{"from": "human", "value": "What is the Kanishka casket?"}, {"from": "gpt", "value": "The Kanishka casket is one of the most important and beautiful objects of Gandharan art and Buddhist heritage, discovered in 1908-1909 during excavations at the site of the Kanishka stupa in Shah-ji-ki-Dheri, Peshawar, by the archaeologist D.B. Spooner. The casket is a small cylindrical reliquary of gilt copper alloy, approximately 18 cm in height and diameter, and it was found deposited within the stupa foundation along with other objects including a copper plate inscription. The casket's exterior is decorated with a band of figures in relief: the central figure is the Buddha seated in meditation flanked by two Bodhisattvas, and to either side are depicted the god Brahma and Indra (shown in a distinctly Hellenistic guise), the sun god Mithra, and a royal figure — presumably Kanishka himself — shown in characteristic Kushan dress. Most remarkably, the casket bears a dedicatory inscription in Kharosthi script that names it as the receptacle for relics of the Buddha installed by the monks of the Sarvastivadin school, and crucially identifies the Greek master craftsman Agesilas as having overseen the work: the inscription reads in part 'made by Agesilas, the overseer of works at Kanishka's vihara.' This single inscription is a remarkable historical document, naming an individual Greek craftsman still working at a Buddhist establishment in Gandhara in the early 2nd century CE — a testament to the living Hellenistic presence in Gandharan art production. The casket is now in the Peshawar Museum, though it has been stored in secure storage for protection and is not always on public display."}]} +{"conversations": [{"from": "human", "value": "How did Zoroastrianism interact with the religious culture of Gandhara?"}, {"from": "gpt", "value": "Zoroastrianism, the ancient Iranian religion founded by the prophet Zarathustra and the state religion of the Achaemenid and Sassanid Persian empires, had a significant if often underappreciated presence in the religious culture of ancient Gandhara. The region had been under Achaemenid Persian administration for roughly two centuries (c. 518-330 BCE), and Persian cultural and religious influences were consequently deeply embedded in Gandharan life. Iranian fire worship, the veneration of Mithra and other Iranian deities, and Zoroastrian cosmological ideas all left their traces. The Kushan Empire provides the most dramatic evidence of Zoroastrian influence: Kushan coins feature an extraordinary pantheon of deities including clearly Iranian figures such as Mithra (the sun god), Nana (the great Iranian goddess), Athsho (the fire deity), and the wind god Vado alongside Buddhist, Hindu, and Greek divinities. Kanishka's coins in particular show a striking religious syncretism in which Zoroastrian Iranian deities are depicted with the same honorific treatment as the Buddha and Hindu gods. The cult of fire was present in Gandhara alongside Buddhism and Hinduism, and fire temples may have coexisted with Buddhist monasteries in the urban centers. Some scholars have identified Zoroastrian and Iranian influences in aspects of Gandharan Buddhist iconography — certain attributes of bodhisattva figures, some architectural decorative motifs, and aspects of the treatment of fire and light in Buddhist narrative art may reflect Iranian religious ideas filtered through the cosmopolitan Gandharan cultural milieu."}]} +{"conversations": [{"from": "human", "value": "What were the social classes and structure of Gandharan society?"}, {"from": "gpt", "value": "Gandharan society during its classical period combined elements of the Indian varna (caste) system with Greek, Persian, and Central Asian social structures in a characteristically syncretic fashion. At the apex was the ruling class — whether the Mauryan viceroys, Indo-Greek kings, Kushan emperors, or their subordinate governors — whose political authority was legitimized through both Indian royal ideology (the chakravartin or universal monarch concept) and Central Asian nomadic leadership traditions. The Kushan ruling class maintained a distinct ethnic and cultural identity, wearing characteristic Central Asian dress — the long coat, trousers, and boots depicted on their coin portraits and sculpture — and worshipping a syncretic pantheon. Below the ruling class were the administrators, military officers, and great merchants who formed the functional elite of society. The merchant class (vaishya in Indian terminology) was particularly prominent and wealthy in Gandhara given the region's commercial importance, and inscriptions attest to merchants as major donors to Buddhist establishments. Artisans, craftspeople, and traders of various kinds formed a substantial middle layer of urban society. Buddhist monks constituted a distinctive social class that stood somewhat apart from the varna system, theoretically open to men of all social backgrounds, though in practice the monastic community had its own internal hierarchies based on seniority and learning. Agricultural laborers and various service castes formed the lower strata. Greek settlers and their descendants, Central Asian immigrants, and other non-Indian groups had their own social positions that did not map neatly onto the Indian caste framework, contributing to the fluid, cosmopolitan character of Gandharan urban society."}]} +{"conversations": [{"from": "human", "value": "What is known about the music and performing arts of ancient Gandhara?"}, {"from": "gpt", "value": "Evidence for music and performing arts in ancient Gandhara comes primarily from the sculptural record, supplemented by literary references and parallels with other ancient South and Central Asian cultures. Gandharan relief sculptures frequently depict musical scenes, particularly in contexts associated with Buddhist devotion and the life of the Buddha. Musicians appear in scenes of the nativity celebration, where celestial beings play instruments to honor the birth of the bodhisattva, and in depictions of entertainment in the palace of Siddhartha's father. The instruments depicted include harps (possibly derived from ancient Iranian or Mesopotamian types), lutes, flutes, cymbals, conch shells, and various percussion instruments including kettledrums. Dancer figures appear in Gandharan sculpture as well, both in religious contexts as celestial beings performing before the Buddha, and in secular narrative contexts. Terracotta figurines of musicians and dancers have been found at Taxila and other sites. The musical culture of Gandhara appears to have been highly syncretic, blending Indian musical traditions with Central Asian and Iranian elements. The lute type depicted in Gandharan art is believed by some scholars to have been the ancestor of various lute forms that spread along the Silk Road into Central Asia and ultimately into the Chinese pipa and related instruments. References in Buddhist texts to musical performances at festivals, the singing of devotional songs (gatha), and the use of musical instruments in religious ceremonies all suggest a rich performing arts culture that was integrated into both the religious and secular life of Gandharan society."}]} +{"conversations": [{"from": "human", "value": "Who was Ashvaghosha and his connection to Gandhara?"}, {"from": "gpt", "value": "Ashvaghosha was one of the greatest Buddhist poets and thinkers of the ancient world, traditionally associated with the court of the Kushan emperor Kanishka I, which placed him in the Gandharan cultural sphere of the late 1st to early 2nd centuries CE. His work represents a remarkable synthesis of sophisticated Sanskrit literary craftsmanship with Buddhist religious content, and he is sometimes credited with being the founder of the Sanskrit kavya (court poetry) literary tradition, though this is probably an oversimplification. His two surviving complete works are masterpieces of world literature. The Buddhacarita (Acts of the Buddha) is a Sanskrit epic poem in 28 cantos narrating the life of the historical Buddha from his miraculous birth through his enlightenment and first teaching, and eventually (in sections preserved only in Chinese and Tibetan translations) to his parinirvana. It is notable for its psychological depth, poetic beauty, and the sophistication with which it presents Buddhist philosophical ideas in elegant Sanskrit verse. The Saundarananda (Handsome Nanda) is another Sanskrit kavya poem narrating the conversion of the Buddha's half-brother Nanda, using the framework of a love story to explore the Buddhist teaching on detachment and liberation. Ashvaghosha is also traditionally credited with composing the Shariputraprakarana, a Sanskrit Buddhist drama of which fragments survive, making him a figure of importance in the history of Indian theater as well. His work exemplifies the extraordinary intellectual and artistic energy of the Kushan-Gandharan period, when the synthesis of Indian, Hellenistic, and Buddhist traditions produced genuinely original cultural achievements of enduring significance."}]} +{"conversations": [{"from": "human", "value": "What is the significance of the Khyber Pass for Gandharan history?"}, {"from": "gpt", "value": "The Khyber Pass is not merely a geographic feature in the history of Gandhara — it is the single most consequential mountain corridor in South Asian history, and Gandhara's control of and proximity to this pass was the fundamental strategic and economic fact that shaped the civilization's entire character. Rising to an altitude of approximately 1,070 meters and cutting through the Safed Koh range of the Hindu Kush over a distance of about 53 kilometers between modern Peshawar in Pakistan and Jalalabad in Afghanistan, the Khyber Pass is the most accessible route through the formidable mountain barrier separating the Indian subcontinent from Central Asia and the Iranian plateau. Every major power that sought to move between Central Asia and South Asia — from the Achaemenid Persians to Alexander, from the Mauryas to the Kushans, from the Indo-Greeks to the Hephthalites, and from Mahmud of Ghazni to Babur — passed through or contended for the Khyber. This constant flow of armies, merchants, pilgrims, and migrants made Gandhara simultaneously the most cosmopolitan and one of the most strategically contested regions of the ancient world. The tolls and taxes levied on Silk Road trade passing through the Khyber were a major source of revenue for Gandharan rulers. The pass also brought vulnerabilities: invasions from the northwest — the Persians, Greeks, Scythians, Hephthalites, and later Muslim armies — all entered South Asia primarily through the Khyber. The Pass's strategic importance continued into the modern period, where it was contested during the Great Game between Britain and Russia in the 19th century and remains a geopolitically sensitive corridor today."}]} +{"conversations": [{"from": "human", "value": "What Buddhist philosophical schools were associated with Gandhara?"}, {"from": "gpt", "value": "Gandhara was associated with several important Buddhist philosophical schools and was a significant center of Buddhist scholastic activity, particularly in the early centuries of the Common Era. The most prominently associated school was the Sarvastivada, one of the major Hinayana (Theravada-related) schools of early Buddhism, whose name means 'the teaching that everything exists' — referring to its philosophical position that phenomena exist in all three times (past, present, and future). The Fourth Buddhist Council convened by Kanishka I in Kashmir is traditionally associated with the Sarvastivadin school, and the canonical texts of this school were compiled in Sanskrit rather than Pali, reflecting the Gandharan-northwest Indian cultural milieu. The Dharmaguptaka school, another early Buddhist sect, was also associated with the northwest and Gandhara, and it was this school's Vinaya (monastic code) that was transmitted to China and formed the basis of Chinese Buddhist monasticism. The Gandharan Buddhist manuscripts include texts associated with multiple early Buddhist schools, suggesting that Gandhara was home to a diverse Buddhist community rather than a single sectarian tradition. Mahayana Buddhism also had an important presence in Gandhara — Mahayana sutras including Prajnaparamita texts (Perfection of Wisdom literature) were composed or compiled in the northwestern region, and the great Mahayana philosopher Vasubandhu, founder of the Yogacara school along with his brother Asanga, is associated with Gandhara in some traditions. The region thus participated actively in the intellectual debates that shaped the development of Buddhist philosophy from its early sectarian phase through the emergence of Mahayana."}]} +{"conversations": [{"from": "human", "value": "What are the Jataka stories and how were they depicted in Gandharan art?"}, {"from": "gpt", "value": "The Jataka tales are a collection of stories describing the previous lives of the historical Buddha before his final birth as Siddhartha Gautama — in each story, the future Buddha (the bodhisattva) appears in a different form, sometimes human, sometimes animal, and performs deeds of extraordinary compassion, wisdom, or self-sacrifice that represent stages in the spiritual journey toward Buddhahood. There are 547 canonical Jataka stories in the Pali tradition, though many more circulated in various Buddhist communities including Gandhara. These stories were enormously popular with lay Buddhist audiences because they combined accessible narrative entertainment with moral and spiritual instruction, and they provided an inexhaustible source of material for Buddhist artists. Gandharan sculptors depicted Jataka stories extensively on stupa drums and monastic walls, creating narrative relief panels of great visual complexity. The Syama Jataka (in which the bodhisattva serves as a devoted son to his blind parents and is shot by a king's arrow), the Shibi Jataka (in which the bodhisattva as King Shibi offers his own flesh to save a dove from a hawk), and the Visvantara Jataka (in which the bodhisattva as Prince Visvantara gives away everything he possesses including his children) are among the most commonly depicted. Gandharan Jataka reliefs often show multiple sequential episodes within a single panel, using repeated figures of the bodhisattva at different moments of the same story — a narrative technique also known from Roman historical reliefs. The visual storytelling in Gandharan Jataka reliefs is often remarkably sophisticated, with carefully differentiated settings, costumes, and emotional expressions."}]} +{"conversations": [{"from": "human", "value": "What happened to Gandharan sites during the modern period?"}, {"from": "gpt", "value": "The modern fate of Gandharan archaeological sites has been deeply troubled and represents one of the most serious ongoing crises in world cultural heritage. During the colonial period, British administrators and archaeologists conducted both scientific excavations and extensive collection of Gandharan sculptures for museums and private collections, sometimes with careful documentation and sometimes with less regard for archaeological context. The establishment of the Archaeological Survey of India and later the Department of Archaeology in Pakistan provided institutional frameworks for site protection, and major excavations at Taxila, Takht-i-Bahi, and many other sites were conducted to professional standards. The situation deteriorated sharply from the 1980s onward with the Soviet-Afghan War, the subsequent Afghan civil war, and the rise of the Taliban in Afghanistan, which caused catastrophic destruction of archaeological sites including the 2001 demolition of the Bamiyan Buddhas. Sites in eastern Afghanistan — including Hadda, which had contained thousands of exquisite stucco sculptures — were systematically looted, and a flood of decontextualized Gandharan sculptures entered the international antiquities market. The situation in Pakistan's Gandharan heartland also suffered from looting driven by international demand, with numerous sites in Swat and the Peshawar region extensively disturbed. The wars in Afghanistan since 2001 continued to cause damage, and Taliban control of parts of Pakistan and Afghanistan brought deliberate iconoclastic destruction of Buddhist monuments on religious grounds. International organizations including UNESCO, ICOMOS, and various national governments have worked to address the crisis, and institutions including the British Museum have developed programs to document and study Gandharan material. Recent years have seen improved security conditions in Swat and increased Pakistani government investment in site protection and tourism development."}]} +{"conversations": [{"from": "human", "value": "What was the Hephthalite invasion's impact on Gandhara?"}, {"from": "gpt", "value": "The Hephthalite (White Hun) invasion of the late 5th century CE represents one of the most devastating blows to Gandharan civilization, comparable in its destructive impact to the barbarian invasions that brought down the Western Roman Empire in the same period. The Hephthalites were a confederation of nomadic or semi-nomadic Central Asian peoples whose origins remain debated among scholars — they are variously identified as Iranian, Turkic, or of mixed origin. After destroying the Gupta Empire's power in northern India and shattering the Kidarite Kushans in the northwest, the Hephthalites took control of the Gandhara region in approximately the 460s-470s CE. Chinese and Indian sources paint a picture of deliberate destructiveness: Buddhist monasteries were reportedly attacked and destroyed, monks were killed or fled, and the rich institutional fabric of Gandharan Buddhist life was torn apart. Xuanzang's account written nearly two centuries later still reflects the scale of destruction — he described the remains of over a thousand monasteries, many in ruins, and a drastically reduced monastic population. Archaeological evidence at sites including Taxila and various Swat monasteries shows destruction layers consistent with violent assault and burning in this period. The Hephthalite domination of Gandhara lasted until they were themselves defeated by a Sassanid-Turkic alliance in the mid-6th century CE. While Buddhism survived the Hephthalite period in reduced form and some monasteries were rebuilt under subsequent rulers, the civilization never fully recovered its previous vitality. The Hephthalite devastation marked the beginning of the end for Gandhara as a major Buddhist civilization."}]} +{"conversations": [{"from": "human", "value": "What is the Ai-Khanoum site and its relevance to understanding Gandhara?"}, {"from": "gpt", "value": "Ai-Khanoum (also spelled Ay Khanum), located in northern Afghanistan at the confluence of the Oxus (Amu Darya) and Kokcha rivers, is the most extensively excavated Hellenistic city in Asia and provides the most direct archaeological evidence for the Greek cultural environment that produced Gandharan art. Excavated by French archaeologists between 1964 and 1978 (before the Soviet invasion forced abandonment and subsequent looting devastated the site), Ai-Khanoum was a fully planned Greek city — identified by most scholars as one of the Alexandria cities founded during Alexander's campaigns, or a successor foundation — featuring a gymnasium, theater, palace complex, temples, and administrative buildings designed entirely according to Greek architectural principles. The philosophical inscriptions found there, including maxims from the Delphic oracle, testify to the genuine Greek cultural identity of the city's ruling class. Ai-Khanoum is relevant to understanding Gandhara in several important ways: it demonstrates the depth and authenticity of the Hellenistic cultural presence in the region immediately northwest of Gandhara, confirming that Hellenistic influence on Gandharan art was not a superficial borrowing but the product of sustained contact with genuinely Greek cultural institutions. The artistic objects found at Ai-Khanoum — Greek-style sculptures, luxury metalwork with both Greek and Iranian elements, coins — provide the artistic context from which Gandharan art developed. The site also reveals the hybrid Greek-Iranian-Central Asian cultural environment of Bactria that was the immediate predecessor and neighbor of Gandharan civilization."}]} +{"conversations": [{"from": "human", "value": "How is Gandhara remembered and studied today?"}, {"from": "gpt", "value": "Gandhara occupies an important but often underappreciated place in contemporary scholarship and public cultural consciousness. In academic circles, Gandharan studies draw together specialists in art history, archaeology, Buddhist studies, ancient history, linguistics, and numismatics from institutions across Europe, North America, Pakistan, Afghanistan, Japan, and other countries. The field has been reinvigorated in recent decades by two major developments: the discovery and scholarly analysis of the Gandharan Buddhist manuscripts, which has transformed our understanding of early Buddhist textual traditions, and the development of more rigorous scientific approaches to the analysis of Gandharan sculpture including material analysis, radiocarbon dating, and thermoluminescence dating of stucco objects. Major museums including the British Museum, the Guimet in Paris, the Tokyo National Museum, and the Metropolitan Museum of Art in New York have invested in the display and scholarly study of their Gandharan collections. In Pakistan, government initiatives have worked to promote Gandharan heritage as a cultural tourism resource, with Taxila, Takht-i-Bahi, and Swat all designated as major heritage attractions. The Buddhist pilgrim tourism circuit — drawing visitors from Sri Lanka, Thailand, Japan, China, and other Buddhist countries to sites associated with early Buddhist history — represents a growing segment of heritage tourism in Pakistan. The looting crisis has prompted important international discussions about cultural property law, provenance research, and the responsibilities of collecting institutions. Gandhara remains a powerful symbol of cultural synthesis and the possibility of diverse civilizational traditions producing something greater than any of them alone — a lesson that resonates powerfully in the contemporary world."}]} +{"conversations": [{"from": "human", "value": "What was the role of bodhisattvas in Gandharan Buddhist art?"}, {"from": "gpt", "value": "Bodhisattvas — beings who have achieved the capacity for enlightenment but remain in the world out of compassion for all sentient beings — are among the most prominent figures in Gandharan Buddhist art and their prominent representation reflects the growing importance of Mahayana Buddhist ideas in the region. In Gandharan art, bodhisattvas are typically depicted as princely figures in marked contrast to the more simply robed monk-like Buddha: they wear elaborate jewelry including necklaces, armbands, and earrings, their hair is arranged in an ornate coiffure often with a topknot, and their garments are richly decorated. This contrast in appearance between the princely, jeweled bodhisattva and the simply clad Buddha is theologically significant — it represents the bodhisattva's continued engagement with the world while the Buddha has transcended it. Maitreya, the future Buddha who currently resides in the Tushita heaven awaiting his time to appear in the world, is one of the most frequently depicted bodhisattvas in Gandharan art — he is identified by his characteristic attribute of a small stupa in his hair or held in his hand. Avalokiteshvara (the bodhisattva of compassion, known later in East Asia as Guanyin), identified by a small figure of Amitabha Buddha in his headdress, also appears frequently. The bodhisattva Maitreya cult appears to have been particularly important in Gandhara and the Silk Road regions — the expectation of Maitreya's future appearance as the next Buddha gave hope and eschatological meaning to communities facing the difficulties of historical time. Gandharan bodhisattva images are notable for their combination of Hellenistic facial beauty with Indian ornamental richness, creating figures of extraordinary aesthetic power."}]} +{"conversations": [{"from": "human", "value": "What do coins tell us about Gandharan history?"}, {"from": "gpt", "value": "Coinage is one of the most important and abundant sources of historical evidence for Gandhara, and the coins of the successive rulers of the region constitute a rich numismatic archive that illuminates political history, religious practice, artistic traditions, and economic life across more than a millennium. The Indo-Greek coins are among the finest artistic achievements of ancient coinage anywhere in the world: the obverse royal portraits show individuals of striking individuality rendered with Hellenistic naturalistic skill, while the reverses bear Greek deities alongside Kharosthi legends and increasingly Indian iconographic elements — the bilingual, bicultural nature of these coins perfectly embodies the syncretic character of the Indo-Greek state. Kushan coinage is remarkable for its religious eclecticism: the coins of Kanishka and his successors display an unprecedented diversity of deities drawn from the Greek, Iranian, Hindu, and Buddhist pantheons — scholars have identified over thirty different deity types on Kushan coins, making them a visual encyclopedia of the religious cosmopolitanism of the Kushan court. The first coins to depict the standing Buddha in a recognizable form appear on Kushan coinage, making Kushan coins significant in the history of Buddhist iconography as well. Coins also provide crucial chronological anchors for Gandharan history: the discovery of dated coin hoards at Taxila and other sites has allowed archaeologists to establish chronologies for the occupation of various sites. Countermarked coins — coins of one ruler overstruck with the symbol of a successor — provide evidence of political transitions. The coin finds at Taxila in particular, analyzed exhaustively by John Marshall and subsequently by numismatists including Robert Senior and Joe Cribb, provide the backbone of the chronological framework for the entire Gandharan sequence."}]} +{"conversations": [{"from": "human", "value": "What was the political administration of Gandhara under the Kushan Empire?"}, {"from": "gpt", "value": "The administration of Gandhara under the Kushan Empire was a sophisticated system that combined imperial centralization with considerable regional autonomy, reflecting the empire's challenge of governing an enormous and diverse territory stretching from Central Asia to the Gangetic Plain. At the apex was the Kushan emperor (maharaja, later maharajadhiraja — great king of kings), who was both the supreme political authority and, in religious terms, the protector and patron of the diverse religious communities within his realm. The emperor maintained multiple royal capitals for different seasons: Purushapura (Peshawar) served as the principal winter capital and administrative center of the Gandharan heartland, while Kapisa (Begram) in Afghanistan served as the summer capital, and Mathura was an important eastern center. Provincial governance was entrusted to a class of subordinate governors called kshatrapas (satraps, a Persian-derived title) and mahakshatrapas (great satraps) who administered regions on behalf of the emperor. Some of these governors issued their own coins bearing their names alongside the Kushan emperor's, providing historians with valuable evidence for the administrative hierarchy. The Kushan administrative system also incorporated existing Indian administrative traditions and terminology from the earlier Mauryan framework. Military power was central to imperial administration, and the Kushan army combined the traditional steppe cavalry of Central Asian warfare with Indian infantry traditions. Buddhist monasteries served as important nodes in the administrative landscape — they were royal foundations, received royal land grants and tax exemptions, and their abbots were persons of considerable social and political influence."}]} +{"conversations": [{"from": "human", "value": "What were the architectural features of Gandharan Buddhist monasteries?"}, {"from": "gpt", "value": "Gandharan Buddhist monasteries followed distinctive architectural layouts that evolved over time while maintaining certain consistent organizational principles derived from the functional requirements of monastic life. The typical Gandharan monastery (vihara) was organized around one or more courtyards, with the individual monks' cells arranged in rows around the perimeter of the court, their doors opening inward onto the central space. These cells were small — typically about 2-3 meters square — with a simple stone or mud brick sleeping platform, reflecting the monastic emphasis on simplicity and the renunciation of personal possessions. The central courtyard contained the main stupa of the complex, which was the principal focus of devotion and circumambulation. A separate assembly hall (uposatha hall) served for the communal recitation of the Vinaya (monastic code), ordination ceremonies, and communal gatherings. Larger monasteries might have multiple courtyards serving different functions: residential, ceremonial, and educational. The stupas themselves were typically elevated on high square or circular drums decorated with pilasters, niches containing Buddha and bodhisattva images, and bands of narrative relief carving. The architectural decoration of Gandharan monasteries shows the characteristic fusion of Indian and Hellenistic elements: Corinthian capitals supporting Indic-style arches, acanthus leaf ornament alongside Buddhist lotus motifs, and engaged columns of Greek derivation supporting walls of Indian construction technique. Many monasteries were built using diaper rubble masonry — a technique of facing walls with carefully arranged small stone blocks in alternating diagonal patterns — which is distinctive of the Gandharan tradition and particularly well documented at the Taxila sites."}]} +{"conversations": [{"from": "human", "value": "What is the connection between Gandhara and Tibetan Buddhism?"}, {"from": "gpt", "value": "The connection between Gandhara and Tibetan Buddhism operates primarily through two channels: the figure of Padmasambhava and the transmission of Buddhist texts and iconography through the Central Asian network of which Gandhara was the hub. Padmasambhava, known in Tibet as Guru Rinpoche and revered as the Second Buddha who brought Buddhism to Tibet in the 8th century CE, is according to Tibetan tradition born in Uddiyana — identified by most scholars with the Swat Valley, the ancient Udyana that was one of the most sacred Buddhist landscapes in the Gandharan world. In Tibetan religious geography, Uddiyana (Oddiyana) is one of the four great power places of the tantric tradition, and Padmasambhava's birth there connects Tibetan Buddhism's foundational narrative directly to the Gandharan landscape. The iconographic and philosophical traditions that Padmasambhava and other Indian masters brought to Tibet drew on the accumulated heritage of Buddhist thought and art that had developed over centuries in Gandhara and the broader northwestern Indian tradition. The Central Asian transmission route that brought Mahayana and Vajrayana Buddhist texts to Tibet also passed through the network of Buddhist cultures that Gandhara had seeded along the Silk Road. Earlier Gandharan artistic conventions — modified through centuries of Central Asian transformation — can be traced in Tibetan Buddhist iconography. The continuing veneration of Swat as a sacred landscape by Tibetan Buddhists and the annual pilgrimage to Swat sites by Tibetan lamas represent a living connection between the Gandharan homeland and its Tibetan spiritual descendants."}]} +{"conversations": [{"from": "human", "value": "How did the study of Gandhara develop as an academic discipline?"}, {"from": "gpt", "value": "The academic study of Gandhara has developed over roughly two centuries, from the earliest colonial-era explorations to the highly specialized multidisciplinary field it is today. The foundational figure is James Prinsep (1799-1840), the brilliant secretary of the Asiatic Society of Bengal who in 1837 deciphered both the Brahmi and Kharosthi scripts, thereby unlocking the inscriptional record of ancient India and Gandhara. Alexander Cunningham, the father of Indian archaeology, conducted pioneering surveys in the Gandhara region from the 1840s-1880s and identified many of the major sites. The next great leap came with the excavations of Sir John Marshall at Taxila from 1912 to 1934 — Marshall's meticulous methods and comprehensive publication standards set a new benchmark for South Asian archaeology. The French Archaeological Delegation in Afghanistan (DAFA), established in 1922, conducted crucial work at Hadda, Begram, and other Afghan sites. The Italian Archaeological Mission to Pakistan, working in Swat from 1955 onward, brought systematic modern archaeological methods to the Gandharan core. Key scholarly figures in art historical research include Alfred Foucher, whose early 20th-century work The Greco-Buddhist Art of Gandhara established the field's central questions, and Benjamin Rowland, whose synthetic treatments of Gandharan art became standard references. The discovery of the Gandharan Buddhist manuscripts in the late 1990s created a new subdiscipline centered on manuscript studies led by scholars including Richard Salomon and Mark Allon. Today the field is genuinely international and multidisciplinary, combining archaeology, art history, Buddhist studies, numismatics, epigraphy, and materials science."}]} +{"conversations": [{"from": "human", "value": "What was the role of lay donors in supporting Gandharan Buddhist establishments?"}, {"from": "gpt", "value": "Lay donors were the economic backbone of Gandharan Buddhist institutions, and the inscriptional record left by their donations provides some of our most direct evidence for the social history of ancient Gandhara. The Buddhist economy of merit (punya) created a powerful incentive for lay donation: the belief that generous gifts to the Buddhist community — monks, nuns, stupas, monasteries — generated good karma that would improve the donor's circumstances in future lives created a religious motivation for material generosity that benefited both individual donors and the institutions they supported. Gandharan donation inscriptions, written in Kharosthi on the bases of sculptural gifts or on the stones of stupa and monastery constructions, record gifts from a remarkable social range: kings and queens, members of the military and administrative classes, merchants and traders, artisans and craftspeople, and even relatively humble individuals. The merchant class is particularly well represented, reflecting both their wealth and their perhaps greater dependence on Buddhist karmic logic as a source of legitimacy and moral order in a mobile, cosmopolitan commercial world. Some inscriptions record collaborative donations by groups — trade guilds, monastic subgroups, or family associations — pooling resources for larger commissions. Women donors appear with notable frequency in the inscriptional record, suggesting that Buddhist institutions provided women with a meaningful avenue for public religious expression and the accumulation of merit independent of their male relatives. The types of donations recorded include stupas (or their component parts), Buddha and bodhisattva images, monastic cells, wells, and other infrastructure — the physical landscape of Gandharan Buddhism was literally built stone by stone through this accumulation of individual and collective pious generosity."}]} +{"conversations": [{"from": "human", "value": "What is the significance of the number of Buddha images found in Gandhara?"}, {"from": "gpt", "value": "The sheer quantity of Buddhist sculptures produced in ancient Gandhara is staggering and reflects both the exceptional prosperity of the civilization and the depth of its commitment to Buddhist visual culture. Major excavations at single sites — Hadda in Afghanistan, Jaulian at Taxila, monasteries in the Swat Valley — have yielded hundreds or thousands of individual sculptural pieces including complete statues, architectural elements, and fragments. The total number of Gandharan sculptures in museum collections and private hands worldwide is estimated in the tens of thousands, and this represents only a fraction of what was produced, much of it still in the ground at unexcavated sites or lost to erosion, looting, and destruction. This remarkable productivity reflects a sophisticated workshop system: archaeological evidence points to specialized workshops producing sculptures on a quasi-industrial basis, with standard iconographic types, compositional formulas, and technical procedures that allowed relatively efficient production. Schist carvers in the Swat Valley and stucco workshops in the Peshawar region developed what amounted to production lines for the most common types — seated meditating Buddhas, standing Buddhas, narrative relief panels. The existence of unfinished sculptures at workshop sites confirms this industrial-scale production. The demand was driven by the competitive piety of the donor class — wealthy merchants, officials, and rulers vied to commission images and donate them to monasteries in exchange for merit — and by the physical requirements of Gandharan monastery and stupa decoration, which involved covering enormous surface areas with sculptural programs of great complexity. This production scale means that Gandharan sculpture is relatively accessible for museum collection compared to many ancient artistic traditions, which paradoxically has both facilitated scholarly study and fueled the destructive antiquities trade."}]} +{"conversations": [{"from": "human", "value": "What are some of the most important scholarly works on Gandhara?"}, {"from": "gpt", "value": "The scholarly literature on Gandhara is extensive and multidisciplinary, with several works standing out as particularly foundational or transformative. Alfred Foucher's L'art gréco-bouddhique du Gandhâra (Greco-Buddhist Art of Gandhara), published in two volumes in 1905 and 1922-1951, was the first systematic scholarly treatment of Gandharan art and established the questions and frameworks that still shape the field, even where subsequent scholarship has revised his interpretations. Sir John Marshall's Taxila (3 volumes, 1951) remains the definitive excavation report for that site and a model of comprehensive archaeological publication. Benjamin Rowland's The Art and Architecture of India (multiple editions from 1953) provided the authoritative English-language survey treatment of Gandharan art in the context of broader South Asian artistic traditions. Maurizio Taddei's contributions to Italian scholarship on Swat and Afghan Gandharan art were fundamental. Richard Salomon's Indian Epigraphy (1998) is the standard reference for Kharosthi and other ancient South Asian scripts, and his Ancient Buddhist Scrolls from Gandhara (1999) introduced the Gandharan Buddhist manuscripts to a wider audience. The multi-volume British Library Gandharan Manuscripts Project publications have transformed the field of early Buddhist textual studies. Robert Senior's work on Indo-Scythian coins and Joe Cribb's numismatic research have been indispensable for establishing the chronological framework of the Kushan and related periods. Nicholas Sims-Williams' work on Bactrian language and epigraphy has illuminated the Iranian dimension of Gandharan culture. Elizabeth Errington and Joe Cribb's The Crossroads of Asia (1992) catalog remains an excellent introduction to the subject for general readers."}]} +{"conversations": [{"from": "human", "value": "What was the Gandharan tradition's contribution to the development of Pure Land Buddhism?"}, {"from": "gpt", "value": "The Gandharan region and the broader northwest Indian-Central Asian axis played a significant role in the development and transmission of Pure Land Buddhism, one of the most popular and enduring forms of Mahayana Buddhism across East Asia. Pure Land Buddhism centers on faith in Amitabha (Amida) Buddha and the aspiration to be reborn in his western paradise (the Pure Land or Sukhavati), from which final liberation is more easily attained. The textual foundations of Pure Land Buddhism — the Larger and Smaller Sukhavativyuha Sutras and the Amitayurdhyana Sutra — are thought by many scholars to have been composed or compiled in the northwestern Indian-Central Asian region in the 1st to 3rd centuries CE. The emphasis on the western direction for Amitabha's paradise may reflect geographical imagination oriented from the Central Asian perspective. Early Amitabha imagery appears in Gandharan and northwestern Indian art, where Amitabha is depicted in the headdress of Avalokiteshvara bodhisattva — one of the identification attributes of this figure — suggesting active Pure Land devotion in the region. The transmission of Pure Land texts along the Silk Road from Gandhara through Central Asia to China, where the Larger Sukhavativyuha was translated into Chinese as early as the 2nd century CE by the Parthian monk An Shigao, followed the same route as the broader Buddhist transmission for which Gandhara was the critical node. The enormous subsequent popularity of Pure Land Buddhism in China, Japan, and Korea — making it arguably the most widely practiced form of Buddhism in the world today — thus has deep roots in the Gandharan cultural sphere."}]} +{"conversations": [{"from": "human", "value": "What is known about the daily life of Buddhist monks in Gandhara?"}, {"from": "gpt", "value": "Evidence for the daily life of Buddhist monks in ancient Gandhara comes from multiple sources: the physical remains of monastic complexes, the Vinaya (monastic code) texts that governed monastic behavior, donation inscriptions, the accounts of Chinese pilgrims, and comparative evidence from other contemporary Buddhist societies. The physical layout of Gandharan monasteries tells us much about daily life: the small individual cells equipped with sleeping platforms indicate that monks lived in simple, private but communal circumstances. Communal facilities included assembly halls for collective rituals and recitation, refectories for communal meals, and bathing facilities. The monk's day was structured around the monastic schedule: rising before dawn, meditation and chanting, going on begging rounds (pindapata) to collect food from the lay community in nearby towns and villages (though by the Kushan period many Gandharan monasteries appear to have had kitchen facilities fed by donated supplies rather than daily begging rounds), communal meals (only before noon according to the Vinaya), afternoon periods of study and meditation, and evening chanting. Study was central to Gandharan monastic life — the region's great monasteries had libraries of birchbark and palm-leaf manuscripts, and monks might spend years or decades mastering the canonical and commentarial literature. The Vinaya texts describe elaborate rules governing every aspect of monastic behavior from the proper way to wear the robe to the procedures for dispute resolution within the community. Foreign monks — Chinese, Sogdian, Parthian, and others — resided in Gandharan monasteries, learning Sanskrit and Gandhari and copying texts to carry home, giving the larger establishments an international scholarly atmosphere resembling a medieval university."}]} +{"conversations": [{"from": "human", "value": "How did Gandharan art eventually influence Japanese Buddhist art?"}, {"from": "gpt", "value": "The influence of Gandharan art on Japanese Buddhist art is real but indirect, transmitted through a chain of artistic transformations across Central Asia, China, and Korea before reaching Japan. The process began in Gandhara where the distinctive Buddha image type and the Hellenistic-inflected iconographic vocabulary were established. From Gandhara these conventions traveled the Silk Road into the Buddhist cave complexes of Central Asia — at Kizil, Kumtura, and other sites in the Tarim Basin — where they were modified by contact with Sassanid Iranian, Indo-Iranian, and local Central Asian artistic traditions, producing hybrid styles that are distinctly Central Asian while clearly deriving from Gandharan models. From Central Asia, Buddhism and its art entered China during the Han Dynasty period, and the earliest Chinese Buddhist sculpture — particularly at the Yungang and Longmen cave complexes of the Northern Wei period (5th-6th centuries CE) — shows strong Gandharan-derived characteristics: the treatment of drapery, the facial type, the iconographic formulas for the Buddha image all reflect the Gandharan tradition as mediated through Central Asian workshop practice. From China, Buddhism and Buddhist art were transmitted to Korea in the 4th century CE and to Japan in the 6th century CE, bringing the accumulated artistic tradition that ultimately derived from Gandharan models. The archaic Buddha images of Japan's Asuka and early Nara periods — the bronze Shakyamuni trinity in the Horyuji Golden Hall, the Miroku Bosatsu at Koryuji — show, through their chains of formal ancestry, the distant but traceable lineage that connects Japanese Buddhist art to its Gandharan origins."}]} +{"conversations": [{"from": "human", "value": "What was the climate and natural environment of ancient Gandhara?"}, {"from": "gpt", "value": "The natural environment of ancient Gandhara was in many ways more favorable than the landscape of the region today suggests, and understanding the ancient ecology is important for understanding the civilization's prosperity. Ancient written sources including the accounts of Chinese pilgrims describe Gandhara as a land of exceptional fertility and abundance — Xuanzang wrote of the Peshawar Valley's agricultural richness with apparent admiration even in a period of relative decline. The valley floors of the Peshawar Basin, the Swat Valley, and the Kabul River system were intensively cultivated, watered by a combination of seasonal rainfall, snowmelt from the surrounding mountains, and artificial irrigation systems. The Swat Valley in particular retained its ancient name Udyana (garden or pleasure ground) precisely because of its exceptional natural beauty and agricultural productivity. The forests that covered much of the mountain slopes in ancient times provided timber for construction — the wooden architecture that has not survived — as well as game, fuel, and materials for a wide range of crafts. The rivers were rich in fish. The famous naturalistic quality of Gandharan art — the careful observation of plant forms, animals, and human figures — may partly reflect an environment rich in natural forms available for artistic observation. Climate paleological research suggests that the northwestern South Asian region may have been somewhat wetter in the early centuries CE than today, supporting denser vegetation. Deforestation, soil degradation, and changing precipitation patterns over the subsequent two millennia have produced the somewhat harsher landscape of today, making it difficult to fully imagine the lush garden civilization that ancient sources describe."}]} +{"conversations": [{"from": "human", "value": "What is the relationship between Gandhara and Bactria?"}, {"from": "gpt", "value": "Gandhara and Bactria were neighboring regions with deeply intertwined histories that together formed the core of several major ancient empires and shared a common cultural sphere during crucial periods. Bactria occupied the fertile plains of northern Afghanistan centered on the Oxus (Amu Darya) River valley, while Gandhara lay to its southeast beyond the Hindu Kush mountains. The two regions were connected by mountain passes that, while challenging, were regularly traversed by armies, merchants, and pilgrims. Both regions came under Achaemenid Persian administration, both were conquered by Alexander the Great, and both were part of the Seleucid Empire before the emergence of independent Greek rule. The Greco-Bactrian Kingdom, which broke away from Seleucid control around 250 BCE under Diodotus I, expanded southward across the Hindu Kush to incorporate Gandhara, forming the Indo-Greek Kingdom under Demetrius I around 180 BCE. The shared Hellenistic cultural traditions of the two regions created the foundation for Gandharan art. Under the Kushans, both Bactria and Gandhara were central territories of the empire — indeed, the Kushans originated from the Bactrian region. The city of Kapisa (Begram), located at the foot of the Hindu Kush passes connecting Bactria and Gandhara, served as a Kushan royal capital precisely because of its command of this inter-regional connectivity. The art of Bactria and Gandhara shares many characteristics and should be understood as a single artistic sphere with regional variations, rather than two entirely separate traditions. The Gandharan Buddhist manuscripts were likely produced across a network that included both Gandharan and Bactrian monastic centers."}]} +{"conversations": [{"from": "human", "value": "What is the lotus motif in Gandharan art and what does it symbolize?"}, {"from": "gpt", "value": "The lotus (padma in Sanskrit) is one of the most pervasive and symbolically rich motifs in Gandharan Buddhist art, appearing in architectural decoration, as an iconographic attribute of divine figures, as a throne or pedestal for Buddha images, and in narrative relief contexts. Its symbolic significance in Buddhist art draws on the lotus's natural habit of growing from muddy water to produce flowers of perfect purity and beauty — the visual metaphor for the possibility of spiritual enlightenment arising from the muddied waters of ordinary existence (samsara). In Gandharan art, the lotus appears most prominently as the lotus throne: Buddha and bodhisattva figures are frequently shown seated on or standing above a lotus flower, indicating their transcendence of the ordinary world and their pure, spiritually elevated nature. The lotus also appears as a handheld attribute, particularly of Avalokiteshvara (Padmapani — 'lotus-bearer'), one of the major bodhisattvas whose very name incorporates the lotus symbol. Architecturally, lotus petal motifs are used extensively in the decoration of stupa bases, capitals, and moldings — sometimes in combination with Hellenistic acanthus leaf motifs, creating characteristically hybrid Gandharan decorative schemes. In narrative reliefs, lotuses often mark sacred spaces or divine presences: at the nativity scene, for example, the infant bodhisattva is sometimes shown stepping on lotus flowers that spring up miraculously beneath his feet. The lotus motif was present in Indian art long before Buddhism, with roots in the broader South and Southeast Asian veneration of the lotus as a sacred plant, but Buddhist art gave it a specific doctrinal elaboration that became central to Buddhist visual vocabulary across all of Asia."}]} +{"conversations": [{"from": "human", "value": "What was the significance of relics in Gandharan Buddhism?"}, {"from": "gpt", "value": "The veneration of relics was one of the most fundamental and emotionally powerful practices of Gandharan Buddhism, and the physical landscape of Gandhara was largely organized around the location, housing, and worship of sacred relics. Buddhist relics were of three types: corporeal relics (sharira) — physical remains of the Buddha or Buddhist saints, including bones, teeth, hair, and ashes; relics of use (paribhogika) — objects that the Buddha or saints had touched or used; and commemorative relics (uddesika) — images and other objects created to commemorate and provide a focus for devotion. The most prestigious were corporeal relics of the historical Buddha himself, and Buddhist tradition held that after the Buddha's parinirvana his cremated remains were distributed among eight ancient Indian kingdoms, each of which built a stupa to enshrine their portion. The Mauryan emperor Ashoka is said to have later reopened these stupas, redistributed the relics, and enshrined them in 84,000 new stupas across the Buddhist world — Gandhara received numerous such establishments. The Kanishka casket found at Peshawar actually contains small bone fragments along with gold and pearl objects, providing direct physical evidence of the relic veneration that motivated the construction of one of the greatest stupas of the ancient world. Chinese pilgrims describe in considerable detail the relic veneration practices they witnessed in Gandhara: the regular ceremonial display of relics on festival days when massive crowds of devotees would gather, the miraculous phenomena (lights, fragrances, healing miracles) reported to occur in the presence of relics, and the competitive patronage of rulers who sought to acquire and enshrine prestigious relics. Relic veneration was thus not a peripheral cult but the central devotional practice around which the entire Gandharan Buddhist landscape was organized."}]} +{"conversations": [{"from": "human", "value": "What connections exist between Gandhara and ancient Sri Lanka?"}, {"from": "gpt", "value": "The connections between Gandhara and ancient Sri Lanka were indirect but significant, operating primarily through the shared frameworks of Buddhism and the broader South Asian cultural world. Sri Lanka received Buddhism from the Indian mainland — tradition holds that the Mauryan emperor Ashoka sent his son Mahinda (Mahendra) and daughter Sanghamitta to bring Buddhism to Sri Lanka in the 3rd century BCE. Sri Lanka subsequently developed into a major center of Theravada Buddhist tradition, maintaining the Pali language as its sacred literary medium and the Pali Canon as its scriptural authority. Gandhara, by contrast, was primarily associated with the Sarvastivadin and other Hinayana schools alongside Mahayana, and used Sanskrit and Gandhari (rather than Pali) as its primary religious languages. Despite these differences, there were connections: the Sri Lankan Buddhist chronicles (Mahavamsa, Dipavamsa) record contacts between the Sri Lankan Sangha and Buddhist communities in the broader South Asian world including the northwest. The development of the anthropomorphic Buddha image — pioneered in Gandhara and Mathura — influenced Sri Lankan Buddhist art, and early Sri Lankan Buddha images show some Gandharan-inflected characteristics. Theravada monks from Sri Lanka traveled to India for study and pilgrimage, potentially bringing them into contact with the Gandharan tradition. The Chinese pilgrims who visited both Sri Lanka and Gandhara serve as indirect points of connection, comparing the Buddhist traditions of the two regions in their accounts. The contrasting trajectories of the two regions — Sri Lanka preserving an unbroken Theravada tradition to the present day while Gandhara's Buddhism was extinguished — highlight how different the historical fortunes of Buddhist communities could be."}]} +{"conversations": [{"from": "human", "value": "What role did Gandhara play in the transmission of mathematics and science along the Silk Road?"}, {"from": "gpt", "value": "Gandhara's role as a Silk Road hub made it a conduit not only for goods and religious ideas but also for scientific and mathematical knowledge, though this dimension of its cultural legacy is less well documented than its artistic and religious contributions. The great university at Taxila was a center of mathematical and scientific learning: ancient Indian sources indicate that students came to Taxila to study astronomy (jyotisha), medicine (ayurveda), mathematics, and related disciplines. The Indian mathematical tradition — including the development of the decimal place-value number system, early algebraic methods, and sophisticated astronomical calculation — was one of the most important scientific traditions in the ancient world, and Taxila was one of its major institutional homes. Knowledge of Indian mathematics and astronomy spread westward along the Silk Road through Gandhara and was eventually transmitted to the Islamic world, which absorbed and built upon Indian mathematical achievements — the Arabic numerals that we use today are ultimately derived from Indian mathematical notation. Medical knowledge also traveled through Gandhara: the Ayurvedic medical tradition associated with physicians trained at Taxila was known to Greek and Roman writers, and medical plant knowledge flowed in both directions along the trade routes. Buddhist monasteries, as centers of education and repositories of manuscripts, played an important role in preserving and transmitting scientific knowledge alongside religious texts. The specific mechanisms by which scientific knowledge was transferred through Gandhara are less well documented than the artistic and religious transmissions, but the geographic position of Gandhara at the junction of the great intellectual traditions of India, Persia, Greece, and Central Asia made it inevitably a site of scientific exchange."}]} +{"conversations": [{"from": "human", "value": "How did Gandharan art depict the Buddha's enlightenment?"}, {"from": "gpt", "value": "The enlightenment of the Buddha — the moment when Siddhartha Gautama achieved complete awakening under the Bodhi tree at Bodh Gaya — is one of the central events depicted in Gandharan narrative art, treated with both theological precision and dramatic intensity. Gandharan sculptors typically represented the enlightenment scene (known as the Maravijaya, or victory over Mara) with a cluster of related iconographic elements drawn from canonical Buddhist accounts of the event. The central figure is the Buddha seated in the earth-touching pose (bhumisparsha mudra): his right hand descends to touch the earth, calling the earth goddess (Prithvi or Sthavara) to witness his accumulated merit against the challenges of the demon Mara. The earth-touching gesture is one of the most distinctive and frequently depicted mudras in all of Buddhist art, and Gandharan sculptors were among the first to establish its canonical form. Around the central figure, Gandharan reliefs typically depict the armies of Mara — shown as demons, monsters, and warriors — attacking the meditating bodhisattva with weapons that are transformed into flowers by his spiritual power. Mara himself appears as a commanding figure directing his assault. After the defeat of Mara's armies, Mara's daughters are sometimes shown attempting to seduce the bodhisattva with their beauty — another canonical episode from the enlightenment narrative. The earth goddess Sthavara is depicted rising from the ground to wring water from her hair, releasing the flood that routs Mara's forces — a particularly dynamic and visually effective Gandharan contribution to the enlightenment iconography. Some Gandharan reliefs also show celestial beings raining flowers upon the newly enlightened Buddha in celebration."}]} +{"conversations": [{"from": "human", "value": "What is the Gandharan tradition of depicting the Parinirvana?"}, {"from": "gpt", "value": "The Parinirvana — the final passing of the historical Buddha into complete nirvana after his death, which in Buddhist understanding is not death in the ordinary sense but the ultimate liberation from the cycle of rebirth — is one of the most frequently depicted subjects in Gandharan Buddhist art, and the Gandharan representations of this event are among the most emotionally powerful examples of ancient narrative sculpture. The canonical account of the Parinirvana describes the Buddha lying on his right side between twin sala trees in a forest grove near Kushinagara, surrounded by his assembled disciples and a great multitude of devotees, divine beings, and even animals, all overwhelmed with grief at his passing. Gandharan sculptors depicted this scene with remarkable attention to emotional expression and human detail. The central figure of the reclining Buddha — shown in the distinctive lion-sleeping posture on his right side, usually with his face directed outward toward the viewer — is shown with the complete serenity of ultimate liberation. Around him, the assembled mourners express their grief in ways that range from restrained monastic composure to uncontrolled lamentation — disciples weeping, beating their breasts, supporting one another. Individual figures are often depicted with specificity: the grief-stricken Ananda, the Buddha's faithful personal attendant, is a particularly prominent figure in these scenes. The presence of non-human mourners — divine beings, animals, and even supernatural creatures — is often included, suggesting the universal scope of the loss. Some Gandharan Parinirvana reliefs include the fire cremation of the Buddha's body and the subsequent division of the relics — extending the narrative into the post-mortem events that gave rise to the relic cult that was so central to Gandharan Buddhist practice."}]} +{"conversations": [{"from": "human", "value": "What was the role of Gandhara in the development of Buddhist philosophy?"}, {"from": "gpt", "value": "Gandhara's contribution to the development of Buddhist philosophy is substantial, though it is sometimes overshadowed by the more dramatic artistic legacy. The region was home to sophisticated philosophical activity across multiple Buddhist schools and produced some of the most important thinkers in the history of Buddhist thought. The Sarvastivadin school, most closely associated with the northwest Indian-Gandharan region and with the Fourth Buddhist Council convened by Kanishka, developed the Abhidharma (higher dharma) analysis of Buddhist doctrine with great sophistication. The Mahavibhasha (Great Commentary), the massive compendium of Sarvastivadin Abhidharma that was compiled at the Fourth Council, became the foundation of the Vaibhashika school of Buddhist philosophy — one of the major philosophical positions analyzed and critiqued by subsequent thinkers. The philosopher Vasubandhu, one of the greatest systematic thinkers in the history of Buddhism, is associated with Gandhara in several traditional accounts: he is said to have composed his foundational work the Abhidharmakoshabhasya (Treasury of Abhidharma with Commentary) as an exposition and critique of Sarvastivadin doctrine from a Sautrantika perspective, before his conversion to Mahayana. Vasubandhu subsequently became, with his brother Asanga, the founder of the Yogacara (Mind-Only) school of Mahayana philosophy — one of the two great Mahayana philosophical systems alongside Madhyamaka. The poet-philosopher Ashvaghosha, associated with Kanishka's court, made important contributions to Buddhist literary and philosophical expression. The Prajnaparamita (Perfection of Wisdom) literature — foundational for Mahayana philosophy — was likely composed or compiled in the northwest Indian-Gandharan region."}]} +{"conversations": [{"from": "human", "value": "What is the modern political context of Gandharan archaeological sites?"}, {"from": "gpt", "value": "The modern political context of Gandharan archaeological sites is deeply complex and has profound implications for heritage preservation, scholarly access, and cultural identity. The Gandharan heartland is divided between two countries — Pakistan and Afghanistan — whose political circumstances have been turbulent for decades and have created serious challenges for archaeological work and site protection. In Pakistan, the Gandharan region lies primarily in Khyber Pakhtunkhwa province, a region that has experienced significant security challenges related to Taliban activity, particularly in the period from approximately 2007 to 2015 when major insurgent operations affected the Swat Valley. During this period, Taliban forces deliberately destroyed numerous Buddhist sculptures and rock carvings in the Swat Valley on iconoclastic religious grounds, causing irreversible damage to a UNESCO-recognized cultural landscape. The Pakistani military operation that retook Swat in 2009 brought improved security, and subsequent years have seen significant investment in archaeological site protection, museum renovation, and tourism infrastructure in the region. Sites like Taxila and Takht-i-Bahi now receive substantial visitor numbers and are maintained to a reasonable standard. In Afghanistan, the situation has been far more catastrophic: the destruction of the Bamiyan Buddhas in 2001, the systematic looting of sites during the civil war period and subsequently, and the return of Taliban rule in 2021 have created an ongoing crisis for Afghan cultural heritage including numerous Gandharan sites. The international community, through UNESCO and other bodies, continues to work on documentation, advocacy, and capacity building for heritage protection, but the political and security constraints remain formidable."}]} +{"conversations": [{"from": "human", "value": "What were the most common hand gestures (mudras) depicted in Gandharan Buddhist sculpture?"}, {"from": "gpt", "value": "Mudras — the formalized hand gestures that carry specific iconographic and theological meanings in Buddhist art — are one of the primary means by which Gandharan sculptors communicated the identity and spiritual state of the figures they depicted. The most frequently encountered mudras in Gandharan Buddhist sculpture constitute a visual vocabulary that was established in Gandhara and transmitted across Buddhist Asia. The Dharmachakra mudra (turning the wheel of the law) shows both hands raised to chest level with the thumbs and index fingers forming circles — it represents the Buddha giving his first sermon at Deer Park near Varanasi and is one of the most theologically significant gestures, signifying the initiation of the Buddhist teaching in the world. The Abhaya mudra (gesture of fearlessness and protection) raises the right hand to shoulder height with the palm facing outward — it conveys the Buddha's assurance of protection and the absence of fear, and is one of the most common mudras in Gandharan standing Buddha figures. The Varada mudra (gesture of generosity and gift-giving) shows the right or left hand extended downward with the palm outward and fingers pointing down, symbolizing the bestowal of blessings and the fulfillment of wishes. The Bhumisparsha mudra (earth-touching gesture) is the distinctive gesture of the enlightenment episode, with the right hand descending to touch the earth as the Buddha calls on the earth to witness his accumulated merit. The Dhyana mudra (meditation gesture) shows both hands resting in the lap with palms upward and right hand over left — it represents the meditative absorption fundamental to Buddhist practice and is used for seated Buddha figures in meditation. These mudras, established in the Gandharan tradition, became part of the standard iconographic language of Buddhist art across all of Asia."}]} +{"conversations": [{"from": "human", "value": "What archaeological evidence exists for religious diversity in ancient Gandhara?"}, {"from": "gpt", "value": "Archaeological evidence for religious diversity in ancient Gandhara is abundant and consistently supports the textual and numismatic picture of a civilization in which multiple religious traditions coexisted, competed, and influenced one another. Buddhist remains are by far the most visible in the archaeological record — the thousands of stupas, monasteries, and Buddhist sculptures scattered across the Gandharan landscape testify to Buddhism's dominant institutional presence. However, the archaeological record also reveals the presence of other religious traditions. Hindu temples and images have been found at various Gandharan sites: Shiva lingas, Vishnu images, and figures of other Hindu deities appear in the archaeological record, increasing in frequency in the later periods of Gandharan history as Brahmanical Hindu traditions reasserted themselves across South Asia. The fire temples and altars associated with Zoroastrian practice are more difficult to identify archaeologically, but some structural remains and the abundant fire deity iconography on Kushan coins point to an active fire-worship tradition. Greek religious practices — the veneration of Zeus, Apollo, Athena, and Dionysus — are evidenced by objects including statuettes, architectural elements, and coin types at sites including Taxila and Ai-Khanoum. Terracotta figurines of mother goddesses and other folk religious figures appear throughout the Gandharan archaeological record in all periods, representing the popular religious life of ordinary people that coexisted with the more institutionalized traditions. The Taxila excavations revealed temple structures that may be associated with multiple religious traditions, and the stratigraphic sequence demonstrates the succession and sometimes overlap of different religious communities across centuries of occupation."}]} +{"conversations": [{"from": "human", "value": "What was Gandhara's contribution to the development of the bodhisattva concept?"}, {"from": "gpt", "value": "Gandhara's contribution to the development and visual elaboration of the bodhisattva concept was significant, particularly in providing the artistic vocabulary through which this theologically complex idea was made accessible to ordinary Buddhist worshippers. The bodhisattva concept — the idea of a being who postpones final liberation out of compassion for all sentient beings, dedicating countless lifetimes to accumulating the wisdom and merit needed for full Buddhahood while actively helping others — was one of the central innovations of Mahayana Buddhism. While the intellectual development of the bodhisattva ideal occurred primarily in Buddhist philosophical and literary texts, Gandharan sculptors gave it tangible, devotionally powerful visual form. The Gandharan bodhisattva image — the princely, jeweled figure contrasted with the simply robed Buddha — became the standard iconographic type for bodhisattva representation across Buddhist Asia. The most important bodhisattvas depicted in Gandharan art include Maitreya, the future Buddha whose coming gives hope to communities in the difficult present age; Avalokiteshvara (Padmapani), the bodhisattva of compassion who became the most widely venerated bodhisattva across Asian Buddhism, eventually transformed in East Asian Buddhism into the female figure Guanyin; and Vajrapani, the thunderbolt-bearer who accompanies and protects the Buddha. The Vajrapani figure in Gandharan art is particularly interesting: he is depicted as a muscular, heroic protector figure derived from the Hellenistic Heracles type, whose thunderbolt attribute was equated with the vajra (thunderbolt) of Buddhist symbolism. This Heracles-Vajrapani is one of the most vivid examples of the Hellenistic iconographic transformation at work in Gandharan art."}]} +{"conversations": [{"from": "human", "value": "What is the current state of Gandharan research and new discoveries?"}, {"from": "gpt", "value": "Gandharan research remains an active and indeed dynamic field, with new discoveries and methodological advances regularly transforming our understanding of the civilization. The Gandharan Buddhist manuscripts continue to be the most transformative ongoing area of research: new manuscripts continue to surface, the scholarly editions of previously acquired manuscripts are ongoing, and each new text analyzed potentially changes our picture of early Buddhist literary traditions. The British Library Gandharan Manuscripts Project, the work of the University of Washington's Early Buddhist Manuscripts Project, and contributions from scholars in Europe, Australia, and Japan have collectively produced a small library of specialist publications. Archaeological work in Pakistan has benefited from improved security conditions in Swat since approximately 2012: the Italian Archaeological Mission has resumed fieldwork, and Pakistani archaeologists from the Department of Archaeology and Museums continue excavations at numerous sites. New techniques including ground-penetrating radar, drone photogrammetry, LiDAR survey, and satellite imagery analysis are being applied to map unexcavated sites and identify new areas for investigation. Materials analysis techniques including isotopic analysis, X-ray fluorescence, and radiocarbon dating of organic materials in stucco sculptures are providing more precise dating and sourcing information than was previously possible. The repatriation debate surrounding Gandharan objects in international collections continues to generate both legal and scholarly activity. Digital humanities projects are creating comprehensive online databases of Gandharan sculpture, coins, and inscriptions, making the material more accessible to researchers worldwide. Despite the serious challenges posed by the security situation in Afghanistan and Pakistan, Gandharan studies remains a productive and intellectually exciting field with many fundamental questions still open to investigation."}]} +{"conversations": [{"from": "human", "value": "Explain the concept of the chakravartin (universal monarch) as it appears in Gandharan art and ideology."}, {"from": "gpt", "value": "The chakravartin — literally 'wheel-turner' or universal monarch in Sanskrit — was one of the most powerful political and religious concepts in ancient South Asian thought, and it played a central role in the royal ideology of Gandharan rulers, particularly the Kushans. The concept holds that at rare intervals in cosmic history, a supreme ruler arises who conquers all the world through dharma rather than violence, turning the wheel of righteous law across the entire earth. The same set of physical marks (the thirty-two major and eighty minor marks of a great being, or mahapurusha) that identify a chakravartin also identify a Buddha — the traditional biography of the Buddha incorporates this duality, as the brahmin seers who examine the infant Siddhartha predict that he will become either a universal monarch or a supreme Buddha. This ideological connection between supreme political and spiritual power was extraordinarily useful for Buddhist rulers: by presenting themselves as chakravartins, kings aligned themselves with the highest aspirations of Buddhist political theology and legitimized their power through the Buddhist cosmic framework. Kanishka I was presented in Buddhist tradition as a chakravartin, and his coins reflect this by depicting him as a cosmic ruler in command of the diverse religious forces of his empire. Gandharan art depicts the chakravartin concept through the wheel symbol (dharmachakra), which appears on stupa decorations, coins, and the bases of Buddha images. The historical Buddha's First Sermon is called 'setting in motion the wheel of the dharma' (dharmachakrapravartana), deliberately invoking the chakravartin imagery and suggesting that the Buddha's spiritual sovereignty exceeded even the greatest political power. This fusion of political and spiritual authority was central to the relationship between Gandharan Buddhist institutions and their royal patrons."}]} +{"conversations": [{"from": "human", "value": "What do we know about the craft guilds and artisan communities of ancient Gandhara?"}, {"from": "gpt", "value": "The craft guilds (shreni) of ancient South Asia, including those that operated in Gandhara, were important economic and social institutions that organized artisanal production, maintained quality standards, transmitted craft knowledge, and served as collective donors to religious establishments. While direct documentary evidence specifically from Gandhara is limited compared to the more extensive guild records from other parts of ancient India, a combination of inscriptional evidence, archaeological finds, and comparative analysis allows us to reconstruct something of the artisan world that produced the extraordinary sculptural output of Gandharan civilization. Donation inscriptions at Gandharan Buddhist sites record gifts from identified craft groups — weavers, jewelers, metal workers — suggesting that guilds functioned as collective religious donors in the same way they did elsewhere in ancient South Asia. The physical evidence of craft production at Taxila is particularly informative: excavations have revealed distinct craft quarters where bead-makers, metal-workers, and potters worked in what appear to be organized workshop settings, with evidence of standardized production techniques and tools. The schist sculpture workshops of the Swat Valley and the stucco workshops of the Peshawar region must have been substantial enterprises employing specialized labor for carving, finishing, painting, and installation of sculptural programs. The standardization visible in Gandharan sculpture production — the use of consistent iconographic formulas, standardized proportions, and repeated compositional solutions — suggests organized workshop practice rather than purely individual artistic creation. Craft knowledge was likely transmitted through family and apprenticeship networks within the guild framework, with master craftsmen training younger workers in the specific techniques of schist carving or stucco modeling that characterized the Gandharan tradition."}]} +{"conversations": [{"from": "human", "value": "How did Gandhara relate to the ancient kingdom of Kapisha?"}, {"from": "gpt", "value": "Kapisha (also known as Kapisa) was an ancient kingdom centered in the region of modern Begram (ancient Kapisi) and the Panjshir Valley in northeastern Afghanistan, immediately northwest of the Hindu Kush passes that connected it with the Gandharan heartland to the south. The relationship between Kapisha and Gandhara was one of close geographic, political, and cultural interdependence across much of ancient history. Both regions were incorporated into the same imperial systems — Achaemenid, Seleucid, Greco-Bactrian, and Kushan — and their shared fate meant that their cultural development followed parallel tracks. Under the Kushan Empire, Kapisa served as a particularly important royal center: Begram (ancient Kapisi) was used as the Kushan summer capital, offering a more temperate climate than the hot plains of Peshawar, and the Begram hoard discovered by French archaeologists vividly illustrates the cosmopolitan luxury of the Kushan court at this site. The city of Kapisi (Begram) is mentioned by ancient geographers including Ptolemy and later by Chinese pilgrims. Xuanzang, who passed through the region in 630 CE, described Kapisa as a kingdom of considerable extent and importance, noting its Buddhist establishments and the evidence of earlier royal magnificence. The Shahi dynasties — Turki Shahi and Hindu Shahi — who ruled the region after the collapse of Kushan power controlled both the Kapisha and Gandhara regions as part of a connected territorial unit. The artistic traditions of Kapisha belong to the broader Gandharan cultural sphere, and the paintings and sculptures from Afghan sites in this region show the same fusion of Hellenistic, Indian, and Iranian elements characteristic of Gandharan art more generally."}]} +{"conversations": [{"from": "human", "value": "What was the significance of the number 84,000 in Gandharan Buddhism?"}, {"from": "gpt", "value": "The number 84,000 appears repeatedly in Buddhist texts and traditions associated with the Gandharan cultural sphere and carries profound theological and cosmological significance within the Buddhist worldview. The number derives from an ancient Indian conception of completeness or totality — it represents the full scope of Buddhist teaching, cosmic multiplicity, or universal spiritual action. Emperor Ashoka is the figure most associated with the number in Gandharan and broader Buddhist tradition: he is credited in Buddhist legendary accounts with building 84,000 stupas across the Buddhist world to enshrine relics of the Buddha, corresponding to the 84,000 dharmas (teachings) of the Buddha. This tradition gave enormous prestige to stupa veneration throughout the Gandharan region, as every major stupa could potentially claim Ashokan foundation and the presence of genuine Buddha relics. The Chinese pilgrim Xuanzang repeatedly invokes the 84,000 stupa tradition in his account of the Gandharan landscape, often describing local traditions that associated specific stupas with Ashokan foundation. The number also appears in the context of the 84,000 teachings of the Buddha (said to correspond to the 84,000 defilements of ordinary human beings), the 84,000 gates of the dharma, and various other cosmic enumerations. In the context of Gandharan art, the number symbolizes abundance and completeness — the goal of comprehensive representation of Buddhist doctrine and narrative in the sculptural programs of monasteries and stupas. Whether or not Ashoka literally built 84,000 stupas (which is certainly legendary), the tradition served the important function of linking every Buddhist establishment in Gandhara back to the great imperial patron of Buddhism and the authenticated relics of the historical Buddha himself."}]} +{"conversations": [{"from": "human", "value": "What was the Shahi dynasty and its relationship to late Gandharan culture?"}, {"from": "gpt", "value": "The Shahi dynasties — conventionally divided into the Turki Shahi (circa 7th-9th centuries CE) and Hindu Shahi (circa 9th-10th centuries CE) — represent the last major indigenous ruling powers of the Gandharan region before the Islamic conquests brought a decisive end to the pre-Islamic cultural order. The Turki Shahis appear to have been of Central Asian (possibly Turkic or mixed Turkic-Iranian) origin, ruling from Kabul and extending their authority over the Gandharan heartland. Despite their non-Indian origin, the Turki Shahis adopted Hindu-Buddhist syncretic religious practices, patronized both Buddhist and Hindu establishments, and continued the tradition of monumental religious construction. Their coins show a combination of Indian and Central Asian iconographic elements. The Hindu Shahis, who succeeded them in approximately the 9th century, were a Hindu dynasty that made Hinduism the dominant court religion while Buddhism continued to exist in a reduced capacity in their realm. The Hindu Shahis built numerous Hindu temples across the Gandharan region, several of which have been excavated by archaeologists, and they are notable for erecting sun temples (dedicated to Surya the sun god) at sites including Kafirkot on the Indus and the famous sun temple at Multan. The Hindu Shahi period represents the final chapter of the ancient Gandharan cultural synthesis — an impoverished and diminished version of the earlier cosmopolitan civilization, but one that maintained continuity with it. The Shahi states were progressively conquered by the Ghaznavid ruler Mahmud of Ghazni in a series of campaigns in the early 11th century, bringing the Shahi dynasty to an end and completing the Islamization of the Gandharan region."}]} +{"conversations": [{"from": "human", "value": "How did ancient Gandharan physicians and medicine connect with Buddhist institutions?"}, {"from": "gpt", "value": "Medicine in ancient Gandhara was deeply embedded in Buddhist institutional life, reflecting the broader South Asian tradition in which healing knowledge was a component of the intellectual curriculum of learned institutions, and in which Buddhist compassion for the suffering of all beings provided a theological motivation for medical practice. The university at Taxila, one of the ancient world's great centers of learning, was specifically associated with medical education in ancient Indian literary sources. The physician Jivaka, who appears in Pali Buddhist texts as the Buddha's personal physician and as a healer of great renown, is said in several sources to have trained in medicine at Taxila under the supervision of a famous teacher, undergoing a rigorous course of study that included botanical knowledge, diagnosis, and surgical techniques. Whether or not the Jivaka story is historically accurate in all its details, it reflects a real tradition linking Taxila with medical education. Buddhist monasteries throughout the Gandharan world included medical care as part of their charitable activities: the Vinaya texts prescribe that monasteries should maintain medical supplies and that monks with medical knowledge should care for their sick brethren. Monastic pharmacopoeias — lists of medicinal plants and their uses — are attested in Buddhist textual traditions. Archaeological evidence at some Gandharan monastery sites includes storage facilities that may have served as pharmacies, and the wide knowledge of botanical resources documented in Buddhist texts includes many medicinal plants native to the Gandharan region. The integration of medical knowledge with Buddhist institutions meant that Gandhara participated actively in the transmission of Ayurvedic medical knowledge along the Silk Road, contributing to the broader exchange of healing traditions between the medical systems of India, Persia, Greece, and eventually the Islamic world."}]} +{"conversations": [{"from": "human", "value": "What is Padmasambhava's connection to the Swat Valley and Gandharan Buddhism?"}, {"from": "gpt", "value": "Padmasambhava — revered in Tibetan Buddhism as Guru Rinpoche, the Precious Teacher, and regarded as the Second Buddha who established Vajrayana Buddhism in Tibet — has his most sacred biographical connection to the Swat Valley, the ancient Udyana that was one of the holiest and most beautiful Buddhist landscapes of the Gandharan world. According to Tibetan religious tradition, Padmasambhava was miraculously born in the 8th century CE in Uddiyana (Oddiyana), identified by most scholars and within Tibetan tradition itself as the Swat Valley, emerging from a lotus flower in the middle of Lake Dhanakosa. His miraculous birth from a lotus connects him symbolically with the most sacred plant of Buddhist iconography and establishes him as a transcendent figure rather than an ordinary human being. The Tibetan tradition holds that Uddiyana was already a center of advanced tantric Buddhist teachings — dakinis (wisdom female figures central to Vajrayana Buddhism) and tantric adepts were concentrated there — and that Padmasambhava mastered these teachings in Uddiyana before embarking on his mission to Tibet. The physical landscape of the Swat Valley is dotted with sites sacred to the Padmasambhava tradition: rock paintings, cave retreats, and natural features associated with his meditation practice and miraculous activities are venerated to this day by Tibetan pilgrims who make the journey to Swat. The connection between Padmasambhava and Swat has made the valley one of the most important pilgrimage destinations in the Tibetan Buddhist world, and it has generated substantial scholarly interest in the relationship between the late Gandharan Buddhist culture of Swat — which was still functioning when Padmasambhava's activities are traditionally dated — and the tantric Buddhist traditions that he brought to Tibet."}]} +{"conversations": [{"from": "human", "value": "What were the major festivals and religious ceremonies of Gandharan Buddhism?"}, {"from": "gpt", "value": "The religious calendar of Gandharan Buddhism was rich with festivals and ceremonies that served both devotional and social functions, bringing together monks, nuns, lay devotees, and the wider community in shared religious observance. Chinese pilgrim accounts, Vinaya texts, and comparative evidence from other Buddhist cultures allow us to reconstruct something of this ceremonial landscape. The most important regular ceremonies were tied to the Buddhist lunar calendar: the Uposatha days (the new and full moon days and the two quarter-moon days) were times for communal monastic recitation of the Vinaya, for lay observance of the eight precepts, and for increased devotional activity at stupas and monasteries. The major annual festivals included celebrations of the Buddha's birth, enlightenment, and first sermon — events commemorated at sites traditionally associated with these episodes and involving large public gatherings, the display of relics, and elaborate offerings. Faxian describes witnessing spectacular festivals in the Gandharan region during his visit around 400 CE: processions of richly decorated carts carrying images of the Buddha and bodhisattvas through city streets, attended by thousands of lay devotees and monks, with music, dancing, incense, flowers, and food offerings creating an atmosphere of joyful religious celebration. The festival associated with the veneration of the famous bowl relic of the Buddha at Purushapura (Peshawar) attracted pilgrims from great distances. The Kathina festival at the end of the monsoon retreat (Vassa), when lay devotees offered robes to the monastic community, was another important annual ceremony. These festivals served the crucial social function of bringing together the monastic and lay communities, reinforcing the bonds of mutual dependence and shared identity that sustained Buddhist institutions through the patronage and devotion of the lay population."}]} +{"conversations": [{"from": "human", "value": "How does the Gandharan artistic tradition compare to contemporary Roman provincial art?"}, {"from": "gpt", "value": "Comparing Gandharan art with Roman provincial art is illuminating because both traditions faced the common challenge of maintaining a cosmopolitan artistic koine while adapting it to local needs, religious programs, and aesthetic sensibilities — and because the comparison reveals both the genuine Hellenistic common heritage and the very different cultural frameworks within which similar formal vocabularies were deployed. Roman provincial art — the artistic production of the Roman Empire's frontier regions from Britain to Syria to Egypt — shows enormous regional variation but maintains recognizable connections to the metropolitan Roman artistic tradition through the use of Roman sculptural techniques, architectural orders, portraiture conventions, and mythological iconography. Like Gandharan art, Roman provincial art often shows a tension between the aspiration toward metropolitan sophistication and the pull of local traditions. Both traditions produced quantities of decorative sculpture for public and religious buildings that drew on a shared Hellenistic formal vocabulary of acanthus scrolls, Corinthian capitals, garland motifs, and figural types. Both show the adaptation of mythological figures to local religious needs. However, the differences are equally striking: Gandharan art was fundamentally Buddhist in its purpose, organizing its Hellenistic formal inheritance entirely around the representation of Buddhist narrative and doctrine, while Roman provincial art served the varied religious, commemorative, and decorative needs of Roman polytheism and the imperial cult. The emotional and spiritual register of Gandharan art — its orientation toward transcendence, enlightenment, and release from suffering — is quite different from the civic, commemorative, and polytheistic character of Roman provincial production. The comparison ultimately highlights how thoroughly the Gandharan artists transformed their Hellenistic inheritance into something genuinely new and specifically Buddhist."}]} +{"conversations": [{"from": "human", "value": "What was the importance of the Kabul River in Gandharan civilization?"}, {"from": "gpt", "value": "The Kabul River (ancient Cophen, mentioned by Greek sources) was one of the most important geographic and economic features of the Gandharan landscape, serving as a major artery of communication, trade, and agricultural irrigation that connected the Gandharan heartland with both the Afghan highlands to the west and the Indus River system to the east. Rising in the mountains of central Afghanistan near Kabul and flowing approximately 700 kilometers eastward through the Kabul Valley, past the Khyber region, and through the Peshawar Valley before joining the Indus at Attock, the Kabul River effectively defined the main corridor of movement through the Gandharan world. The great cities of Gandhara were situated along or near the Kabul River and its tributaries: Kapisi (Begram) near its upper course, Nagarahara (Jalalabad) along its middle section, and the Peshawar Valley cities including Purushapura and Pushkalavati at its lower reaches. The river was an important source of irrigation for the fertile Peshawar plain, and its waters supported the intensive agriculture that fed the Gandharan population and generated the agricultural surplus that funded the great monasteries and art workshops. Trade goods moving between Central Asia and India followed the Kabul River valley, making it the commercial lifeline of the region. The river crossings were strategic military and commercial chokepoints — control of the river fords was essential for any power seeking to govern the region. Buddhist sites were often located near the river banks: pilgrims and monks traveling the route followed the river, and monasteries positioned along the river benefited from the donations of passing merchants and travelers. The Kabul River remains today one of the defining geographic features of the territory that was ancient Gandhara."}]} +{"conversations": [{"from": "human", "value": "What is the Peshawar Valley's significance as the heartland of Kushan civilization?"}, {"from": "gpt", "value": "The Peshawar Valley occupied a position of supreme importance within the Kushan Empire that makes it appropriate to consider it not merely the heartland of Gandharan civilization but specifically the imperial core of the greatest Central Asian empire of the early centuries CE. The valley is a broad, flat alluvial plain approximately 100 kilometers in length and 40 kilometers in width, watered by the Kabul River and its tributaries, bounded by mountains on three sides and opening to the east toward the Indus. Its agricultural fertility was exceptional by ancient standards, capable of supporting dense populations and generating substantial surpluses. The Kushans chose Purushapura (Peshawar) as their principal winter capital, transforming what had been the regional capital of Gandhara under earlier rulers into one of the grandest cities of the ancient world. Greek, Roman, Chinese, and Indian sources all attest to the city's magnificence, wealth, and cosmopolitan character during the Kushan period. The great Kanishka stupa, described as among the tallest structures in the ancient world, dominated the city's skyline and served as both a religious monument and a visible symbol of Kushan imperial power and Buddhist piety. The valley was densely populated with Buddhist establishments: monasteries, stupas, and hermitages occupied virtually every suitable location, and the landscape in its Buddhist heyday must have presented an extraordinary spectacle of religious architecture in a fertile valley framed by snow-capped mountains. The city's markets attracted merchants from across the known world, and the cosmopolitan population included Greeks, Parthians, Sogdians, Indians, and representatives of virtually every culture connected to the Silk Road. The Peshawar Valley was thus the place where the diverse strands of the Gandharan synthesis — Hellenistic, Indian, Iranian, Central Asian, Buddhist — came together most completely and productively."}]} +{"conversations": [{"from": "human", "value": "What do we know about the architecture of Kushan period Purushapura (Peshawar)?"}, {"from": "gpt", "value": "Reconstructing the architecture of ancient Purushapura (Peshawar) during its Kushan imperial zenith is a challenging task, as continuous human occupation from antiquity to the present has buried and largely destroyed the ancient city beneath layers of subsequent construction. What we know comes from a combination of limited archaeological evidence, the accounts of Chinese pilgrim visitors, and comparative evidence from better-preserved Gandharan sites. The most famous monument of Kushan Purushapura was the great stupa of Kanishka, described in rapturous terms by both Faxian and Xuanzang. Faxian described a five-story stone base surmounted by a wooden superstructure of thirteen stories, giving a total height that various Chinese sources place at between 400 and 700 feet — figures that are certainly exaggerated but convey the impression the monument made on visitors. Xuanzang measured the base as approximately 150 paces in circumference and described the total structure as 'the highest in all Jambudvipa (India).' The excavation of the stupa's foundation deposit in 1908-1909, which yielded the Kanishka casket, was the most significant archaeological intervention at this site. The city also contained a major Buddhist monastery (the Kanishka vihara mentioned in the casket inscription), royal palaces, administrative buildings, markets, and the dwellings of a large and prosperous urban population. The urban form of Kushan Purushapura probably combined the grid-planned layout characteristic of Hellenistic urban planning — inherited from the Indo-Greek tradition — with the organic growth patterns typical of South Asian cities. The city walls and gates that would have protected this wealthy urban center are attested in literary sources but have not been traced archaeologically with precision."}]} +{"conversations": [{"from": "human", "value": "How did the Gandharan tradition influence the art of Dunhuang in China?"}, {"from": "gpt", "value": "The influence of Gandharan art on the Buddhist cave paintings and sculptures of Dunhuang (the Mogao Caves) in northwestern China represents one of the most consequential long-distance artistic transmissions in world history, and tracing this influence illuminates the entire chain of cultural exchange that ran from Gandhara through Central Asia to China. Dunhuang was a major oasis city at the eastern end of the Silk Road, the last Chinese city before the long desert crossing into Central Asia, and from the 4th century CE onward it became one of the greatest concentrations of Buddhist art in the world. The 492 surviving cave temples at Dunhuang contain an extraordinary treasury of Buddhist paintings, sculptures, and manuscripts spanning approximately a thousand years of continuous production. The Gandharan influence on early Dunhuang art (4th-6th centuries CE) is traceable through multiple visual conventions: the treatment of the Buddha figure with toga-like drapery and Hellenistic-derived facial features, the compositional schemes for narrative jataka reliefs, the iconographic formulas for bodhisattvas and divine attendants, and the decorative vocabulary of flame palmettes, vine scrolls, and other motifs ultimately derived from Hellenistic ornamental traditions. This influence was mediated through the Central Asian Buddhist kingdoms of the Tarim Basin — Khotan, Kucha, Turfan — whose own art represents an intermediate stage of transformation between the Gandharan original and the Chinese adaptation. As Chinese artists absorbed and transformed these imported traditions through successive centuries at Dunhuang, the specific Gandharan ancestry becomes increasingly difficult to trace in the mature Tang Dynasty paintings of the 7th-8th centuries, but the foundational role of the Gandharan tradition in establishing the basic visual language of Chinese Buddhist art remains historically undeniable."}]} +{"conversations": [{"from": "human", "value": "What were the Gandharan funerary traditions outside of Buddhism?"}, {"from": "gpt", "value": "Funerary traditions in ancient Gandhara were diverse, reflecting the multicultural character of the civilization and the coexistence of multiple religious and ethnic communities with different beliefs about death and the afterlife. The most archaeologically visible pre-Buddhist funerary tradition is the Gandhara Grave Culture of the late Bronze and early Iron Ages (c. 1800-600 BCE), characterized by individual inhumation burials in cemeteries with grave goods including pottery, bronze and iron weapons, ornaments, and evidence of belief in an afterlife requiring material provision. These burial customs show connections to the steppe cultures of Central Asia, suggesting the origins of at least part of the Gandharan population in the pastoral nomadic world to the north. The arrival of Vedic Indo-Aryan traditions brought cremation as the dominant funerary practice for the upper castes, following the ancient Vedic ritual described in the Rigveda and associated texts — the elaborate funeral fire ceremony (antyesti) that consummated the dead person's passage from the living world. Buddhist funerary practice emphasized cremation followed by stupa veneration: the model was the cremation and relic distribution of the historical Buddha himself, and the stupa over a relic deposit became the normative Buddhist memorial. Zoroastrian funerary practice — the exposure of the dead body to birds of prey in stone towers of silence (dakhma), avoiding pollution of the sacred elements of fire and earth — was present in Gandhara through the Iranian communities associated with Achaemenid and later periods, though physical evidence of dakhma-type exposure is difficult to identify archaeologically in the Gandharan record. Kushan royal burials are also attested, though the specific rites are not fully documented."}]} +{"conversations": [{"from": "human", "value": "What is known about women rulers and queens in the Gandharan world?"}, {"from": "gpt", "value": "Evidence for women in positions of political authority in ancient Gandhara is limited but not entirely absent, and the women associated with the ruling families of successive Gandharan states played important roles as patrons, regents, and occasionally independent actors. The Kushan Empire provides the most concrete numismatic evidence: some Kushan coins depict the queen alongside the king on the obverse, with both figures shown in royal regalia — this bilaterally depicted royal couple on coinage is unusual in ancient South Asian numismatic traditions and suggests that Kushan queens held a more publicly prominent political position than was typical in Indian kingdoms. The queen Kajula Kadphises' consort is depicted on some early Kushan coins. The Greek kingdoms that preceded the Kushans in Gandhara also occasionally featured queens on coinage: Queen Agathokleia, who ruled jointly with her son Strato I as regent in the 2nd century BCE, is depicted on Indo-Greek coins with a portrait of considerable individuality and authority. The literary and inscriptional record includes references to royal women as donors to Buddhist establishments — some of the most substantial donations to Gandharan Buddhist sites were made by queens and noblewomen. Tibetan Buddhist tradition preserves accounts of female tantric masters (dakinis) associated with the Swat Valley/Uddiyana region, suggesting a tradition of female religious authority in late Gandharan Buddhism. The overall picture is of a patriarchal society in which women's public political roles were limited but not entirely suppressed, and in which the Buddhist institutional framework provided avenues for women of the elite to exercise public influence through religious patronage."}]} +{"conversations": [{"from": "human", "value": "What is the Gandharan concept of merit (punya) and how did it shape the civilization?"}, {"from": "gpt", "value": "The Buddhist concept of punya — merit, or the positive karmic energy generated by virtuous actions — was not merely a theological idea in Gandhara but a fundamental social and economic mechanism that shaped the civilization's material culture, architectural landscape, and political economy in profound ways. In Buddhist understanding, acts of generosity (dana) — giving food to monks, donating to the monastic community, commissioning religious images, building stupas and monasteries — generate punya that improves one's circumstances in this and future lives, ultimately contributing to progress toward enlightenment. This religious logic created a powerful incentive structure that channeled the wealth of Gandharan society — generated by the Silk Road trade, by agriculture, and by the prosperity of the Kushan Empire — toward Buddhist institutional construction and artistic production. The merchant class was particularly responsive to merit-making logic: mobile, often operating outside traditional kinship support networks, exposed to the vagaries of long-distance trade, merchants had strong motivations to accumulate both material and spiritual insurance through Buddhist donation. The inscriptional record at Gandharan Buddhist sites bears witness to this: hundreds of donation inscriptions, many from identifiable mercantile donors, record gifts of stupas, Buddha images, monastic cells, and other objects dedicated to the donor's spiritual benefit and that of their families. The competitive dimension of merit-making — wealthy individuals and rulers outdoing one another in the scale and magnificence of their religious gifts — drove the escalating ambition of Gandharan religious architecture and art production. The magnificent Kanishka stupa was ultimately a merit-generating project on an imperial scale. This punya economy was thus the immediate social mechanism that translated Gandhara's material prosperity into the extraordinary cultural flowering that made it one of the great civilizations of the ancient world."}]} diff --git a/hairstyle.json b/hairstyle.json new file mode 100644 index 0000000..bea015e --- /dev/null +++ b/hairstyle.json @@ -0,0 +1,583 @@ +{ + "last_node_id": 12, + "last_link_id": 11, + "nodes": [ + { + "id": 5, + "type": "CropFace", + "pos": [ + 478.8068542480469, + 372.0702209472656 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 5 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 4 + ] + } + ], + "properties": { + "Node name for S&R": "CropFace" + }, + "widgets_values": [ + "retinaface_resnet50" + ] + }, + { + "id": 4, + "type": "ImageResize+", + "pos": [ + 859.4075927734375, + 369.8701171875 + ], + "size": [ + 315, + 218 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 4 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 3 + ] + }, + { + "name": "width", + "type": "INT", + "links": null + }, + { + "name": "height", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "ImageResize+" + }, + "widgets_values": [ + 512, + 512, + "nearest", + "stretch", + "always", + 0 + ] + }, + { + "id": 1, + "type": "ApplyHairTransfer", + "pos": [ + 1234.5072021484375, + 369.8703308105469 + ], + "size": [ + 315, + 218 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "HAIR_MODEL", + "link": 2 + }, + { + "name": "images", + "type": "IMAGE", + "link": 3 + }, + { + "name": "bald_image", + "type": "IMAGE", + "link": 6 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": [ + 1 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ApplyHairTransfer" + }, + "widgets_values": [ + 518584428870031, + "randomize", + 20, + 1.5, + 1, + 1 + ] + }, + { + "id": 2, + "type": "PreviewImage", + "pos": [ + 1989.1070556640625, + 243.37020874023438 + ], + "size": [ + 388.20001220703125, + 389 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 1 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 8, + "type": "PreviewImage", + "pos": [ + 1567.8070068359375, + 244.4701690673828 + ], + "size": [ + 390.3999938964844, + 389 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 7 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 10, + "type": "ImageResize+", + "pos": [ + 503.0068054199219, + 689.97021484375 + ], + "size": [ + 315, + 218 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 10 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 9 + ] + }, + { + "name": "width", + "type": "INT", + "links": null + }, + { + "name": "height", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "ImageResize+" + }, + "widgets_values": [ + 512, + 512, + "nearest", + "stretch", + "always", + 0 + ] + }, + { + "id": 11, + "type": "CropFace", + "pos": [ + 164.20681762695312, + 621.7704467773438 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 11 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 10 + ] + } + ], + "properties": { + "Node name for S&R": "CropFace" + }, + "widgets_values": [ + "retinaface_resnet50" + ] + }, + { + "id": 3, + "type": "LoadStableHairTransferModel", + "pos": [ + 851.7073974609375, + 153.1702423095703 + ], + "size": [ + 340.20001220703125, + 154 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "model", + "type": "HAIR_MODEL", + "links": [ + 2 + ] + } + ], + "properties": { + "Node name for S&R": "LoadStableHairTransferModel" + }, + "widgets_values": [ + "dreamshaper_8.safetensors", + "hair_encoder_model.bin", + "hair_adapter_model.bin", + "hair_controlnet_model.bin", + "AUTO" + ] + }, + { + "id": 7, + "type": "ApplyHairRemover", + "pos": [ + 831.9071655273438, + 648.1704711914062 + ], + "size": [ + 315, + 174 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "bald_model", + "type": "BALD_MODEL", + "link": 8 + }, + { + "name": "images", + "type": "IMAGE", + "link": 9 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": [ + 6, + 7 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ApplyHairRemover" + }, + "widgets_values": [ + 901365913589048, + "randomize", + 20, + 1, + 1.5 + ] + }, + { + "id": 9, + "type": "LoadStableHairRemoverModel", + "pos": [ + 476.6069030761719, + 476.5704040527344 + ], + "size": [ + 327.5999755859375, + 106 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "bald_model", + "type": "BALD_MODEL", + "links": [ + 8 + ] + } + ], + "properties": { + "Node name for S&R": "LoadStableHairRemoverModel" + }, + "widgets_values": [ + "dreamshaper_8.safetensors", + "hair_bald_model.bin", + "AUTO" + ] + }, + { + "id": 6, + "type": "LoadImage", + "pos": [ + -192.19314575195312, + 165.27015686035156 + ], + "size": [ + 315, + 314 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 5 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "G2.png", + "image" + ] + }, + { + "id": 12, + "type": "LoadImage", + "pos": [ + -193.29295349121094, + 535.97021484375 + ], + "size": [ + 315, + 314 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 11 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "G1.png", + "image" + ] + } + ], + "links": [ + [ + 1, + 1, + 0, + 2, + 0, + "IMAGE" + ], + [ + 2, + 3, + 0, + 1, + 0, + "HAIR_MODEL" + ], + [ + 3, + 4, + 0, + 1, + 1, + "IMAGE" + ], + [ + 4, + 5, + 0, + 4, + 0, + "IMAGE" + ], + [ + 5, + 6, + 0, + 5, + 0, + "IMAGE" + ], + [ + 6, + 7, + 0, + 1, + 2, + "IMAGE" + ], + [ + 7, + 7, + 0, + 8, + 0, + "IMAGE" + ], + [ + 8, + 9, + 0, + 7, + 0, + "BALD_MODEL" + ], + [ + 9, + 10, + 0, + 7, + 1, + "IMAGE" + ], + [ + 10, + 11, + 0, + 10, + 0, + "IMAGE" + ], + [ + 11, + 12, + 0, + 11, + 0, + "IMAGE" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 0.9090909090909095, + "offset": [ + -1049.7070285394457, + -163.3452473866328 + ] + } + }, + "version": 0.4 +} \ No newline at end of file diff --git a/hermes-commands.html b/hermes-commands.html new file mode 100644 index 0000000..fb191e1 --- /dev/null +++ b/hermes-commands.html @@ -0,0 +1,258 @@ + + + + + +Hermes Agent — Setup Commands + + + + + +
+

HERMES AGENT

+

Setup Commands · Nous Research · MIT

+
+ + +
+

1 — Install

+
+
Linux / macOS / WSL2
+
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
+
+
+
Reload shell after install
+
source ~/.bashrc
+
+
+ + +
+

2 — Configure Model (Ollama)

+
+
Run model setup wizard
+
hermes model
+
+

Select Custom OpenAI-compatible endpoint
+ Base URL: http://localhost:11434/v1
+ Model: glm-4.7-flash:latest (or any Ollama model)

+
+ + +
+

3 — Start Chatting

+
+
Launch CLI
+
hermes
+
+
+ + +
+

4 — Telegram Integration

+
+
Approve pairing request from Telegram
+
hermes pairing approve telegram <PAIRING_CODE>
+
+
+
Start / check gateway
+
hermes gateway start
+hermes gateway status
+
+

Create your bot at @BotFather on Telegram first, then paste the token during setup.

+
+ + +
+

5 — Learning Loop Demo

+
+
Step 1 — Save something to memory
+
Remember that my name is Fahd and I prefer concise responses. Save this to your memory.
+
+
+
Step 2 — Start a fresh session
+
/new
+
+
+
Step 3 — Test recall
+
What do you know about me?
+
+
+ + +
+

6 — Useful Commands

+
+
Re-run setup wizard
+
hermes setup
+
+
+
Change model anytime
+
hermes model
+
+
+
Check for issues
+
hermes doctor
+
+
+
Update to latest version
+
hermes update
+
+
+
Migrate from OpenClaw
+
hermes claw migrate
+
+
+
Resume last session
+
hermes --continue
+
+
+ + +
+

⚠ Security Note

+
+ Hermes has full access to your terminal, files, and machine. Restrict Telegram access by setting allowed user IDs during setup, or run hermes setup gateway to configure it later. Do not run with open access on a production server. +
+
+ +
+

github.com/NousResearch/hermes-agent  ·  Built by Nous Research  ·  MIT License

+
+ + + diff --git a/hidream_o1_workflow.json b/hidream_o1_workflow.json new file mode 100644 index 0000000..48346e8 --- /dev/null +++ b/hidream_o1_workflow.json @@ -0,0 +1,1593 @@ +{ + "id": "z322155763-rfg6-5f64-6360-89dg70469329", + "revision": 0, + "last_node_id": 151, + "last_link_id": 213, + "nodes": [ + { + "id": 106, + "type": "EmptyHiDreamO1LatentImage", + "pos": [ + -1928.1103075316967, + 5109.033246142639 + ], + "size": [ + 297.56796875, + 130 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 140 + ] + } + ], + "properties": { + "Node name for S&R": "EmptyHiDreamO1LatentImage" + }, + "widgets_values": [ + 2048, + 2048, + 1 + ] + }, + { + "id": 108, + "type": "SamplerCustom", + "pos": [ + -1538.8562638363328, + 4882.773718337663 + ], + "size": [ + 271.125, + 495.125 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 213 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 137 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 138 + }, + { + "name": "sampler", + "type": "SAMPLER", + "link": 185 + }, + { + "name": "sigmas", + "type": "SIGMAS", + "link": 139 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 140 + } + ], + "outputs": [ + { + "name": "output", + "type": "LATENT", + "links": [ + 142 + ] + }, + { + "name": "denoised_output", + "type": "LATENT", + "links": [] + } + ], + "properties": { + "Node name for S&R": "SamplerCustom" + }, + "widgets_values": [ + true, + 43, + "fixed", + 1 + ] + }, + { + "id": 112, + "type": "BasicScheduler", + "pos": [ + -1918.4672384729765, + 5307.480518417813 + ], + "size": [ + 270, + 106 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 182 + } + ], + "outputs": [ + { + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 139 + ] + } + ], + "properties": { + "Node name for S&R": "BasicScheduler" + }, + "widgets_values": [ + "normal", + 28, + 1 + ] + }, + { + "id": 128, + "type": "LoadImage", + "pos": [ + -3249.8736671644183, + 5289.616521680146 + ], + "size": [ + 282.798828125, + 314 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 189 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "wolf_frame_34.png", + "image" + ] + }, + { + "id": 18, + "type": "LoadImage", + "pos": [ + -3279.1065000530334, + 4896.132183979657 + ], + "size": [ + 282.798828125, + 314 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 159 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "oldman_upscaled.png", + "image" + ] + }, + { + "id": 131, + "type": "Note", + "pos": [ + -3136.9790071446105, + 4507.370329715964 + ], + "size": [ + 210, + 102.82596768939038 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "CLIP and VAE aren't real models, just placeholders to allow using with existing nodes" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 6, + "type": "CheckpointLoaderSimple", + "pos": [ + -3406.3776008020673, + 4661.7387523495945 + ], + "size": [ + 469.1760492356725, + 98 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 192 + ] + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 146, + 150 + ] + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 147 + ] + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "hidream_o1_image_dev_bf16.safetensors" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 124, + "type": "ModelNoiseScale", + "pos": [ + -2279.385479793361, + 4796.674719883528 + ], + "size": [ + 270, + 58 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 192 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 182, + 213 + ] + } + ], + "properties": { + "Node name for S&R": "ModelNoiseScale" + }, + "widgets_values": [ + 7.5 + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 104, + "type": "HiDreamO1ReferenceImages", + "pos": [ + -1910.8181507037211, + 4905.0525014270825 + ], + "size": [ + 243.52890625, + 106 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 141 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 151 + }, + { + "label": "image_1", + "name": "images.image_1", + "type": "IMAGE", + "link": 159 + }, + { + "label": "image_2", + "name": "images.image_2", + "shape": 7, + "type": "IMAGE", + "link": 189 + }, + { + "label": "image_3", + "name": "images.image_3", + "shape": 7, + "type": "IMAGE", + "link": null + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "links": [ + 137 + ] + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 138 + ] + } + ], + "properties": { + "Node name for S&R": "HiDreamO1ReferenceImages" + }, + "widgets_values": [], + "color": "#332922", + "bgcolor": "#593930" + }, + { + "id": 110, + "type": "CLIPTextEncode", + "pos": [ + -2830.147138832165, + 4570.8424550712125 + ], + "size": [ + 400, + 200 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 146 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 141 + ] + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "image of an old man riding a wolf on a beach" + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 111, + "type": "CLIPTextEncode", + "pos": [ + -2828.1706385573107, + 4827.217672254912 + ], + "size": [ + 405.7683974442598, + 118.28100686673133 + ], + "flags": { + "collapsed": true + }, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 150 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 151 + ] + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 129, + "type": "MarkdownNote", + "pos": [ + -4148.137443444142, + 4957.921736722634 + ], + "size": [ + 337.8847117558721, + 111.04510993732947 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Models:\n\n[https://huggingface.co/Comfy-Org/HiDream-O1-Image](https://huggingface.co/Comfy-Org/HiDream-O1-Image)\n\n- mxfp8 is higher quality even on unsupported hardware, on 50xx it's ~30% faster\n" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 133, + "type": "EmptyHiDreamO1LatentImage", + "pos": [ + -1910.9813900322845, + 6894.453698765497 + ], + "size": [ + 297.56796875, + 130 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 198 + ] + } + ], + "properties": { + "Node name for S&R": "EmptyHiDreamO1LatentImage" + }, + "widgets_values": [ + 2048, + 2048, + 1 + ] + }, + { + "id": 135, + "type": "VAEDecode", + "pos": [ + -1172.7627282342362, + 6590.564706384668 + ], + "size": [ + 140, + 46 + ], + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 199 + }, + { + "name": "vae", + "type": "VAE", + "link": 200 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 210 + ] + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 137, + "type": "LoadImage", + "pos": [ + -3232.744749665006, + 7075.036974303005 + ], + "size": [ + 282.798828125, + 314 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 207 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "wolf_frame_34.png", + "image" + ] + }, + { + "id": 138, + "type": "LoadImage", + "pos": [ + -3261.9775825536212, + 6681.552636602516 + ], + "size": [ + 282.798828125, + 314 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 206 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "oldman_upscaled.png", + "image" + ] + }, + { + "id": 140, + "type": "Note", + "pos": [ + -3119.8500896451983, + 6292.790782338822 + ], + "size": [ + 210, + 102.82596768939038 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "CLIP and VAE aren't real models, just placeholders to allow using with existing nodes" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 143, + "type": "HiDreamO1ReferenceImages", + "pos": [ + -1893.689233204309, + 6690.472954049941 + ], + "size": [ + 243.52890625, + 106 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 204 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 205 + }, + { + "label": "image_1", + "name": "images.image_1", + "type": "IMAGE", + "link": 206 + }, + { + "label": "image_2", + "name": "images.image_2", + "shape": 7, + "type": "IMAGE", + "link": 207 + }, + { + "label": "image_3", + "name": "images.image_3", + "shape": 7, + "type": "IMAGE", + "link": null + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "links": [ + 194 + ] + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 195 + ] + } + ], + "properties": { + "Node name for S&R": "HiDreamO1ReferenceImages" + }, + "widgets_values": [], + "color": "#332922", + "bgcolor": "#593930" + }, + { + "id": 144, + "type": "CLIPTextEncode", + "pos": [ + -2813.018221332753, + 6356.262907694071 + ], + "size": [ + 400, + 200 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 208 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 204 + ] + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "image of an old man riding a wolf on a beach" + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 146, + "type": "CLIPTextEncode", + "pos": [ + -2811.0417210578985, + 6612.638124877771 + ], + "size": [ + 405.7683974442598, + 118.28100686673133 + ], + "flags": { + "collapsed": true + }, + "order": 20, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 209 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 205 + ] + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 147, + "type": "Note", + "pos": [ + -2808.265025536966, + 6674.268321858916 + ], + "size": [ + 243.83115399667804, + 88 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Negative prompt is meant to be empty" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 148, + "type": "PreviewImage", + "pos": [ + -953.8161852261705, + 6366.782454131942 + ], + "size": [ + 1284.1858018529942, + 1277.1173669542877 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 210 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 149, + "type": "Note", + "pos": [ + -1589.9395428972239, + 6256.620041257266 + ], + "size": [ + 289.45447017284914, + 103.33879371455441 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Workaround for the base model's major patch tile issue, experimental" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 136, + "type": "BasicScheduler", + "pos": [ + -1901.3383209735644, + 7092.900971040672 + ], + "size": [ + 270, + 106 + ], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 201 + } + ], + "outputs": [ + { + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 197 + ] + } + ], + "properties": { + "Node name for S&R": "BasicScheduler" + }, + "widgets_values": [ + "normal", + 40, + 1 + ] + }, + { + "id": 105, + "type": "VAEDecode", + "pos": [ + -1189.8916457336484, + 4805.1442537618095 + ], + "size": [ + 140, + 46 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 142 + }, + { + "name": "vae", + "type": "VAE", + "link": 147 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 191 + ] + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 125, + "type": "SamplerLCM", + "pos": [ + -2268.2698708340704, + 5080.193179836683 + ], + "size": [ + 270, + 106.1636469245459 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 185 + ] + } + ], + "properties": { + "Node name for S&R": "SamplerLCM" + }, + "widgets_values": [ + 1, + 1, + 2.5 + ] + }, + { + "id": 142, + "type": "ModelNoiseScale", + "pos": [ + -2262.2565622939487, + 6582.095172506387 + ], + "size": [ + 270, + 58 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 203 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 201, + 202 + ] + } + ], + "properties": { + "Node name for S&R": "ModelNoiseScale" + }, + "widgets_values": [ + 8 + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 134, + "type": "SamplerCustom", + "pos": [ + -1521.7273463369206, + 6668.194170960522 + ], + "size": [ + 271.125, + 495.125 + ], + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 193 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 194 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 195 + }, + { + "name": "sampler", + "type": "SAMPLER", + "link": 212 + }, + { + "name": "sigmas", + "type": "SIGMAS", + "link": 197 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 198 + } + ], + "outputs": [ + { + "name": "output", + "type": "LATENT", + "links": [ + 199 + ] + }, + { + "name": "denoised_output", + "type": "LATENT", + "links": [] + } + ], + "properties": { + "Node name for S&R": "SamplerCustom" + }, + "widgets_values": [ + true, + 43, + "fixed", + 5 + ] + }, + { + "id": 141, + "type": "CheckpointLoaderSimple", + "pos": [ + -3389.248683302655, + 6447.159204972453 + ], + "size": [ + 469.1760492356725, + 98 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 203 + ] + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 208, + 209 + ] + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 200 + ] + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "hidream_o1_image_bf16.safetensors" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 123, + "type": "PreviewImage", + "pos": [ + -970.9451027255827, + 4581.362001509084 + ], + "size": [ + 1284.1858018529942, + 1277.1173669542877 + ], + "flags": {}, + "order": 30, + "mode": 2, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 191 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 151, + "type": "KSamplerSelect", + "pos": [ + -2263.066423502761, + 6847.9807711637595 + ], + "size": [ + 270, + 58 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 212 + ] + } + ], + "properties": { + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "dpmpp_2m_sde_gpu" + ] + }, + { + "id": 139, + "type": "HiDreamO1PatchSeamSmoothing", + "pos": [ + -1583.607743107763, + 6399.056488112669 + ], + "size": [ + 337.98203125, + 178 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 202 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 193 + ] + } + ], + "properties": { + "Node name for S&R": "HiDreamO1PatchSeamSmoothing" + }, + "widgets_values": [ + 0.8, + 1, + "single_shift", + "ramp_2_4", + "median", + 1 + ] + } + ], + "links": [ + [ + 137, + 104, + 0, + 108, + 1, + "CONDITIONING" + ], + [ + 138, + 104, + 1, + 108, + 2, + "CONDITIONING" + ], + [ + 139, + 112, + 0, + 108, + 4, + "SIGMAS" + ], + [ + 140, + 106, + 0, + 108, + 5, + "LATENT" + ], + [ + 141, + 110, + 0, + 104, + 0, + "CONDITIONING" + ], + [ + 142, + 108, + 0, + 105, + 0, + "LATENT" + ], + [ + 146, + 6, + 1, + 110, + 0, + "CLIP" + ], + [ + 147, + 6, + 2, + 105, + 1, + "VAE" + ], + [ + 150, + 6, + 1, + 111, + 0, + "CLIP" + ], + [ + 151, + 111, + 0, + 104, + 1, + "CONDITIONING" + ], + [ + 159, + 18, + 0, + 104, + 2, + "IMAGE" + ], + [ + 182, + 124, + 0, + 112, + 0, + "MODEL" + ], + [ + 185, + 125, + 0, + 108, + 3, + "SAMPLER" + ], + [ + 189, + 128, + 0, + 104, + 3, + "IMAGE" + ], + [ + 191, + 105, + 0, + 123, + 0, + "IMAGE" + ], + [ + 192, + 6, + 0, + 124, + 0, + "MODEL" + ], + [ + 193, + 139, + 0, + 134, + 0, + "MODEL" + ], + [ + 194, + 143, + 0, + 134, + 1, + "CONDITIONING" + ], + [ + 195, + 143, + 1, + 134, + 2, + "CONDITIONING" + ], + [ + 197, + 136, + 0, + 134, + 4, + "SIGMAS" + ], + [ + 198, + 133, + 0, + 134, + 5, + "LATENT" + ], + [ + 199, + 134, + 0, + 135, + 0, + "LATENT" + ], + [ + 200, + 141, + 2, + 135, + 1, + "VAE" + ], + [ + 201, + 142, + 0, + 136, + 0, + "MODEL" + ], + [ + 202, + 142, + 0, + 139, + 0, + "MODEL" + ], + [ + 203, + 141, + 0, + 142, + 0, + "MODEL" + ], + [ + 204, + 144, + 0, + 143, + 0, + "CONDITIONING" + ], + [ + 205, + 146, + 0, + 143, + 1, + "CONDITIONING" + ], + [ + 206, + 138, + 0, + 143, + 2, + "IMAGE" + ], + [ + 207, + 137, + 0, + 143, + 3, + "IMAGE" + ], + [ + 208, + 141, + 1, + 144, + 0, + "CLIP" + ], + [ + 209, + 141, + 1, + 146, + 0, + "CLIP" + ], + [ + 210, + 135, + 0, + 148, + 0, + "IMAGE" + ], + [ + 212, + 151, + 0, + 134, + 3, + "SAMPLER" + ], + [ + 213, + 124, + 0, + 108, + 0, + "MODEL" + ] + ], + "groups": [ + { + "id": 1, + "title": "Dev (the distilled model)", + "bounding": [ + -3712.42819056113, + 4270.9938201222485, + 4058.717286108069, + 1722.6518307884162 + ], + "color": "#3f789e", + "flags": {} + }, + { + "id": 2, + "title": "the base model", + "bounding": [ + -3695.299273061718, + 6056.414272745107, + 4058.717286108069, + 1722.6518307884162 + ], + "color": "#3f789e", + "flags": {} + } + ], + "config": {}, + "extra": { + "frontendVersion": "1.43.18", + "VHS_latentpreview": true, + "VHS_latentpreviewrate": 0, + "VHS_MetadataImage": false, + "VHS_KeepIntermediate": true, + "ds": { + "scale": 0.32349184307607315, + "offset": [ + 4112.724727848433, + -4162.676303163474 + ] + } + }, + "version": 0.4 +} \ No newline at end of file diff --git a/hunyuanVideo_t2v_Lora_01.json b/hunyuanVideo_t2v_Lora_01.json new file mode 100644 index 0000000..9469c51 --- /dev/null +++ b/hunyuanVideo_t2v_Lora_01.json @@ -0,0 +1,496 @@ +{ + "last_node_id": 43, + "last_link_id": 52, + "nodes": [ + { + "id": 43, + "type": "HyVideoLoraSelect", + "pos": [ + -325.49102783203125, + -64.4124984741211 + ], + "size": [ + 315, + 102 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [ + { + "name": "prev_lora", + "type": "HYVIDLORA", + "link": null, + "shape": 7 + }, + { + "name": "blocks", + "type": "SELECTEDBLOCKS", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "lora", + "type": "HYVIDLORA", + "links": [ + 52 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "HyVideoLoraSelect" + }, + "widgets_values": [ + "makima_hunyuan.safetensors", + 1 + ] + }, + { + "id": 5, + "type": "HyVideoDecode", + "pos": [ + 82.66316986083984, + -281.00701904296875 + ], + "size": [ + 345.4285888671875, + 150 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "vae", + "type": "VAE", + "link": 6 + }, + { + "name": "samples", + "type": "LATENT", + "link": 4 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [ + 42 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "HyVideoDecode" + }, + "widgets_values": [ + true, + 64, + 256, + true + ] + }, + { + "id": 16, + "type": "DownloadAndLoadHyVideoTextEncoder", + "pos": [ + -321.31695556640625, + 216.37989807128906 + ], + "size": [ + 441, + 178 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "hyvid_text_encoder", + "type": "HYVIDTEXTENCODER", + "links": [ + 35 + ] + } + ], + "properties": { + "Node name for S&R": "DownloadAndLoadHyVideoTextEncoder" + }, + "widgets_values": [ + "Kijai/llava-llama-3-8b-text-encoder-tokenizer", + "openai/clip-vit-large-patch14", + "fp16", + false, + 2, + "disabled" + ] + }, + { + "id": 1, + "type": "HyVideoModelLoader", + "pos": [ + 6.489016056060791, + -63.38698959350586 + ], + "size": [ + 426.1773986816406, + 194 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "compile_args", + "type": "COMPILEARGS", + "link": null, + "shape": 7 + }, + { + "name": "block_swap_args", + "type": "BLOCKSWAPARGS", + "link": null, + "shape": 7 + }, + { + "name": "lora", + "type": "HYVIDLORA", + "link": 52, + "shape": 7 + } + ], + "outputs": [ + { + "name": "model", + "type": "HYVIDEOMODEL", + "links": [ + 51 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "HyVideoModelLoader" + }, + "widgets_values": [ + "hunyuan_video_720_cfgdistill_fp8_e4m3fn.safetensors", + "bf16", + "fp8_e4m3fn", + "offload_device", + "sdpa" + ] + }, + { + "id": 3, + "type": "HyVideoSampler", + "pos": [ + 461.65716552734375, + -178.2680206298828 + ], + "size": [ + 315, + 334 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "HYVIDEOMODEL", + "link": 51 + }, + { + "name": "hyvid_embeds", + "type": "HYVIDEMBEDS", + "link": 36 + }, + { + "name": "samples", + "type": "LATENT", + "link": null, + "shape": 7 + }, + { + "name": "stg_args", + "type": "STGARGS", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "samples", + "type": "LATENT", + "links": [ + 4 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "HyVideoSampler" + }, + "widgets_values": [ + 512, + 320, + 85, + 30, + 6, + 9, + 6, + "fixed", + 1, + 1 + ] + }, + { + "id": 34, + "type": "VHS_VideoCombine", + "pos": [ + 804.90283203125, + -284.7658996582031 + ], + "size": [ + 580.7774658203125, + 698.4859008789062 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 42 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "HunyuanVideo", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "HunyuanVideo_00006.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 24, + "workflow": "HunyuanVideo_00006.png", + "fullpath": "/home/Ubuntu/ComfyUI/output/HunyuanVideo_00006.mp4" + }, + "muted": false + } + } + }, + { + "id": 7, + "type": "HyVideoVAELoader", + "pos": [ + -322.2539978027344, + -260.0420837402344 + ], + "size": [ + 379.166748046875, + 82 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "compile_args", + "type": "COMPILEARGS", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "vae", + "type": "VAE", + "links": [ + 6 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "HyVideoVAELoader" + }, + "widgets_values": [ + "hunyuan_video_vae_bf16.safetensors", + "bf16" + ] + }, + { + "id": 30, + "type": "HyVideoTextEncode", + "pos": [ + 117.77408599853516, + 227.3590545654297 + ], + "size": [ + 408.91546630859375, + 184 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "text_encoders", + "type": "HYVIDTEXTENCODER", + "link": 35 + }, + { + "name": "custom_prompt_template", + "type": "PROMPT_TEMPLATE", + "link": null, + "shape": 7 + }, + { + "name": "clip_l", + "type": "CLIP", + "link": null, + "shape": 7 + }, + { + "name": "hyvid_cfg", + "type": "HYVID_CFG", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "hyvid_embeds", + "type": "HYVIDEMBEDS", + "links": [ + 36 + ] + } + ], + "properties": { + "Node name for S&R": "HyVideoTextEncode" + }, + "widgets_values": [ + "kxsr, a lively kxsr laugh at the cashier of the grocery store, cinematic, anime aesthetic, kxsr closeup", + "bad quality video", + "video" + ] + } + ], + "links": [ + [ + 4, + 3, + 0, + 5, + 1, + "LATENT" + ], + [ + 6, + 7, + 0, + 5, + 0, + "VAE" + ], + [ + 35, + 16, + 0, + 30, + 0, + "HYVIDTEXTENCODER" + ], + [ + 36, + 30, + 0, + 3, + 1, + "HYVIDEMBEDS" + ], + [ + 42, + 5, + 0, + 34, + 0, + "IMAGE" + ], + [ + 51, + 1, + 0, + 3, + 0, + "HYVIDEOMODEL" + ], + [ + 52, + 43, + 0, + 1, + 2, + "HYVIDLORA" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 0.7513148009015781, + "offset": [ + 344.1249714605548, + 331.6107526133664 + ] + } + }, + "version": 0.4 +} \ No newline at end of file diff --git a/hunyuanvideoi2v.json b/hunyuanvideoi2v.json new file mode 100644 index 0000000..5784503 --- /dev/null +++ b/hunyuanvideoi2v.json @@ -0,0 +1,1020 @@ +{ + "last_node_id": 83, + "last_link_id": 225, + "nodes": [ + { + "id": 16, + "type": "KSamplerSelect", + "pos": [ + 500, + 550 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "SAMPLER", + "type": "SAMPLER", + "shape": 3, + "links": [ + 19 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler" + ] + }, + { + "id": 22, + "type": "BasicGuider", + "pos": [ + 600, + 0 + ], + "size": [ + 222.3482666015625, + 46 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 195, + "slot_index": 0 + }, + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 129, + "slot_index": 1 + } + ], + "outputs": [ + { + "name": "GUIDER", + "type": "GUIDER", + "shape": 3, + "links": [ + 30 + ], + "slot_index": 0 + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "BasicGuider" + }, + "widgets_values": [] + }, + { + "id": 73, + "type": "VAEDecodeTiled", + "pos": [ + 1150, + 200 + ], + "size": [ + 210, + 150 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 210 + }, + { + "name": "vae", + "type": "VAE", + "link": 211 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 215 + ], + "slot_index": 0 + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "VAEDecodeTiled" + }, + "widgets_values": [ + 256, + 64, + 64, + 8 + ] + }, + { + "id": 8, + "type": "VAEDecode", + "pos": [ + 1150, + 90 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 17, + "mode": 2, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 181 + }, + { + "name": "vae", + "type": "VAE", + "link": 206 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [], + "slot_index": 0 + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 25, + "type": "RandomNoise", + "pos": [ + 500, + 420 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "NOISE", + "type": "NOISE", + "shape": 3, + "links": [ + 37 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "RandomNoise" + }, + "widgets_values": [ + 1, + "fixed" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 13, + "type": "SamplerCustomAdvanced", + "pos": [ + 860, + 200 + ], + "size": [ + 272.3617858886719, + 124.53733825683594 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "noise", + "type": "NOISE", + "link": 37, + "slot_index": 0 + }, + { + "name": "guider", + "type": "GUIDER", + "link": 30, + "slot_index": 1 + }, + { + "name": "sampler", + "type": "SAMPLER", + "link": 19, + "slot_index": 2 + }, + { + "name": "sigmas", + "type": "SIGMAS", + "link": 20, + "slot_index": 3 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 216, + "slot_index": 4 + } + ], + "outputs": [ + { + "name": "output", + "type": "LATENT", + "shape": 3, + "links": [ + 181, + 210 + ], + "slot_index": 0 + }, + { + "name": "denoised_output", + "type": "LATENT", + "shape": 3, + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "SamplerCustomAdvanced" + }, + "widgets_values": [] + }, + { + "id": 81, + "type": "CLIPVisionEncode", + "pos": [ + 104.21192932128906, + 563.0703125 + ], + "size": [ + 253.60000610351562, + 78 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "clip_vision", + "type": "CLIP_VISION", + "link": 220 + }, + { + "name": "image", + "type": "IMAGE", + "link": 221 + } + ], + "outputs": [ + { + "name": "CLIP_VISION_OUTPUT", + "type": "CLIP_VISION_OUTPUT", + "links": [ + 219 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "CLIPVisionEncode" + }, + "widgets_values": [ + "none" + ] + }, + { + "id": 67, + "type": "ModelSamplingSD3", + "pos": [ + 360, + 0 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 209 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 195 + ], + "slot_index": 0 + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "ModelSamplingSD3" + }, + "widgets_values": [ + 7 + ] + }, + { + "id": 26, + "type": "FluxGuidance", + "pos": [ + 514.2149047851562, + 86.77685546875 + ], + "size": [ + 317.4000244140625, + 58 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 225 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "shape": 3, + "links": [ + 129 + ], + "slot_index": 0 + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "FluxGuidance" + }, + "widgets_values": [ + 6 + ], + "color": "#233", + "bgcolor": "#355" + }, + { + "id": 82, + "type": "CLIPVisionLoader", + "pos": [ + -263.55670166015625, + 560.591064453125 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP_VISION", + "type": "CLIP_VISION", + "links": [ + 220 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "CLIPVisionLoader" + }, + "widgets_values": [ + "llava_llama3_vision.safetensors" + ] + }, + { + "id": 77, + "type": "Note", + "pos": [ + 0, + 0 + ], + "size": [ + 350, + 110 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Select a fp8 weight_dtype if you are running out of memory." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 10, + "type": "VAELoader", + "pos": [ + 1.93359375, + 448.26171875 + ], + "size": [ + 350, + 60 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "shape": 3, + "links": [ + 206, + 211, + 223 + ], + "slot_index": 0 + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "hunyuan_video_vae_bf16.safetensors" + ] + }, + { + "id": 78, + "type": "HunyuanImageToVideo", + "pos": [ + 525.7003173828125, + 824.2276611328125 + ], + "size": [ + 315, + 170 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 218 + }, + { + "name": "vae", + "type": "VAE", + "link": 223 + }, + { + "name": "start_image", + "type": "IMAGE", + "shape": 7, + "link": 222 + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "links": [ + 225 + ], + "slot_index": 0 + }, + { + "name": "latent", + "type": "LATENT", + "links": [ + 216 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "HunyuanImageToVideo" + }, + "widgets_values": [ + 512, + 512, + 49, + 1 + ] + }, + { + "id": 12, + "type": "UNETLoader", + "pos": [ + 0, + 150 + ], + "size": [ + 350, + 82 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "shape": 3, + "links": [ + 190, + 209 + ], + "slot_index": 0 + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "UNETLoader" + }, + "widgets_values": [ + "hunyuan_video_image_to_video_720p_bf16.safetensors", + "default" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 11, + "type": "DualCLIPLoader", + "pos": [ + 0.30078125, + 275.60546875 + ], + "size": [ + 350, + 122 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "shape": 3, + "links": [ + 224 + ], + "slot_index": 0 + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "DualCLIPLoader" + }, + "widgets_values": [ + "clip_l.safetensors", + "llava_llama3_fp16.safetensors", + "hunyuan_video", + "default" + ] + }, + { + "id": 75, + "type": "SaveAnimatedWEBP", + "pos": [ + 1373.4288330078125, + 279.06329345703125 + ], + "size": [ + 621.495361328125, + 587.12451171875 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 215 + } + ], + "outputs": [], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24" + }, + "widgets_values": [ + "ComfyUI", + 24, + false, + 80, + "default", + "" + ] + }, + { + "id": 74, + "type": "Note", + "pos": [ + 349.39947509765625, + 735.7952880859375 + ], + "size": [ + 210, + 170 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Use the tiled decode node by default because most people will need it.\n\nLower the tile_size and overlap if you run out of memory." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 17, + "type": "BasicScheduler", + "pos": [ + 500, + 660 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 190, + "slot_index": 0 + } + ], + "outputs": [ + { + "name": "SIGMAS", + "type": "SIGMAS", + "shape": 3, + "links": [ + 20 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "BasicScheduler" + }, + "widgets_values": [ + "simple", + 30, + 1 + ] + }, + { + "id": 83, + "type": "LoadImage", + "pos": [ + 987.131591796875, + 279.7373962402344 + ], + "size": [ + 365.4132080078125, + 471.8512268066406 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 221, + 222 + ], + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "1.png", + "image" + ] + }, + { + "id": 80, + "type": "TextEncodeHunyuanVideo_ImageToVideo", + "pos": [ + 538.095947265625, + 278.91009521484375 + ], + "size": [ + 441, + 200 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 224 + }, + { + "name": "clip_vision_output", + "type": "CLIP_VISION_OUTPUT", + "link": 219 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 218 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.24", + "Node name for S&R": "TextEncodeHunyuanVideo_ImageToVideo" + }, + "widgets_values": [ + "a robotic dance, gyrating, moving scene, fast motion" + ], + "color": "#232", + "bgcolor": "#353" + } + ], + "links": [ + [ + 19, + 16, + 0, + 13, + 2, + "SAMPLER" + ], + [ + 20, + 17, + 0, + 13, + 3, + "SIGMAS" + ], + [ + 30, + 22, + 0, + 13, + 1, + "GUIDER" + ], + [ + 37, + 25, + 0, + 13, + 0, + "NOISE" + ], + [ + 129, + 26, + 0, + 22, + 1, + "CONDITIONING" + ], + [ + 181, + 13, + 0, + 8, + 0, + "LATENT" + ], + [ + 190, + 12, + 0, + 17, + 0, + "MODEL" + ], + [ + 195, + 67, + 0, + 22, + 0, + "MODEL" + ], + [ + 206, + 10, + 0, + 8, + 1, + "VAE" + ], + [ + 209, + 12, + 0, + 67, + 0, + "MODEL" + ], + [ + 210, + 13, + 0, + 73, + 0, + "LATENT" + ], + [ + 211, + 10, + 0, + 73, + 1, + "VAE" + ], + [ + 215, + 73, + 0, + 75, + 0, + "IMAGE" + ], + [ + 216, + 78, + 1, + 13, + 4, + "LATENT" + ], + [ + 218, + 80, + 0, + 78, + 0, + "CONDITIONING" + ], + [ + 219, + 81, + 0, + 80, + 1, + "CLIP_VISION_OUTPUT" + ], + [ + 220, + 82, + 0, + 81, + 0, + "CLIP_VISION" + ], + [ + 221, + 83, + 0, + 81, + 1, + "IMAGE" + ], + [ + 222, + 83, + 0, + 78, + 2, + "IMAGE" + ], + [ + 223, + 10, + 0, + 78, + 1, + "VAE" + ], + [ + 224, + 11, + 0, + 80, + 0, + "CLIP" + ], + [ + 225, + 78, + 0, + 26, + 0, + "CONDITIONING" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 1.0371433116472115, + "offset": [ + -349.995494497017, + -143.54915371874233 + ] + }, + "groupNodes": {} + }, + "version": 0.4 +} \ No newline at end of file diff --git a/image_qwen_Image_2512.json b/image_qwen_Image_2512.json new file mode 100644 index 0000000..6c3706f --- /dev/null +++ b/image_qwen_Image_2512.json @@ -0,0 +1,2047 @@ +{ + "id": "91f6bbe2-ed41-4fd6-bac7-71d5b5864ecb", + "revision": 0, + "last_node_id": 102, + "last_link_id": 163, + "nodes": [ + { + "id": 90, + "type": "SaveImage", + "pos": [ + 1170, + 700 + ], + "size": [ + 490, + 600 + ], + "flags": {}, + "order": 6, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 152 + } + ], + "outputs": [], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "SaveImage", + "widget_ue_connectable": {} + }, + "widgets_values": [ + "Qwen-Image-2512" + ] + }, + { + "id": 92, + "type": "a95b4adb-4bcb-48dd-8bdc-c580503289c6", + "pos": [ + 650, + 700 + ], + "size": [ + 470, + 590 + ], + "flags": {}, + "order": 4, + "mode": 4, + "inputs": [ + { + "label": "Positive", + "name": "text", + "type": "STRING", + "widget": { + "name": "text" + }, + "link": 153 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 152 + ] + } + ], + "properties": { + "proxyWidgets": [ + [ + "-1", + "text" + ], + [ + "-1", + "width" + ], + [ + "-1", + "height" + ], + [ + "-1", + "seed" + ], + [ + "3", + "control_after_generate" + ] + ], + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.5.1" + }, + "widgets_values": [ + "", + 1328, + 1328, + 0 + ] + }, + { + "id": 94, + "type": "MarkdownNote", + "pos": [ + -170, + 680 + ], + "size": [ + 260, + 120 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "Aspect Ratios", + "properties": {}, + "widgets_values": [ + "\n- 1:1 : 1328x1328\n- 16:9 : 1664x928\n- 9:16 : 928x1664\n- 4:3 : 1472x1104\n- 3:4 : 1104x1472\n- 3:2 : 1584x1056\n- 2:3 : 1056x1584" + ], + "color": "#222", + "bgcolor": "#000" + }, + { + "id": 60, + "type": "SaveImage", + "pos": [ + 1164, + 40 + ], + "size": [ + 490, + 600 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 146 + } + ], + "outputs": [], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "SaveImage", + "widget_ue_connectable": {} + }, + "widgets_values": [ + "Qwen-Image-2512" + ] + }, + { + "id": 67, + "type": "MarkdownNote", + "pos": [ + -470, + 40 + ], + "size": [ + 560, + 590 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "Model links", + "properties": { + "widget_ue_connectable": {} + }, + "widgets_values": [ + "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Report issue\n\nNote: please update ComfyUI first ([guide](https://docs.comfy.org/zh-CN/installation/update_comfyui)) and prepare required models. Desktop/Cloud ship stable builds; nightly-supported models may not be included yet, please wait for the next stable release.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n\n\n## Model links (for local user)\n\n**text_encoders**\n\n- [qwen_2.5_vl_7b_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors)\n\n**loras**\n\n- [Qwen-Image-Lightning-4steps-V1.0.safetensors](https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-4steps-V1.0.safetensors)\n\n**diffusion_models**\n\n- [qwen_image_2512_fp8_e4m3fn.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_2512_fp8_e4m3fn.safetensors)\n- [qwen_image_2512_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_2512_bf16.safetensors) If you have enough VRAM and want better quality, you can use it.\n\n**vae**\n\n- [qwen_image_vae.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors)\n\n\nLocation\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 text_encoders/\n│ │ └── qwen_2.5_vl_7b_fp8_scaled.safetensors\n│ ├── 📂 loras/\n│ │ └── Qwen-Image-Lightning-4steps-V1.0.safetensors\n│ ├── 📂 diffusion_models/\n│ │ ├─ qwen_image_2512_bf16.safetensors\n│ │ └── qwen_image_2512_fp8_e4m3fn.safetensors\n│ └── 📂 vae/\n│ └── qwen_image_vae.safetensors\n```\n" + ], + "color": "#222", + "bgcolor": "#000" + }, + { + "id": 91, + "type": "PrimitiveStringMultiline", + "pos": [ + 130, + 40 + ], + "size": [ + 480, + 590 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 149, + 153 + ] + } + ], + "title": "Prompt", + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.5.1", + "Node name for S&R": "PrimitiveStringMultiline" + }, + "widgets_values": [ + "Urban alleyway at dusk. Tall, statuesque high-fashion model striding elegantly, mid distant full body shot from an angular perspective, cinematic/editorial with bold contrasts and tactile materials. They wear a rose-gold metallic trench coat with deconstructed elements over a black long-sleeved turtleneck with subtle texture; paired with forest-green pleated pants with raw hems and a soft texture. Long braided dark hair, medium complexion. They carry a vibrant yellow designer handbag with geometric details and a structured silhouette. White architectural sneakers with bold geometric cutouts. Bold, high-contrast, tactile, urban-grit meets high-fashion impact, extreme clarity, extreme layering, post-processing with transparent light-transmitting ultra-smooth high-definition film effect, removing all noise and grain, removing all blur, removing all vintage feel, removing all roughness, drawn with 32K pixel precision, unparalleled fine line drawing of every single detail, the entire image like a brand new photograph, photorealistic\n" + ] + }, + { + "id": 86, + "type": "3f445b89-990a-4475-aec8-84ce536527f7", + "pos": [ + 652, + 40 + ], + "size": [ + 470, + 590 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "label": "Positive", + "name": "text", + "type": "STRING", + "widget": { + "name": "text" + }, + "link": 149 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 146 + ] + } + ], + "properties": { + "proxyWidgets": [ + [ + "-1", + "text" + ], + [ + "-1", + "width" + ], + [ + "-1", + "height" + ], + [ + "-1", + "seed" + ], + [ + "3", + "control_after_generate" + ] + ], + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.5.1" + }, + "widgets_values": [ + "", + 1328, + 1328, + 4 + ] + } + ], + "links": [ + [ + 146, + 86, + 0, + 60, + 0, + "IMAGE" + ], + [ + 149, + 91, + 0, + 86, + 0, + "STRING" + ], + [ + 152, + 92, + 0, + 90, + 0, + "IMAGE" + ], + [ + 153, + 91, + 0, + 92, + 0, + "STRING" + ] + ], + "groups": [], + "definitions": { + "subgraphs": [ + { + "id": "3f445b89-990a-4475-aec8-84ce536527f7", + "version": 1, + "state": { + "lastGroupId": 4, + "lastNodeId": 84, + "lastLinkId": 158, + "lastRerouteId": 0 + }, + "revision": 0, + "config": {}, + "name": "Text to Image (Qwen-Image 2512)", + "inputNode": { + "id": -10, + "bounding": [ + -720, + 370, + 120, + 120 + ] + }, + "outputNode": { + "id": -20, + "bounding": [ + 1440, + 360, + 120, + 60 + ] + }, + "inputs": [ + { + "id": "846fd1a5-9f4a-4e83-af40-27cafe99e5c6", + "name": "text", + "type": "STRING", + "linkIds": [ + 155 + ], + "label": "Positive", + "pos": [ + -620, + 390 + ] + }, + { + "id": "31d7d994-4b57-4076-8d11-0d854b0a01a4", + "name": "width", + "type": "INT", + "linkIds": [ + 156 + ], + "pos": [ + -620, + 410 + ] + }, + { + "id": "76f0dfd7-a33a-4d5f-a963-01151eccd8fb", + "name": "height", + "type": "INT", + "linkIds": [ + 157 + ], + "pos": [ + -620, + 430 + ] + }, + { + "id": "e7a5017f-c729-48f7-b092-b415aec70dbf", + "name": "seed", + "type": "INT", + "linkIds": [ + 158 + ], + "pos": [ + -620, + 450 + ] + } + ], + "outputs": [ + { + "id": "2af20250-dc7a-4643-bc84-0a180d9ca62b", + "name": "IMAGE", + "type": "IMAGE", + "linkIds": [ + 110 + ], + "localized_name": "IMAGE", + "pos": [ + 1460, + 380 + ] + } + ], + "widgets": [], + "nodes": [ + { + "id": 39, + "type": "VAELoader", + "pos": [ + -270, + 340 + ], + "size": [ + 330, + 60 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "localized_name": "VAE", + "name": "VAE", + "type": "VAE", + "slot_index": 0, + "links": [ + 76 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "VAELoader", + "models": [ + { + "name": "qwen_image_vae.safetensors", + "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors", + "directory": "vae" + }, + { + "name": "qwen_image_vae.safetensors", + "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors", + "directory": "vae" + } + ], + "widget_ue_connectable": {} + }, + "widgets_values": [ + "qwen_image_vae.safetensors" + ] + }, + { + "id": 38, + "type": "CLIPLoader", + "pos": [ + -270, + 190 + ], + "size": [ + 330, + 110 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "localized_name": "CLIP", + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 75, + 147 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "CLIPLoader", + "models": [ + { + "name": "qwen_2.5_vl_7b_fp8_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors", + "directory": "text_encoders" + }, + { + "name": "qwen_2.5_vl_7b_fp8_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors", + "directory": "text_encoders" + } + ], + "widget_ue_connectable": {} + }, + "widgets_values": [ + "qwen_2.5_vl_7b_fp8_scaled.safetensors", + "qwen_image", + "default" + ] + }, + { + "id": 37, + "type": "UNETLoader", + "pos": [ + -270, + 50 + ], + "size": [ + 330, + 90 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 154 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "UNETLoader", + "models": [ + { + "name": "qwen_image_2512_fp8_e4m3fn.safetensors", + "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_2512_fp8_e4m3fn.safetensors", + "directory": "diffusion_models" + }, + { + "name": "qwen_image_2512_fp8_e4m3fn.safetensors", + "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_2512_fp8_e4m3fn.safetensors", + "directory": "diffusion_models" + } + ], + "widget_ue_connectable": {} + }, + "widgets_values": [ + "qwen_image_2512_fp8_e4m3fn.safetensors", + "default" + ] + }, + { + "id": 3, + "type": "KSampler", + "pos": [ + 570, + 140 + ], + "size": [ + 300, + 474 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 125 + }, + { + "localized_name": "positive", + "name": "positive", + "type": "CONDITIONING", + "link": 148 + }, + { + "localized_name": "negative", + "name": "negative", + "type": "CONDITIONING", + "link": 52 + }, + { + "localized_name": "latent_image", + "name": "latent_image", + "type": "LATENT", + "link": 107 + }, + { + "localized_name": "seed", + "name": "seed", + "type": "INT", + "widget": { + "name": "seed" + }, + "link": 158 + } + ], + "outputs": [ + { + "localized_name": "LATENT", + "name": "LATENT", + "type": "LATENT", + "slot_index": 0, + "links": [ + 128 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "KSampler", + "widget_ue_connectable": {} + }, + "widgets_values": [ + 4, + "randomize", + 50, + 4, + "euler", + "simple", + 1 + ] + }, + { + "id": 58, + "type": "EmptySD3LatentImage", + "pos": [ + -240, + 510 + ], + "size": [ + 270, + 106 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "localized_name": "width", + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 156 + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 157 + } + ], + "outputs": [ + { + "localized_name": "LATENT", + "name": "LATENT", + "type": "LATENT", + "links": [ + 107 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "EmptySD3LatentImage", + "widget_ue_connectable": {} + }, + "widgets_values": [ + 1328, + 1328, + 1 + ] + }, + { + "id": 81, + "type": "CLIPTextEncode", + "pos": [ + 100, + 60 + ], + "size": [ + 430, + 330 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 147 + }, + { + "localized_name": "text", + "name": "text", + "type": "STRING", + "widget": { + "name": "text" + }, + "link": 155 + } + ], + "outputs": [ + { + "localized_name": "CONDITIONING", + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 148 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "CLIPTextEncode", + "widget_ue_connectable": {} + }, + "widgets_values": [ + "" + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 8, + "type": "VAEDecode", + "pos": [ + 900, + 30 + ], + "size": [ + 210, + 46 + ], + "flags": { + "collapsed": false + }, + "order": 6, + "mode": 0, + "inputs": [ + { + "localized_name": "samples", + "name": "samples", + "type": "LATENT", + "link": 128 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 76 + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 110 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "VAEDecode", + "widget_ue_connectable": {} + }, + "widgets_values": [] + }, + { + "id": 66, + "type": "ModelSamplingAuraFlow", + "pos": [ + 570, + 30 + ], + "size": [ + 300, + 58 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 154 + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "links": [ + 125 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "ModelSamplingAuraFlow", + "widget_ue_connectable": {} + }, + "widgets_values": [ + 3.1000000000000005 + ] + }, + { + "id": 7, + "type": "CLIPTextEncode", + "pos": [ + 110, + 440 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 75 + } + ], + "outputs": [ + { + "localized_name": "CONDITIONING", + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 52 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "CLIPTextEncode", + "widget_ue_connectable": {} + }, + "widgets_values": [ + "低分辨率,低画质,肢体畸形,手指畸形,画面过饱和,蜡像感,人脸无细节,过度光滑,画面具有AI感。构图混乱。文字模糊,扭曲" + ], + "color": "#322", + "bgcolor": "#533" + } + ], + "groups": [ + { + "id": 1, + "title": "Models", + "bounding": [ + -280, + -20, + 350, + 433.6000061035156 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 2, + "title": "Step2 - Image size", + "bounding": [ + -280, + 430, + 350, + 210 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 3, + "title": "Prompt", + "bounding": [ + 90, + -10, + 460, + 650 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + } + ], + "links": [ + { + "id": 75, + "origin_id": 38, + "origin_slot": 0, + "target_id": 7, + "target_slot": 0, + "type": "CLIP" + }, + { + "id": 128, + "origin_id": 3, + "origin_slot": 0, + "target_id": 8, + "target_slot": 0, + "type": "LATENT" + }, + { + "id": 76, + "origin_id": 39, + "origin_slot": 0, + "target_id": 8, + "target_slot": 1, + "type": "VAE" + }, + { + "id": 125, + "origin_id": 66, + "origin_slot": 0, + "target_id": 3, + "target_slot": 0, + "type": "MODEL" + }, + { + "id": 52, + "origin_id": 7, + "origin_slot": 0, + "target_id": 3, + "target_slot": 2, + "type": "CONDITIONING" + }, + { + "id": 107, + "origin_id": 58, + "origin_slot": 0, + "target_id": 3, + "target_slot": 3, + "type": "LATENT" + }, + { + "id": 110, + "origin_id": 8, + "origin_slot": 0, + "target_id": -20, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 147, + "origin_id": 38, + "origin_slot": 0, + "target_id": 81, + "target_slot": 0, + "type": "CLIP" + }, + { + "id": 148, + "origin_id": 81, + "origin_slot": 0, + "target_id": 3, + "target_slot": 1, + "type": "CONDITIONING" + }, + { + "id": 154, + "origin_id": 37, + "origin_slot": 0, + "target_id": 66, + "target_slot": 0, + "type": "MODEL" + }, + { + "id": 155, + "origin_id": -10, + "origin_slot": 0, + "target_id": 81, + "target_slot": 1, + "type": "STRING" + }, + { + "id": 156, + "origin_id": -10, + "origin_slot": 1, + "target_id": 58, + "target_slot": 0, + "type": "INT" + }, + { + "id": 157, + "origin_id": -10, + "origin_slot": 2, + "target_id": 58, + "target_slot": 1, + "type": "INT" + }, + { + "id": 158, + "origin_id": -10, + "origin_slot": 3, + "target_id": 3, + "target_slot": 4, + "type": "INT" + } + ], + "extra": { + "workflowRendererVersion": "LG" + } + }, + { + "id": "a95b4adb-4bcb-48dd-8bdc-c580503289c6", + "version": 1, + "state": { + "lastGroupId": 4, + "lastNodeId": 75, + "lastLinkId": 137, + "lastRerouteId": 0 + }, + "revision": 0, + "config": {}, + "name": "Text to Image (Qwen-Image 2512 4steps)", + "inputNode": { + "id": -10, + "bounding": [ + -720, + 370, + 120, + 120 + ] + }, + "outputNode": { + "id": -20, + "bounding": [ + 1440, + 360, + 120, + 60 + ] + }, + "inputs": [ + { + "id": "846fd1a5-9f4a-4e83-af40-27cafe99e5c6", + "name": "text", + "type": "STRING", + "linkIds": [ + 132 + ], + "label": "Positive", + "pos": [ + -620, + 390 + ] + }, + { + "id": "0612b1a0-2313-4c03-b9f2-7fba40c19c7a", + "name": "width", + "type": "INT", + "linkIds": [ + 135 + ], + "pos": [ + -620, + 410 + ] + }, + { + "id": "2f52f9c7-77f4-4df1-8ace-dae4f779f3ae", + "name": "height", + "type": "INT", + "linkIds": [ + 136 + ], + "pos": [ + -620, + 430 + ] + }, + { + "id": "fec55121-0ebc-4fe3-b103-1769cac5eaed", + "name": "seed", + "type": "INT", + "linkIds": [ + 137 + ], + "pos": [ + -620, + 450 + ] + } + ], + "outputs": [ + { + "id": "2af20250-dc7a-4643-bc84-0a180d9ca62b", + "name": "IMAGE", + "type": "IMAGE", + "linkIds": [ + 110 + ], + "localized_name": "IMAGE", + "pos": [ + 1460, + 380 + ] + } + ], + "widgets": [], + "nodes": [ + { + "id": 39, + "type": "VAELoader", + "pos": [ + -270, + 340 + ], + "size": [ + 330, + 60 + ], + "flags": {}, + "order": 0, + "mode": 4, + "inputs": [], + "outputs": [ + { + "localized_name": "VAE", + "name": "VAE", + "type": "VAE", + "slot_index": 0, + "links": [ + 76 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "VAELoader", + "models": [ + { + "name": "qwen_image_vae.safetensors", + "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors", + "directory": "vae" + }, + { + "name": "qwen_image_vae.safetensors", + "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors", + "directory": "vae" + } + ], + "widget_ue_connectable": {} + }, + "widgets_values": [ + "qwen_image_vae.safetensors" + ] + }, + { + "id": 38, + "type": "CLIPLoader", + "pos": [ + -270, + 190 + ], + "size": [ + 330, + 110 + ], + "flags": {}, + "order": 1, + "mode": 4, + "inputs": [], + "outputs": [ + { + "localized_name": "CLIP", + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 74, + 75 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "CLIPLoader", + "models": [ + { + "name": "qwen_2.5_vl_7b_fp8_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors", + "directory": "text_encoders" + }, + { + "name": "qwen_2.5_vl_7b_fp8_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors", + "directory": "text_encoders" + } + ], + "widget_ue_connectable": {} + }, + "widgets_values": [ + "qwen_2.5_vl_7b_fp8_scaled.safetensors", + "qwen_image", + "default" + ] + }, + { + "id": 66, + "type": "ModelSamplingAuraFlow", + "pos": [ + 560, + 10 + ], + "size": [ + 300, + 58 + ], + "flags": {}, + "order": 5, + "mode": 4, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 130 + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "links": [ + 125 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "ModelSamplingAuraFlow", + "widget_ue_connectable": {} + }, + "widgets_values": [ + 3.1000000000000005 + ] + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 100, + 240 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 7, + "mode": 4, + "inputs": [ + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 74 + }, + { + "localized_name": "text", + "name": "text", + "type": "STRING", + "widget": { + "name": "text" + }, + "link": 132 + } + ], + "outputs": [ + { + "localized_name": "CONDITIONING", + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 46 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "CLIPTextEncode", + "widget_ue_connectable": {} + }, + "widgets_values": [ + "" + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 8, + "type": "VAEDecode", + "pos": [ + 890, + 20 + ], + "size": [ + 210, + 46 + ], + "flags": { + "collapsed": false + }, + "order": 8, + "mode": 4, + "inputs": [ + { + "localized_name": "samples", + "name": "samples", + "type": "LATENT", + "link": 128 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 76 + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 110 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "VAEDecode", + "widget_ue_connectable": {} + }, + "widgets_values": [] + }, + { + "id": 58, + "type": "EmptySD3LatentImage", + "pos": [ + -240, + 510 + ], + "size": [ + 270, + 106 + ], + "flags": {}, + "order": 9, + "mode": 4, + "inputs": [ + { + "localized_name": "width", + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 135 + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 136 + } + ], + "outputs": [ + { + "localized_name": "LATENT", + "name": "LATENT", + "type": "LATENT", + "links": [ + 107 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "EmptySD3LatentImage", + "widget_ue_connectable": {} + }, + "widgets_values": [ + 1328, + 1328, + 1 + ] + }, + { + "id": 7, + "type": "CLIPTextEncode", + "pos": [ + 100, + 440 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 + ], + "flags": {}, + "order": 3, + "mode": 4, + "inputs": [ + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 75 + } + ], + "outputs": [ + { + "localized_name": "CONDITIONING", + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 52 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "CLIPTextEncode", + "widget_ue_connectable": {} + }, + "widgets_values": [ + "低分辨率,低画质,肢体畸形,手指畸形,画面过饱和,蜡像感,人脸无细节,过度光滑,画面具有AI感。构图混乱。文字模糊,扭曲" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 73, + "type": "LoraLoaderModelOnly", + "pos": [ + 170, + 60 + ], + "size": [ + 270, + 82 + ], + "flags": {}, + "order": 4, + "mode": 4, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 129 + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "links": [ + 130 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.49", + "Node name for S&R": "LoraLoaderModelOnly", + "models": [ + { + "name": "Qwen-Image-Lightning-4steps-V1.0.safetensors", + "url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-4steps-V1.0.safetensors", + "directory": "loras" + } + ] + }, + "widgets_values": [ + "Qwen-Image-Lightning-4steps-V1.0.safetensors", + 1 + ] + }, + { + "id": 37, + "type": "UNETLoader", + "pos": [ + -270, + 50 + ], + "size": [ + 330, + 90 + ], + "flags": {}, + "order": 2, + "mode": 4, + "inputs": [], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 129 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "UNETLoader", + "models": [ + { + "name": "qwen_image_2512_fp8_e4m3fn.safetensors", + "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_2512_fp8_e4m3fn.safetensors", + "directory": "diffusion_models" + }, + { + "name": "qwen_image_2512_fp8_e4m3fn.safetensors", + "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_2512_fp8_e4m3fn.safetensors", + "directory": "diffusion_models" + } + ], + "widget_ue_connectable": {} + }, + "widgets_values": [ + "qwen_image_2512_fp8_e4m3fn.safetensors", + "default" + ] + }, + { + "id": 3, + "type": "KSampler", + "pos": [ + 560, + 120 + ], + "size": [ + 300, + 474 + ], + "flags": {}, + "order": 6, + "mode": 4, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 125 + }, + { + "localized_name": "positive", + "name": "positive", + "type": "CONDITIONING", + "link": 46 + }, + { + "localized_name": "negative", + "name": "negative", + "type": "CONDITIONING", + "link": 52 + }, + { + "localized_name": "latent_image", + "name": "latent_image", + "type": "LATENT", + "link": 107 + }, + { + "localized_name": "seed", + "name": "seed", + "type": "INT", + "widget": { + "name": "seed" + }, + "link": 137 + } + ], + "outputs": [ + { + "localized_name": "LATENT", + "name": "LATENT", + "type": "LATENT", + "slot_index": 0, + "links": [ + 128 + ] + } + ], + "properties": { + "enableTabs": false, + "tabWidth": 65, + "tabXOffset": 10, + "hasSecondTab": false, + "secondTabText": "Send Back", + "secondTabOffset": 80, + "secondTabWidth": 65, + "cnr_id": "comfy-core", + "ver": "0.3.48", + "Node name for S&R": "KSampler", + "widget_ue_connectable": {} + }, + "widgets_values": [ + 0, + "randomize", + 4, + 1, + "euler", + "simple", + 1 + ] + } + ], + "groups": [ + { + "id": 1, + "title": "Model", + "bounding": [ + -280, + -20, + 350, + 433.6000061035156 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 2, + "title": "Image size", + "bounding": [ + -280, + 430, + 350, + 210 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 3, + "title": "Prompt", + "bounding": [ + 90, + 160, + 450, + 470 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 4, + "title": "Lightx2v 4steps LoRA", + "bounding": [ + 90, + -20, + 450, + 170 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + } + ], + "links": [ + { + "id": 74, + "origin_id": 38, + "origin_slot": 0, + "target_id": 6, + "target_slot": 0, + "type": "CLIP" + }, + { + "id": 75, + "origin_id": 38, + "origin_slot": 0, + "target_id": 7, + "target_slot": 0, + "type": "CLIP" + }, + { + "id": 130, + "origin_id": 73, + "origin_slot": 0, + "target_id": 66, + "target_slot": 0, + "type": "MODEL" + }, + { + "id": 129, + "origin_id": 37, + "origin_slot": 0, + "target_id": 73, + "target_slot": 0, + "type": "MODEL" + }, + { + "id": 128, + "origin_id": 3, + "origin_slot": 0, + "target_id": 8, + "target_slot": 0, + "type": "LATENT" + }, + { + "id": 76, + "origin_id": 39, + "origin_slot": 0, + "target_id": 8, + "target_slot": 1, + "type": "VAE" + }, + { + "id": 125, + "origin_id": 66, + "origin_slot": 0, + "target_id": 3, + "target_slot": 0, + "type": "MODEL" + }, + { + "id": 46, + "origin_id": 6, + "origin_slot": 0, + "target_id": 3, + "target_slot": 1, + "type": "CONDITIONING" + }, + { + "id": 52, + "origin_id": 7, + "origin_slot": 0, + "target_id": 3, + "target_slot": 2, + "type": "CONDITIONING" + }, + { + "id": 107, + "origin_id": 58, + "origin_slot": 0, + "target_id": 3, + "target_slot": 3, + "type": "LATENT" + }, + { + "id": 110, + "origin_id": 8, + "origin_slot": 0, + "target_id": -20, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 132, + "origin_id": -10, + "origin_slot": 0, + "target_id": 6, + "target_slot": 1, + "type": "STRING" + }, + { + "id": 135, + "origin_id": -10, + "origin_slot": 1, + "target_id": 58, + "target_slot": 0, + "type": "INT" + }, + { + "id": 136, + "origin_id": -10, + "origin_slot": 2, + "target_id": 58, + "target_slot": 1, + "type": "INT" + }, + { + "id": 137, + "origin_id": -10, + "origin_slot": 3, + "target_id": 3, + "target_slot": 4, + "type": "INT" + } + ], + "extra": { + "workflowRendererVersion": "LG" + } + } + ] + }, + "config": {}, + "extra": { + "ds": { + "scale": 0.4454109665178183, + "offset": [ + 1876.4716820239018, + 608.8066034807798 + ] + }, + "frontendVersion": "1.35.9", + "workflowRendererVersion": "LG", + "ue_links": [], + "links_added_by_ue": [], + "VHS_latentpreview": false, + "VHS_latentpreviewrate": 0, + "VHS_MetadataImage": true, + "VHS_KeepIntermediate": true + }, + "version": 0.4 +} \ No newline at end of file diff --git a/image_to_video_wan22_5B.json b/image_to_video_wan22_5B.json new file mode 100644 index 0000000..6160b10 --- /dev/null +++ b/image_to_video_wan22_5B.json @@ -0,0 +1,624 @@ +{ + "id": "91f6bbe2-ed41-4fd6-bac7-71d5b5864ecb", + "revision": 0, + "last_node_id": 57, + "last_link_id": 106, + "nodes": [ + { + "id": 8, + "type": "VAEDecode", + "pos": [ + 1210, + 190 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 35 + }, + { + "name": "vae", + "type": "VAE", + "link": 76 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 56, + 93 + ] + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 7, + "type": "CLIPTextEncode", + "pos": [ + 413, + 389 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 75 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 52 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 3, + "type": "KSampler", + "pos": [ + 863, + 187 + ], + "size": [ + 315, + 262 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 95 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 46 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 52 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 104 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "slot_index": 0, + "links": [ + 35 + ] + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 869177064731501, + "randomize", + 30, + 5, + "uni_pc", + "simple", + 1 + ] + }, + { + "id": 28, + "type": "SaveAnimatedWEBP", + "pos": [ + 1460, + 190 + ], + "size": [ + 870.8511352539062, + 648.4141235351562 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 56 + } + ], + "outputs": [], + "properties": {}, + "widgets_values": [ + "ComfyUI", + 24.000000000000004, + false, + 90, + "default" + ] + }, + { + "id": 39, + "type": "VAELoader", + "pos": [ + 20, + 340 + ], + "size": [ + 330, + 60 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "slot_index": 0, + "links": [ + 76, + 105 + ] + } + ], + "properties": { + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "wan2.2_vae.safetensors" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 38, + "type": "CLIPLoader", + "pos": [ + 20, + 190 + ], + "size": [ + 380, + 106 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 74, + 75 + ] + } + ], + "properties": { + "Node name for S&R": "CLIPLoader" + }, + "widgets_values": [ + "umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "wan", + "default" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 48, + "type": "ModelSamplingSD3", + "pos": [ + 440, + 60 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 94 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 95 + ] + } + ], + "properties": { + "Node name for S&R": "ModelSamplingSD3" + }, + "widgets_values": [ + 8.000000000000002 + ] + }, + { + "id": 37, + "type": "UNETLoader", + "pos": [ + 20, + 60 + ], + "size": [ + 346.7470703125, + 82 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 94 + ] + } + ], + "properties": { + "Node name for S&R": "UNETLoader" + }, + "widgets_values": [ + "wan2.2_ti2v_5B_fp16.safetensors", + "default" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 47, + "type": "SaveWEBM", + "pos": [ + 2367.213134765625, + 193.6114959716797 + ], + "size": [ + 670, + 650 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 93 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "SaveWEBM" + }, + "widgets_values": [ + "ComfyUI", + "vp9", + 24, + 16.111083984375 + ] + }, + { + "id": 57, + "type": "LoadImage", + "pos": [ + 87.407958984375, + 620.4816284179688 + ], + "size": [ + 274.080078125, + 314 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 106 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "fennec_girl_hug.png", + "image" + ] + }, + { + "id": 56, + "type": "Note", + "pos": [ + 710.781005859375, + 608.9545288085938 + ], + "size": [ + 320.9936218261719, + 182.6057586669922 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Optimal resolution is: 1280x704 length 121\n\nThe reason it's lower in this workflow is just because I didn't want you to wait too long to get an initial video.\n\nTo get image to video just plug in a start image. For text to video just don't give it a start image." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 55, + "type": "Wan22ImageToVideoLatent", + "pos": [ + 420, + 610 + ], + "size": [ + 271.9126892089844, + 150 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "vae", + "type": "VAE", + "link": 105 + }, + { + "name": "start_image", + "shape": 7, + "type": "IMAGE", + "link": 106 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 104 + ] + } + ], + "properties": { + "Node name for S&R": "Wan22ImageToVideoLatent" + }, + "widgets_values": [ + 1280, + 704, + 41, + 1 + ] + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 415, + 186 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 74 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 46 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "a cute anime girl with fennec ears and a fluffy tail walking in a beautiful field" + ], + "color": "#232", + "bgcolor": "#353" + } + ], + "links": [ + [ + 35, + 3, + 0, + 8, + 0, + "LATENT" + ], + [ + 46, + 6, + 0, + 3, + 1, + "CONDITIONING" + ], + [ + 52, + 7, + 0, + 3, + 2, + "CONDITIONING" + ], + [ + 56, + 8, + 0, + 28, + 0, + "IMAGE" + ], + [ + 74, + 38, + 0, + 6, + 0, + "CLIP" + ], + [ + 75, + 38, + 0, + 7, + 0, + "CLIP" + ], + [ + 76, + 39, + 0, + 8, + 1, + "VAE" + ], + [ + 93, + 8, + 0, + 47, + 0, + "IMAGE" + ], + [ + 94, + 37, + 0, + 48, + 0, + "MODEL" + ], + [ + 95, + 48, + 0, + 3, + 0, + "MODEL" + ], + [ + 104, + 55, + 0, + 3, + 3, + "LATENT" + ], + [ + 105, + 39, + 0, + 55, + 0, + "VAE" + ], + [ + 106, + 57, + 0, + 55, + 1, + "IMAGE" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 1.1167815779425287, + "offset": [ + 3.5210927484772534, + -9.231468990407302 + ] + }, + "frontendVersion": "1.23.4" + }, + "version": 0.4 +} \ No newline at end of file diff --git a/litellm-remediation.html b/litellm-remediation.html new file mode 100644 index 0000000..db7c83b --- /dev/null +++ b/litellm-remediation.html @@ -0,0 +1,510 @@ + + + + + +LiteLLM Supply Chain Attack — Remediation Guide + + + + + +
+
+
Supply chain attack — active threat
+

LiteLLM 1.82.8
Remediation Guide

+

Discovered: 2026-03-24 · Affected: litellm==1.82.8 and 1.82.7 · Action required: immediate

+
+
+ +
+ +
+
+

Malicious versions

+

1.82.8 (primary)
1.82.7 (also compromised)

+
+
+

Exfil target

+

https://models.litellm.cloud/
Not the official litellm.ai domain

+
+
+

Trigger mechanism

+

Runs on every Python startup — no import litellm needed

+
+
+

Monthly download exposure

+

~97 million

+
+
+ +
+ +
+ +
+
+ 01 + Check if you're affected + Critical + +
+
+

Run the following to check the installed litellm version across your environments:

+
pip show litellm
+

Look for the malicious .pth file in your site-packages directory:

+
find / -name "litellm_init.pth" 2>/dev/null
+

Check uv caches specifically:

+
find ~/.cache/uv -name "litellm_init.pth" 2>/dev/null
+
⚠ Also check all virtual environments in your CI/CD pipeline, Docker containers, and any server where litellm was installed on or after March 24, 2026.
+
+
+ +
+
+ 02 + Remove the package and purge caches + Critical + +
+
+

Uninstall the affected version immediately:

+
pip uninstall litellm -y
+

Purge pip cache to prevent reinstalling from a cached wheel:

+
pip cache purge
+

If using uv:

+
rm -rf ~/.cache/uv
+

Reinstall a safe version if needed:

+
pip install litellm==1.82.6
+
+
+ +
+
+ 03 + Rotate ALL credentials — assume full compromise + Critical + +
+
+

If litellm 1.82.7 or 1.82.8 was installed on a machine, treat every credential on that machine as stolen. Rotate immediately:

+
    +
  • SSH private keys — regenerate all key pairs
  • +
  • AWS access keys and IAM credentials
  • +
  • GCP Application Default Credentials
  • +
  • Azure tokens and service principal secrets
  • +
  • All API keys stored in .env files
  • +
  • Database passwords (PostgreSQL, MySQL, Redis)
  • +
  • Git tokens and .gitconfig credentials
  • +
  • NPM tokens (~/.npmrc)
  • +
  • Kubernetes service account tokens
  • +
  • Docker registry credentials
  • +
  • Crypto wallet keys — if any wallets were on the machine
  • +
+
⚠ The malware encrypted stolen data with a 4096-bit RSA key before exfiltration. You cannot determine what was taken. Assume everything was.
+
+
+ +
+
+ 04 + Check for persistence mechanisms + Important + +
+
+

The malware attempts to install a persistent backdoor. Check for these files:

+
ls -la ~/.config/sysmon/sysmon.py +ls -la ~/.config/systemd/user/sysmon.service
+

If found, remove them:

+
rm -rf ~/.config/sysmon/ +systemctl --user disable sysmon.service 2>/dev/null +rm -f ~/.config/systemd/user/sysmon.service
+

If you use Kubernetes, audit the kube-system namespace for rogue pods:

+
kubectl get pods -n kube-system | grep node-setup
+
kubectl get secrets --all-namespaces
+
+
+ +
+
+ 05 + Check transitive dependencies in your projects + Important + +
+
+

Even if you didn't install litellm directly, it may have been pulled in by another package. Check your dependency tree:

+
pip show dspy | grep Requires +pip show litellm
+

To audit all packages in your environment for litellm as a dependency:

+
pip list | grep litellm
+

Known affected downstream projects include DSPy and various MCP plugins. Pin your requirements to safe versions:

+
# In requirements.txt +litellm==1.82.6 # or latest safe version
+
+
+ +
+
+ 06 + Review network logs for exfiltration attempts + Verify + +
+
+

Check outbound network connections to the attacker's domain. Search your firewall, proxy, or DNS logs for:

+
models.litellm.cloud
+

On Linux, check recent connections:

+
grep "litellm.cloud" /var/log/syslog 2>/dev/null +grep "litellm.cloud" /var/log/ufw.log 2>/dev/null
+

Going forward, consider blocking outbound POST requests to unknown domains from Python processes using a firewall rule or Little Snitch equivalent.

+
+
+ +
+
+ 07 + Harden your dependency practices going forward + Harden + +
+
+

This attack highlights the risk of unpinned dependencies. Adopt these practices:

+
    +
  • Pin all dependencies with exact versions in requirements.txt
  • +
  • Use hash verification: pip install --require-hashes
  • +
  • Audit your dependency graph regularly with tools like pip-audit
  • +
  • Run pip-audit on all environments as part of CI/CD
  • +
  • Monitor high-centrality packages (ones with massive downstream reach) extra carefully
  • +
  • Consider egress sandboxing for Python processes in production
  • +
  • Never store secrets in plain .env files on shared machines
  • +
+
# Install pip-audit +pip install pip-audit + +# Scan your environment +pip-audit
+
+
+ +
+
+ +
+ +
    +
  • Local development machines with litellm 1.82.7 or 1.82.8 installed
  • +
  • CI/CD pipelines that installed or upgraded litellm after 2026-03-24
  • +
  • Docker containers built with those versions
  • +
  • Production servers running affected versions
  • +
  • Any environment that pulled in DSPy ≥ 1.x with litellm>=1.64.0 as a dependency
  • +
  • MCP plugin environments using litellm as a transitive dependency
  • +
+
+ +
+ +
+ LiteLLM supply chain attack — 2026-03-24 · Safe version: litellm==1.82.6 or earlier · Source: GitHub issue #24512 / Callum McMahon's writeup +
+ + + + diff --git a/minimax_with_openclaw.txt b/minimax_with_openclaw.txt new file mode 100644 index 0000000..3cdf00b --- /dev/null +++ b/minimax_with_openclaw.txt @@ -0,0 +1,53 @@ +{ + "models": { + "providers": { + "minimax": { + "baseUrl": "https://api.minimax.io/anthropic", + "apiKey": "your api key", + "api": "anthropic-messages", + "models": [ + { + "id": "MiniMax-M2.5", + "name": "MiniMax-M2.5", + "input": ["text"], + "cost": { + "input": 0.3, + "output": 2.4, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 200000, + "maxTokens": 16384 + } + ] + } + } + }, + "agents": { + "defaults": { + "model": { + "primary": "minimax/MiniMax-M2.5" + }, + "maxConcurrent": 4, + "subagents": { + "maxConcurrent": 8 + }, + "compaction": { + "mode": "safeguard" + }, + "workspace": "/home/Ubuntu/.openclaw/workspace" + } + }, + "gateway": { + "mode": "local", + "auth": { + "mode": "token" + }, + "port": 18789, + "bind": "loopback", + "tailscale": { + "mode": "off", + "resetOnExit": false + } + } +} diff --git a/nanobot_with_ollama.txt b/nanobot_with_ollama.txt new file mode 100644 index 0000000..a3070e4 --- /dev/null +++ b/nanobot_with_ollama.txt @@ -0,0 +1,20 @@ +{ + "providers": { + "openai": { + "apiKey": "dummy", + "apiBase": "http://localhost:11434/v1" + } + }, + "agents": { + "defaults": { + "model": "glm-4.7-flash:latest" + } + }, + "channels": { + "telegram": { + "enabled": true, + "token": "YOUR_BOT_TOKEN_HERE", + "allowFrom": ["YOUR_NUMERIC_USER_ID_HERE"] + } + } +} \ No newline at end of file diff --git a/openclaw-llamacpp-install.html b/openclaw-llamacpp-install.html new file mode 100644 index 0000000..064341d --- /dev/null +++ b/openclaw-llamacpp-install.html @@ -0,0 +1,582 @@ + + + + + +OpenClaw + llama.cpp — Installation Guide + + + + +
+ + +
+
Installation Guide
+

+ OpenClaw
+ + llama.cpp +

+
Install OpenClaw from scratch on Ubuntu and connect it to a local llama.cpp server. No API costs. No cloud. Full inference on your own GPU.
+ +
+
Model Qwen3.5-35B-A3B Q8_0
+
GPU NVIDIA RTX A6000
+
Port 8080 (llama.cpp)
+
Node v22+
+
Cost $0 / token
+
+
+ + +
Prerequisites
+ +
+
+
+
llama.cpp server already running
+
+
Your llama.cpp server must be running and accessible before starting. Verify it is up:
+
+
+
bash · verify llama.cpp
+
+
+
curl http://localhost:8080/v1/models
+# Should return model list JSON
+
+
+
Endpoint
localhost:8080
+
Model ID
Qwen3.5-35B-A3B
+
Context
32768 tokens
+
Speed
~77 tok/sec
+
+
+ + +
Installation Steps
+ + +
+
+
1
+
Install Node.js 22
+
+
OpenClaw requires Node.js v22 or higher. Install via NodeSource.
+
+
+
bash
+
+
+
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
+sudo apt-get install -y nodejs
+node --version   # should print v22.x.x
+
+
+ + +
+
+
2
+
Install OpenClaw
+
+
Install the latest OpenClaw globally via npm.
+
+
+
bash
+
+
+
npm install -g openclaw@latest
+openclaw --version
+
+
+ + +
+
+
3
+
Run Onboarding Wizard
+
+
Run the wizard to initialize the workspace and install the gateway daemon. Skip provider selection — we configure llama.cpp manually in the next step.
+
+
+
bash
+
+
+
openclaw onboard --install-daemon
+
+
+ + Complete the wizard with any provider selection. The config file will be overwritten in the next step with the correct llama.cpp settings. +
+
+ + +
+
+
4
+
Configure for llama.cpp
+
+
Replace the contents of ~/.openclaw/openclaw.json with the following config.
+
+
+
json · ~/.openclaw/openclaw.json
+
+
+
{
+  "models": {
+    "providers": {
+      "llamacpp": {
+        "baseUrl": "http://127.0.0.1:8080/v1",
+        "apiKey": "dummy",
+        "api": "openai-completions",
+        "models": [
+          {
+            "id": "Qwen3.5-35B-A3B",
+            "name": "Qwen3.5-35B-A3B",
+            "reasoning": true,
+            "input": ["text"],
+            "cost": {
+              "input": 0, "output": 0,
+              "cacheRead": 0, "cacheWrite": 0
+            },
+            "contextWindow": 32768,
+            "maxTokens": 8192
+          }
+        ]
+      }
+    }
+  },
+  "agents": {
+    "defaults": {
+      "model": {
+        "primary": "llamacpp/Qwen3.5-35B-A3B"
+      },
+      "workspace": "/home/Ubuntu/.openclaw/workspace"
+    }
+  },
+  "gateway": {
+    "port": 18789,
+    "mode": "local",
+    "bind": "loopback",
+    "auth": {
+      "mode": "token"
+    }
+  }
+}
+
+ + +
+
+
+ openai-completions + ✓ USE THIS +
+
Standard OpenAI format. Correct for llama.cpp, vLLM, LiteLLM, and Ollama. Returns standard chat/completions response.
+
+
+
+ openai-responses + NOT FOR LLAMA.CPP +
+
Only for specialized APIs like MiniMax that return non-standard response formats. Do not use with llama.cpp.
+
+
+
+ + +
+
+
5
+
Start the Gateway
+
+
Start OpenClaw gateway in verbose mode to confirm llama.cpp connection.
+
+
+
bash
+
+
+
openclaw gateway --port 18789 --verbose
+
+
+ + +
+
+
6
+
Test the Agent
+
+
Send a message directly to the agent and confirm it is routing through llama.cpp.
+
+
+
bash
+
+
+
openclaw agent --message "What is the derivative of x squared times sin 3x?"
+
+# Check gateway status
+openclaw status
+
+# Run full diagnostics
+openclaw doctor
+
+
+ + If the response arrives and matches the quality you saw from the Python test, llama.cpp routing is working correctly. You can now add any channel (Telegram, Discord, Slack) on top of this config. +
+
+ + +
+
+
7
+
Add Channels (Optional)
+
+
To add Telegram or any other channel, extend the config with the channels section. The llama.cpp provider config stays exactly the same.
+
+
+
json · add to openclaw.json
+
+
+
"channels": {
+  "telegram": {
+    "botToken": "YOUR_BOT_TOKEN_HERE",
+    "dmPolicy": "pairing"
+  }
+}
+
+
+ + After adding a channel, restart the gateway: openclaw gateway restart +
+
+ + + +
+ + diff --git a/text_to_video_wan22_5B.json b/text_to_video_wan22_5B.json new file mode 100644 index 0000000..25dc251 --- /dev/null +++ b/text_to_video_wan22_5B.json @@ -0,0 +1,579 @@ +{ + "id": "91f6bbe2-ed41-4fd6-bac7-71d5b5864ecb", + "revision": 0, + "last_node_id": 57, + "last_link_id": 106, + "nodes": [ + { + "id": 8, + "type": "VAEDecode", + "pos": [ + 1210, + 190 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 35 + }, + { + "name": "vae", + "type": "VAE", + "link": 76 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 56, + 93 + ] + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 7, + "type": "CLIPTextEncode", + "pos": [ + 413, + 389 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 75 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 52 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 3, + "type": "KSampler", + "pos": [ + 863, + 187 + ], + "size": [ + 315, + 262 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 95 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 46 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 52 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 104 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "slot_index": 0, + "links": [ + 35 + ] + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 285741127119524, + "randomize", + 30, + 5, + "uni_pc", + "simple", + 1 + ] + }, + { + "id": 39, + "type": "VAELoader", + "pos": [ + 20, + 340 + ], + "size": [ + 330, + 60 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "slot_index": 0, + "links": [ + 76, + 105 + ] + } + ], + "properties": { + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "wan2.2_vae.safetensors" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 38, + "type": "CLIPLoader", + "pos": [ + 20, + 190 + ], + "size": [ + 380, + 106 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 74, + 75 + ] + } + ], + "properties": { + "Node name for S&R": "CLIPLoader" + }, + "widgets_values": [ + "umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "wan", + "default" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 48, + "type": "ModelSamplingSD3", + "pos": [ + 440, + 60 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 94 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 95 + ] + } + ], + "properties": { + "Node name for S&R": "ModelSamplingSD3" + }, + "widgets_values": [ + 8.000000000000002 + ] + }, + { + "id": 37, + "type": "UNETLoader", + "pos": [ + 20, + 60 + ], + "size": [ + 346.7470703125, + 82 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 94 + ] + } + ], + "properties": { + "Node name for S&R": "UNETLoader" + }, + "widgets_values": [ + "wan2.2_ti2v_5B_fp16.safetensors", + "default" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 47, + "type": "SaveWEBM", + "pos": [ + 2367.213134765625, + 193.6114959716797 + ], + "size": [ + 670, + 650 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 93 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "SaveWEBM" + }, + "widgets_values": [ + "ComfyUI", + "vp9", + 24, + 16.111083984375 + ] + }, + { + "id": 56, + "type": "Note", + "pos": [ + 710.781005859375, + 608.9545288085938 + ], + "size": [ + 320.9936218261719, + 182.6057586669922 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Optimal resolution is: 1280x704 length 121\n\nThe reason it's lower in this workflow is just because I didn't want you to wait too long to get an initial video.\n\nTo get image to video just plug in a start image. For text to video just don't give it a start image." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 55, + "type": "Wan22ImageToVideoLatent", + "pos": [ + 420, + 610 + ], + "size": [ + 271.9126892089844, + 150 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "vae", + "type": "VAE", + "link": 105 + }, + { + "name": "start_image", + "shape": 7, + "type": "IMAGE", + "link": null + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 104 + ] + } + ], + "properties": { + "Node name for S&R": "Wan22ImageToVideoLatent" + }, + "widgets_values": [ + 1280, + 704, + 41, + 1 + ] + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 415, + 186 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 74 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 46 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "drone shot of a volcano erupting with a fox walking on it" + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 28, + "type": "SaveAnimatedWEBP", + "pos": [ + 1460, + 190 + ], + "size": [ + 870.8511352539062, + 648.4141235351562 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 56 + } + ], + "outputs": [], + "properties": {}, + "widgets_values": [ + "ComfyUI", + 24.000000000000004, + false, + 80, + "default" + ] + } + ], + "links": [ + [ + 35, + 3, + 0, + 8, + 0, + "LATENT" + ], + [ + 46, + 6, + 0, + 3, + 1, + "CONDITIONING" + ], + [ + 52, + 7, + 0, + 3, + 2, + "CONDITIONING" + ], + [ + 56, + 8, + 0, + 28, + 0, + "IMAGE" + ], + [ + 74, + 38, + 0, + 6, + 0, + "CLIP" + ], + [ + 75, + 38, + 0, + 7, + 0, + "CLIP" + ], + [ + 76, + 39, + 0, + 8, + 1, + "VAE" + ], + [ + 93, + 8, + 0, + 47, + 0, + "IMAGE" + ], + [ + 94, + 37, + 0, + 48, + 0, + "MODEL" + ], + [ + 95, + 48, + 0, + 3, + 0, + "MODEL" + ], + [ + 104, + 55, + 0, + 3, + 3, + "LATENT" + ], + [ + 105, + 39, + 0, + 55, + 0, + "VAE" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 1.11678157794253, + "offset": [ + 7.041966347099882, + -19.733042401058505 + ] + }, + "frontendVersion": "1.23.4" + }, + "version": 0.4 +} \ No newline at end of file diff --git a/tinyclaw-install.html b/tinyclaw-install.html new file mode 100644 index 0000000..6cc5993 --- /dev/null +++ b/tinyclaw-install.html @@ -0,0 +1,533 @@ + + + + + +TinyClaw — Installation Guide + + + + +
+ + +
+
Installation Guide
+

TinyClaw 🦞

+
Multi-agent · Multi-team · Multi-channel · 24/7 AI assistant
Run multiple teams of AI agents that collaborate simultaneously with isolated workspaces.
+
+
Multi-Agent
+
TypeScript
+
Node.js v18+
+
Telegram · Discord · WhatsApp
+
MIT License
+
+
+ + +
Prerequisites
+
+
+
🟢
+
+
Node.js
+
v18 or higher
+
+
+
+
📟
+
+
tmux
+
for 24/7 operation
+
+
+
+
🔧
+
+
jq + Bash 4.0+
+
macOS: brew install bash
+
+
+
+
🤖
+
+
Claude Code CLI
+
or Codex CLI
+
+
+
+ + +
Installation Steps
+ + +
+
+
1
+
Install TinyClaw
+
+
Choose one of three installation methods. One-line install is recommended.
+
+
+
bash
+
+
+
# Option 1: One-line install (Recommended)
+curl -fsSL https://raw.githubusercontent.com/jlia0/tinyclaw/main/scripts/remote-install.sh | bash
+
+# Option 2: From release tarball
+wget https://github.com/jlia0/tinyclaw/releases/latest/download/tinyclaw-bundle.tar.gz
+tar -xzf tinyclaw-bundle.tar.gz
+cd tinyclaw && ./scripts/install.sh
+
+# Option 3: From source
+git clone https://github.com/jlia0/tinyclaw.git
+cd tinyclaw && npm install && ./scripts/install.sh
+
+
+ + +
+
+
2
+
Install AI Provider CLI
+
+
TinyClaw requires either Claude Code CLI or Codex CLI — it does not support direct API keys or OpenRouter.
+
+
+
🟣 Anthropic (Claude)
+
Install Claude Code CLI
authenticate with your
Anthropic account

Models: Sonnet, Opus
+
+
+
🟢 OpenAI (Codex)
+
Install Codex CLI
authenticate with your
OpenAI account

Models: gpt-5.3-codex
+
+
+
+ + +
+
+
3
+
Run Setup Wizard
+
+
The interactive wizard walks you through channels, workspace, agents and provider selection.
+
+
+
bash
+
+
+
tinyclaw start   # Runs interactive setup wizard
+
+
Wizard covers: channel selection (Discord/WhatsApp/Telegram) · bot tokens · workspace name · default agent · AI provider · model · heartbeat interval
+
+ + +
+
+
4
+
Configure Agents & Teams
+
+
Edit .tinyclaw/settings.json to define your agents and teams.
+
+
+
json · .tinyclaw/settings.json
+
+
+
{
+  "channels": {
+    "enabled": ["telegram", "discord"],
+    "telegram": { "bot_token": "YOUR_TOKEN" }
+  },
+  "agents": {
+    "coder": {
+      "name": "Code Assistant",
+      "provider": "anthropic",
+      "model": "sonnet"
+    },
+    "writer": {
+      "name": "Technical Writer",
+      "provider": "anthropic",
+      "model": "sonnet"
+    }
+  },
+  "teams": {
+    "dev": {
+      "name": "Dev Team",
+      "agents": ["coder", "writer"],
+      "leader_agent": "coder"
+    }
+  }
+}
+
+
+ + +
+
+
5
+
Key Commands
+
+
+
+
bash
+
+
+
tinyclaw start                        # Start daemon
+tinyclaw status                       # Check status
+tinyclaw agent list                   # List agents
+tinyclaw team visualize dev           # Live TUI dashboard
+tinyclaw logs all                     # View all logs
+
+# In-chat routing (Telegram/Discord/WhatsApp)
+@coder fix the authentication bug      # Route to agent
+@dev review this PR                    # Route to team
+/agent                                 # List available agents
+
+
+ + + +
+ + diff --git a/virtual-tryon-flux-redux-workflow.json b/virtual-tryon-flux-redux-workflow.json new file mode 100644 index 0000000..8878866 --- /dev/null +++ b/virtual-tryon-flux-redux-workflow.json @@ -0,0 +1,1235 @@ +{ + "last_node_id": 22, + "last_link_id": 32, + "nodes": [ + { + "id": 3, + "type": "PreviewImage", + "pos": [ + 688.156005859375, + 427.8555908203125 + ], + "size": [ + 418.9670104980469, + 407.99700927734375 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 2 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 4, + "type": "LoraLoaderModelOnly", + "pos": [ + -373.98199462890625, + 210.9027099609375 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 4 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 3 + ] + } + ], + "properties": { + "Node name for S&R": "LoraLoaderModelOnly" + }, + "widgets_values": [ + null, + 1 + ] + }, + { + "id": 5, + "type": "LoraLoaderModelOnly", + "pos": [ + -740.0068969726562, + 205.5785369873047 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 5 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 4 + ] + } + ], + "properties": { + "Node name for S&R": "LoraLoaderModelOnly" + }, + "widgets_values": [ + null, + 1 + ] + }, + { + "id": 6, + "type": "UnetLoaderGGUF", + "pos": [ + -1102.03857421875, + 217.55755615234375 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 5 + ] + } + ], + "properties": { + "Node name for S&R": "UnetLoaderGGUF" + }, + "widgets_values": [ + null + ] + }, + { + "id": 1, + "type": "KSampler", + "pos": [ + 0.029011666774749756, + 434.51055908203125 + ], + "size": [ + 390.86700439453125, + 373.8039855957031 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 3 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 6 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 8 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 9 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 1 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 0, + "randomize", + 20, + 8, + "euler", + "normal", + 1 + ] + }, + { + "id": 12, + "type": "StyleModelLoader", + "pos": [ + -2110.93701171875, + 538.3285522460938 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "STYLE_MODEL", + "type": "STYLE_MODEL", + "links": [ + 14 + ] + } + ], + "properties": { + "Node name for S&R": "StyleModelLoader" + }, + "widgets_values": [ + null + ] + }, + { + "id": 10, + "type": "StyleModelApplySimple", + "pos": [ + -1645.087646484375, + 353.319580078125 + ], + "size": [ + 393, + 98 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 13 + }, + { + "name": "style_model", + "type": "STYLE_MODEL", + "link": 14 + }, + { + "name": "clip_vision_output", + "type": "CLIP_VISION_OUTPUT", + "link": 15 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 12 + ] + } + ], + "properties": { + "Node name for S&R": "StyleModelApplySimple" + }, + "widgets_values": [ + "medium" + ] + }, + { + "id": 11, + "type": "CLIPTextEncode", + "pos": [ + -2141.550048828125, + 254.82571411132812 + ], + "size": [ + 400, + 200 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 16 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 13 + ] + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "" + ] + }, + { + "id": 14, + "type": "DualCLIPLoaderGGUF", + "pos": [ + -2623.37255859375, + 249.50161743164062 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 16 + ] + } + ], + "properties": { + "Node name for S&R": "DualCLIPLoaderGGUF" + }, + "widgets_values": [ + "clip_l.safetensors", + "clip_l.safetensors", + "sdxl" + ] + }, + { + "id": 16, + "type": "CLIPVisionLoader", + "pos": [ + -2483.61474609375, + 526.3495483398438 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP_VISION", + "type": "CLIP_VISION", + "links": [ + 18 + ] + } + ], + "properties": { + "Node name for S&R": "CLIPVisionLoader" + }, + "widgets_values": [ + null + ] + }, + { + "id": 7, + "type": "InpaintModelConditioning", + "pos": [ + -405.9259338378906, + 855.1069946289062 + ], + "size": [ + 315, + 138 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 10 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": 17 + }, + { + "name": "pixels", + "type": "IMAGE", + "link": 22 + }, + { + "name": "mask", + "type": "MASK", + "link": 23 + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "links": [ + 6 + ] + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 8 + ] + }, + { + "name": "latent", + "type": "LATENT", + "links": [ + 9 + ] + } + ], + "properties": { + "Node name for S&R": "InpaintModelConditioning" + }, + "widgets_values": [ + true + ] + }, + { + "id": 15, + "type": "VAELoader", + "pos": [ + -823.8607788085938, + 688.7318115234375 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 17 + ] + } + ], + "properties": { + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "ae.safetensors" + ] + }, + { + "id": 9, + "type": "FluxGuidance", + "pos": [ + -849.1491088867188, + 334.6857604980469 + ], + "size": [ + 317.4000244140625, + 58 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 12 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 10, + 11 + ] + } + ], + "properties": { + "Node name for S&R": "FluxGuidance" + }, + "widgets_values": [ + 3.5 + ] + }, + { + "id": 8, + "type": "ConditioningZeroOut", + "pos": [ + -813.2117919921875, + 588.9063720703125 + ], + "size": [ + 317.4000244140625, + 26 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 11 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 7 + ] + } + ], + "properties": { + "Node name for S&R": "ConditioningZeroOut" + }, + "widgets_values": [] + }, + { + "id": 20, + "type": "LoadImage", + "pos": [ + -2695.246337890625, + 1126.63037109375 + ], + "size": [ + 436.1210021972656, + 331.3030090332031 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 26 + ], + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": [ + 25 + ] + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "Claire.png", + "image" + ] + }, + { + "id": 19, + "type": "INPAINT_ExpandMask", + "pos": [ + -2069.677490234375, + 1143.9339599609375 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 25 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 24 + ] + } + ], + "properties": { + "Node name for S&R": "INPAINT_ExpandMask" + }, + "widgets_values": [ + 16, + 7 + ] + }, + { + "id": 18, + "type": "AddMaskForICLora", + "pos": [ + -1714.3001708984375, + 832.4796752929688 + ], + "size": [ + 395.218994140625, + 289.9230041503906 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "first_image", + "type": "IMAGE", + "link": 21 + }, + { + "name": "first_mask", + "type": "MASK", + "link": null, + "shape": 7 + }, + { + "name": "second_image", + "type": "IMAGE", + "link": 26, + "shape": 7 + }, + { + "name": "second_mask", + "type": "MASK", + "link": 24, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 22 + ], + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": [ + 23 + ], + "slot_index": 1 + }, + { + "name": "x_offset", + "type": "INT", + "links": [ + 27 + ], + "slot_index": 2 + }, + { + "name": "y_offset", + "type": "INT", + "links": [ + 28 + ], + "slot_index": 3 + }, + { + "name": "target_width", + "type": "INT", + "links": [ + 29 + ], + "slot_index": 4 + }, + { + "name": "target_height", + "type": "INT", + "links": [ + 30 + ], + "slot_index": 5 + }, + { + "name": "total_width", + "type": "INT", + "links": null + }, + { + "name": "total_height", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AddMaskForICLora" + }, + "widgets_values": [ + "auto", + 1536, + "#FF0000" + ] + }, + { + "id": 2, + "type": "VAEDecode", + "pos": [ + 433.9349365234375, + 430.5176086425781 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 1 + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 2, + 31 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 21, + "type": "ImageCrop+", + "pos": [ + 569.6968994140625, + 1070.7294921875 + ], + "size": [ + 412.1629943847656, + 372.35400390625 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 31 + }, + { + "name": "x_offset", + "type": "INT", + "link": 27, + "widget": { + "name": "x_offset" + } + }, + { + "name": "y_offset", + "type": "INT", + "link": 28, + "widget": { + "name": "y_offset" + } + }, + { + "name": "width", + "type": "INT", + "link": 29, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": 30, + "widget": { + "name": "height" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 32 + ], + "slot_index": 0 + }, + { + "name": "x", + "type": "INT", + "links": null + }, + { + "name": "y", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "ImageCrop+" + }, + "widgets_values": [ + 256, + 256, + "top-left", + 0, + 0 + ] + }, + { + "id": 22, + "type": "PreviewImage", + "pos": [ + 1110.0830078125, + 1061.41162109375 + ], + "size": [ + 428.28399658203125, + 404.0039978027344 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 32 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + } + }, + { + "id": 13, + "type": "CLIPVisionEncode", + "pos": [ + -2011.1119384765625, + 654.1256103515625 + ], + "size": [ + 380.4000244140625, + 78 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "clip_vision", + "type": "CLIP_VISION", + "link": 18 + }, + { + "name": "image", + "type": "IMAGE", + "link": 19 + } + ], + "outputs": [ + { + "name": "CLIP_VISION_OUTPUT", + "type": "CLIP_VISION_OUTPUT", + "links": [ + 15 + ] + } + ], + "properties": { + "Node name for S&R": "CLIPVisionEncode" + }, + "widgets_values": [ + "center" + ] + }, + { + "id": 17, + "type": "LoadImage", + "pos": [ + -2691.256103515625, + 684.7386474609375 + ], + "size": [ + 422.8110046386719, + 385.8739929199219 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 19, + 21 + ], + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": [], + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "Claire.png", + "image" + ] + } + ], + "links": [ + [ + 1, + 1, + 0, + 2, + 0, + "LATENT" + ], + [ + 2, + 2, + 0, + 3, + 0, + "IMAGE" + ], + [ + 3, + 4, + 0, + 1, + 0, + "MODEL" + ], + [ + 4, + 5, + 0, + 4, + 0, + "MODEL" + ], + [ + 5, + 6, + 0, + 5, + 0, + "MODEL" + ], + [ + 6, + 7, + 0, + 1, + 1, + "CONDITIONING" + ], + [ + 7, + 8, + 0, + 7, + 1, + "CONDITIONING" + ], + [ + 8, + 7, + 1, + 1, + 2, + "CONDITIONING" + ], + [ + 9, + 7, + 2, + 1, + 3, + "LATENT" + ], + [ + 10, + 9, + 0, + 7, + 0, + "CONDITIONING" + ], + [ + 11, + 9, + 0, + 8, + 0, + "CONDITIONING" + ], + [ + 12, + 10, + 0, + 9, + 0, + "CONDITIONING" + ], + [ + 13, + 11, + 0, + 10, + 0, + "CONDITIONING" + ], + [ + 14, + 12, + 0, + 10, + 1, + "STYLE_MODEL" + ], + [ + 15, + 13, + 0, + 10, + 2, + "CLIP_VISION_OUTPUT" + ], + [ + 16, + 14, + 0, + 11, + 0, + "CLIP" + ], + [ + 17, + 15, + 0, + 7, + 2, + "VAE" + ], + [ + 18, + 16, + 0, + 13, + 0, + "CLIP_VISION" + ], + [ + 19, + 17, + 0, + 13, + 1, + "IMAGE" + ], + [ + 21, + 17, + 0, + 18, + 0, + "IMAGE" + ], + [ + 22, + 18, + 0, + 7, + 3, + "IMAGE" + ], + [ + 23, + 18, + 1, + 7, + 4, + "MASK" + ], + [ + 24, + 19, + 0, + 18, + 3, + "MASK" + ], + [ + 25, + 20, + 1, + 19, + 0, + "MASK" + ], + [ + 26, + 20, + 0, + 18, + 2, + "IMAGE" + ], + [ + 27, + 18, + 2, + 21, + 1, + "INT" + ], + [ + 28, + 18, + 3, + 21, + 2, + "INT" + ], + [ + 29, + 18, + 4, + 21, + 3, + "INT" + ], + [ + 30, + 18, + 5, + 21, + 4, + "INT" + ], + [ + 31, + 2, + 0, + 21, + 0, + "IMAGE" + ], + [ + 32, + 21, + 0, + 22, + 0, + "IMAGE" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 0.7513148009015777, + "offset": [ + 3026.665000000004, + -486.4195663299554 + ] + } + }, + "version": 0.4 +} \ No newline at end of file