Drive 360 Hextile workflows from an AI coding agent. Use when generating 360° panoramas, listing or saving workflow templates, overriding prompts, dry-run validation, 360-LoRA seeds, polling or listing renders, or reading bundled automation guides.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Drive 360 Hextile workflows from an AI coding agent. Use when generating 360° panoramas, listing or saving workflow templates, overriding prompts, dry-run validation, 360-LoRA seeds, polling or listing renders, or reading bundled automation guides.
360 Hextile — Agent Skill
Drive 360 Hextile (desktop app) while it is running on this machine. Tools talk to http://127.0.0.1:8000 through the hextile MCP server. The server owns config authority — merge, HextileConfig validation, and queueing happen in the app, not in this plugin.
Install id: hextile-agent@360-hextile. Marketplace 360-hextile. Skill/MCP token hextile. Do not install hextile@360-hextile.
See references/agent-lexicon.md for locked words, the complementarity card, and REFUSE_* strings.
Copilot never queues GPU (REFUSE_RENDER_COPILOT). Press RENDER, or use run_workflow here.
MCP live-apply (apply_config_delta) needs follow ON (REFUSE_LIVE_FOLLOW_OFF). Gate A stays locked. Follow is not Copilot Auto.
MCP cannot goto or operate Layers (REFUSE_NAV_MCP, REFUSE_LAYERS_MCP).
Before composing fields or teaching the user, call get_guide (workflow-schema, best-practices, recipes, website-index). Fetch website URLs from website-index when you need product-domain depth.
Prerequisites
(backend on ).
360 Hextile is running
127.0.0.1:8000
python3 ≥ 3.9 on PATH (MCP proxy). On Windows, Claude .mcp.jsoncommand should be python or py -3, not python3. Codex installer already writes sys.executable.
App build with POST /api/workflows/run (workflow automation P0+).
If a tool returns that the app is not running, tell the user verbatim:
Launch 360 Hextile, then retry
Do not invent endpoints, do not hang, do not shell-sleep-poll forever without get_status / list_runs.
What a Workflow is
A Workflow is a full .hextile.json config document (pipeline / hextile / input / diffusion / prompt / post / …), stored on shelves:
origin
Meaning
builtin
Shipped templates (e.g. quick-scout) — immutable
user
User library
project
Project-scoped (needs an active project)
There is no separate workflow-envelope format — only .hextile.json. Prefer shelf workflow_id + overrides over inventing a full raw document.
Tools
Tool
When to use
Mutates?
get_capabilities
Handshake before a session
no
get_live_context
Studio snapshot (follow + doc_generation + live export)
no
apply_config_delta
Live delta on the open file (follow ON). Never queues
yes
get_guide
Schema, practices, recipes, website index
no
list_workflows
Discover templates
no
get_workflow
Read one template before override or clone
no
save_workflow
Persist a new id on user/project
yes
delete_workflow
Remove a user/project workflow
yes
validate_config
Dry-run merge+validate (terraform plan)
no
list_installed_models
Installed weights — dry-run is Pydantic only
no
run_workflow
Queue a render after overrides
yes
get_status
Poll run_id progress / output paths
no
get_render_config
Read producing .hextile.json for a render
no
get_logs
Fetch failed-run logs
no
list_runs
Find jobs if you lost run_id
no
cancel_run
Kill a long GPU run
yes
retry_run
Retry a crashed/failed run (APP returns 400 otherwise); uses APP tile-reuse policy
yes
list_360_loras
Discover path + base_model for seeds
no
generate_seed
Create equirect seed image via 360-LoRA
yes
list_seed_history
Recover seed batches after the 300s generate_seed timeout
no
get_seed_batch
Recover one seed batch after the 300s generate_seed timeout
no
cancel_seed
Stop the live 360-LoRA job, not a render
yes
extract_sequence_video
Extract video frames to a folder (video sequence door)
yes
create_sequence
Create a seq_* from a folder + full config (not run_workflow)
Handshake → get_capabilities then get_live_context before compose.
Learn → get_guide (best-practices then workflow-schema).
Discover → list_workflows → pick origin + id.
Inspect → get_workflow if you need defaults before overriding.
Plan → validate_config with the same overrides you intend to run.
Need a source image from a prompt? → list_360_loras then generate_seed (two-step below).
Run → run_workflow → keep run_id → get_status until terminal (completed / failed / cancelled / crashed). Use list_runs if the id is lost.
Save a variant → save_workflow (user/project, new id). Create-only; 409 means pick another id.
Abort → cancel_run.
Upres
GPU upres of a still, a folder, or a video → skill /hextile-upres. Do not invent upscale_image. Do not send GPU upres through hextile-pipe.
Stills use run_workflow with builtin upres-still. Folders and video use that skill's sequence door (run_workflow cannot create a seq_*). Recipes E (still) and F (folder/video) live in get_guiderecipes.
Safety — overrides, never authority
Send workflow_id + overrides (and optional output). Prefer not composing a full raw config as authority.
The app deep-merges and validates. A bad override is a structured 422 — read it, fix the override, retry.
List / array merge: REPLACE wholesale. Overriding passes[], lora.models[], or any array replaces the template list; it does not append. To “add a LoRA”, include the full desired array (template entries you want to keep + your addition).
Live runs need a non-empty input.path after merge (empty path is only OK on dry_run).
input.source is file or render only.
Seed → run (two-step)
InputSource is file | render only. Generative producers are not render-time sources.
Never write retired source types (pattern, 360_lora, …) into render-time input.source.
generate_seed hits POST /api/360-lora/generate (not /api/lora-360).
generate_seed can take up to 300s. If the host times out, recover with list_seed_history / get_seed_batch — do not assume the job died. cancel_seed cancels whatever seed job is live (no batch id). It is global. Undo of a live apply is studio loadConfig, not this tool. Follow GET-apply of a finished run may still paint sliders (accepted leftover).