tdmcp Roadmap
tdmcp connects an AI assistant (Claude, Cursor, Codex…) to TouchDesigner so you can build real visual systems from plain language — no node-wiring by hand. This page is the honest, bird's-eye picture of what already works, what's still rough, and what's coming next on the way to a stable 1.0.
Where things stand today. The published npm latest package and the latest published GitHub Release/tag are both v0.13.0 (published 2026-07-07), which shipped the #128 artist/inspection tools and bridge routes, the .dxt→.mcpb Connectors Directory package migration (#129), full CLI tool parity (#130), recipe/doc fixes, and the release-safety gates. The current source tree is preparing v0.13.1 (this PR, not yet tagged): native RayTK ROP-node graph integration, Glama/MCP directory metadata fixes, and a Creative RAG Smithsonian URL fallback fix. Until the v0.13.1 tag/release is published, public bootstrap and package self-install URLs stay pinned to the current v0.13.0 release; the version-sync script advances those install pins during the actual tagged release. The CHANGELOG blocks list every entry; the always-current tool list is the Tools reference. 1.0 is not the next minor — the v0.1x line is the active feature/consolidation line, and v1.0 will land only once the consolidation gates below are all green.
The project has grown through five arcs:
- Generate — one-line tools that build a whole wired network (audio-reactive, generative, feedback, 3D, particles, shaders).
- Perform — turn those networks into playable instruments (cues, macros, control surfaces, a phone remote, beat sync, a hands-free auto-VJ).
- Package & operate — reusable components, project analysis, token-cheap editing primitives, and a structured bridge that keeps working in a locked-down venue.
- Compose & automate (v0.7.0) — run a whole arranged show over time, with timelines, setlists, schedulers, cue composition and live-safety controls.
- Ingest & extend (v0.7.x through v0.8.x) — pull in the wider TouchDesigner world (Shadertoy / ISF shaders, Ableton, the iconic VJ looks), then deepen AI/library publishing and operator DX. Waves 1-3 are in v0.7.0; v0.7.1 ships the first CLI/copilot/resource/bridge follow-through; v0.8.1 closes the current generator, MediaPipe, session profile, dashboard, inline-preview and resilience queue.
How to read this page
- ✅ Shipped — in a released version you can install today.
- 🧪 Experimental — shipped and usable, but needs live tuning or specific hardware to shine (flagged so you know what to expect).
- ⬜ Planned — designed and prioritized, not yet built.
The dated, line-by-line record of every change is the CHANGELOG (
CHANGELOG.mdin the repository root); the always-current, complete tool list is the Tools reference. This page is the overview. Curious about the long tail of ideas? The full, unfiltered brainstorm is preserved in the planning archive at the end.
✅ Current Release Line
v0.13.1 preparation (unreleased) — RayTK native integration and registry fixes
Source-tree work on top of the published v0.13.0 tag. Committed and pushed without a tag by design; public bootstrap/self-install URLs stay pinned to v0.13.0 until the release tag exists, then scripts/sync-manifest-version.mjs must advance them to v0.13.1 before tagging:
- Native RayTK integration.
create_raytk_op,create_raytk_scene, and thetdmcp://raytk/operatorscatalog drive RayTK (t3kt/raytk) as editable ROP node graphs, complementary to the GLSL raymarch tools. - RayTK version-gate honesty.
manage_packages doctor raytknow reflects RayTK 0.46's TD 2025.30770+ requirement and warns on older TouchDesigner builds. - Registry/directory fixes. Glama/MCP directory metadata exposes
TDMCP_TOOL_PROFILE, and the Creative RAG Smithsonian adapter now produces a valid canonical URL whenrecord_linkis absent.
v0.13.0 — new tools, bridge routes, CLI parity
Published on 2026-07-07 (npm + GitHub release + v0.13.0 tag). The 0.13.0 line shipped:
- 20 new tools (#128), live-validated on TD 099 build 2025.32820. Layer 1:
create_step_repeat,create_pointer_reactive,create_interaction_zones,create_terrain,create_asemic_writing,create_sdf_text,controlled_disorder_grid,create_blob_trace,create_fixture_control,create_detection_reactive,create_geo_visualization. Layer 2:add_timecode_overlay,scaffold_vj_deck,create_synesthesia_unreal_osc. Layer 3:watch_parameter_changes,bundle_dependencies,check_operator_availability. Library:export_externalized_tree. AI:narrate_set. Plus acreate_vertex_displacement_matMAT builder. - 4 new first-class bridge REST routes +
param.changedevent (#128).POST /api/params/watch/DELETE/GET,POST /api/nodes/{path}/save,POST /api/duplicate,GET /api/optypes— promotingrender_outputandduplicate_networkoff/api/exec(see G4). New eventparam.changed+watch_service; client methodswatchParameters/unwatchParameters/listParameterWatches,saveNode,duplicateNode,getOpTypes,getHealth. - Full CLI tool parity — 44 new subcommands (#130). All 21 vault tools plus
get_preview,watch_node,manage_packages,swap_operator,copilot_vision,auto_repair_loop,create_glsl_material,publish_recipe_bundle, and others becometdmcp-agentsubcommands; newbundle-deps,export-external-tree,narrate-set,check-optypes,preview --inline [--watch], and adoctor --jsonalias. - Connectors Directory package migration (#129).
.dxt→.mcpbbundle, enriched + validated manifest, bundledmcpb/icon.png, and a field-by-field submission draft (submission-readiness for G6; acceptance is still external). - Recipe + install fixes.
audio_reactive_basic,optical_flow_particles,audio_spectrum_barsandhistogram_scopefixed and live-cook-validated; recipe expression-mode (expr) support; drag-and-droptdmcp_bridge_package.tox(npm run build:bridge-tox).
Docs follow-through (G5) — done. The 20 new #128 tools now have EN + PT prompt-cookbook entries (20/20 each) and the new CLI-parity subcommands are documented in
docs/reference/cli.md. See G5 below.
v0.12.0 — safe mutations, previews and bridge hardening
Published on 2026-07-04 (npm + GitHub release + v0.12.0 tag). The 0.12 line hardened the agent path around safer retries, cheaper inspection and stronger local transport defaults:
- Retry-safe mutations.
create_td_nodeandcreate_node_chainreuse matching existing operators instead of failing or auto-renaming; mutating bridge requests are wrapped in single TouchDesigner undo blocks. - Parameter and destructive-action guardrails. Menu parameters now reject unknown entries explicitly,
delete_td_nodeadds reversible bypass mode, andset_parameter_expressioncan reset or unbind values behind the exec gate. - Cheaper inspection.
get_previewadds JSON sample grids, pre-pulse capture and delayed capture jobs;get_dat_contentpages large DATs;get_parameter_menuexposes live menu choices with bundled fallback data. - Layout and editor follow-through. Shared layout moves docked DATs with their parent nodes,
rebuild_networkcan auto-layout specs, andfocus_network_editorframes generated operators in TouchDesigner's Network Editor. - Bridge and transport hardening. Loopback peer-address enforcement, back-pressure shedding, Streamable HTTP
Origin/Content-Typechecks, optional bearer auth, an offline smoke harness, and portable contract export prepare the release for safer local automation.
Wave 12 — v0.8.3 (live-show resilience + LLM token budget + CLI ergonomics)
Shipped as v0.8.3 on top of v0.8.2. Tool surface grows from 279 → 286. Live-validated on TD 099 build 2025.32820 unless flagged UNVERIFIED in CHANGELOG. Tagged v0.8.3; npm publish happens out-of-band via the release workflow when NPM_TOKEN is set.
- Live-show resilience (Layer 1).
create_safety_blackout_chain(panic blackout + fade-back recovery),create_setlist_runner(timed multi-track set with stage overrides),create_show_failover(watchdog + auto-failover between two render paths), andcreate_pose_reactive(MediaPipe pose → reactive particle / displacement) — the last one closes ROADMAP A.6 (create_pose_reactiveis no longer deferred). - Auto-repair loop (Layer 2).
auto_repair_looprunsrepair_networkon a cadence until errors clear or a budget hits. - LLM token budget (Layer 3 + resource).
compact_graph_digestemits a compact JSON digest of any subgraph; the matching MCP resourcetdmcp://digest/{path}is registered in theLLM_TOOLSbasic tier so a local copilot can hydrate context without re-running heavy inspection tools. - Vault.
scaffold_recipe_from_networkexports a working subgraph as a draft recipe in the vault. - Two new first-class bridge REST endpoints that survive
TDMCP_BRIDGE_ALLOW_EXEC=0, continuing the G4 endpoint sweep:POST /api/perform(promotesset_perform_modeoff exec) andPOST /api/param_modes/batch(with new clientreadParameterModesBatch). Both tools keep their exec fallback. - CLI ergonomics.
tdmcp init— one-shot onboarding that stages the bridge, writes a client config (Claude / Cursor / Codex), seeds a profile and an optional bridge token, all with--dry-run+--json.tdmcp ask— non-interactive copilot turn: pass a prompt, get one answer back (with optional--jsonenvelope, tool-call counts,--read-only/--creativetier and--timeoutcap). See CLI reference. create_audio_reactiveextension. Opt-intransient_gate+sidechain_duckmodulation bus (4 new flags); defaults preserve the byte-identical container so existing prompts keep working.- Fixes since 0.8.2.
create_histogram_scopedistribution curve (Pattern CHOP tx/tz synthesis);create_control_panelrgb 3-target binding; resilient MediaPipe DAT/mask lookup acrosssetup_face_tracking/setup_hand_tracking/setup_segmentation.
v0.8.2 — Stabilization patch: REST bridge expansion, recipe library, coverage push
v0.8.2 is the public tag for the 0.8 stabilization line. Same tool surface as v0.8.1 (279 tools) — this release does not add new tools, it stabilizes the existing surface ahead of v1.0:
- Four new bridge REST endpoints that survive
TDMCP_BRIDGE_ALLOW_EXEC=0:POST /api/transport(timeline play/pause/seek/cue/rate),GET /api/system(gpu + monitors + performMode),GET /api/projects/<path>/analysis(project analysis port of the previously embedded Python script), andGET /api/nodes/<path>/custom_params(custom-par readout for COMPs). - Seven tools promoted REST-first with
tryEndpoint(REST, exec-fallback):snapshot_td_graph,control_timeline_transport,inspect_gpu_and_displays,analyze_project, plus the custom-params slice ofserialize_networkandinspect_component, and a snapshot+rollback flow onrepair_network(steps revert iferrors_after >= errors_before). bridge_watch_buildshipped:tdmcp-agent watch-buildgates changed bridge Python withpy_compileand reloads the running bridge automatically unless disabled.- Recipe library expansion: +16 first-party recipes (15 → 31) covering the v0.7–v0.8 generators (kinetic text, decks, 3D scene, depth+displace, optical-flow particles, MediaPipe face overlay, scene timeline, GLSL plasma, pose skeleton standalone, particle system basic, feedback network basic, audio reactive basic, keyframe animation basic, video synth oscillator).
- Tool API contract reference page published at
/reference/tool-contractdocumenting the v1.0 invariants (naming, schema, error handling, offline behaviour, result shape, deprecation). - Coverage gates raised:
functions: 80 → 82invitest.config.ts; global Br now at 72%+. New test suites forsrc/index.ts,src/cli/agent.ts(wave-5 + wave-9),src/cli/tui.ts,src/cli/doctor.ts,src/llm/server.ts,src/llm/client.ts,src/packages/cli.ts, plus targeted regressions fordetect_pitch,repair_networkrollback,create_envelope_followerducking topology, and a vault round-trip determinism suite. Three pre-existing flaky fs-heavy tests (provenanceStamp,styleMemory,vaultRepoSync) hardened. - Roadmap honesty pass: Experimental / Out-of-scope / Planning archive reconciled (no shipped item lingering as backlog; gated items split into hardware / GPU / multimodal-LLM / paid-license buckets).
- Bug fixes:
detect_pitchnotesstring now advertises the actualDEFAULT_THRESHOLD = 0.0005(was the stale0.02);repair_networkno longer leaks_snapshotbetween invocations;kinetic_text_audio_reactiverecipe now usesaudiofilterCHOP(audiobandeqCHOPdoes not exposeloband/hiband).
v0.8.1 — v0.8 feature line, session profile and resilience patch
v0.8.1 is the public tag for the 0.8 release line. It includes the v0.8.0 npm-published feature expansion plus the post-merge resilience patch and the missing public registration for load_session_profile / tdmcp://session/profile. The generated Tools reference exposes 279 tools: the new AI-session tool, the generator and MediaPipe tools listed below, dashboard-v2, N-channel create_decks, portable-tox README, Mermaid generate_readme, the new MCP resources, and the AI Show Director.
- Persistent AI session profile.
load_session_profileloads or initialises a local session snapshot (style, similar prior work, learned conventions and corpus notes), andtdmcp://session/profileexposes that snapshot as a JSON resource so an agent can hydrate context without re-running heavier vault tools every turn. - Release-resilience patch. Vault writes, package state writes and staged package installs are atomic; HTTP transport listen failures reject cleanly and close event streams; failed Streamable HTTP initialization closes the per- session server; bridge GET retries now include transient 5xx API errors; and the layer-3 endpoint-first / exec-fallback policy is centralized in
tryEndpoint. - Top-level package-manager discoverability.
tdmcp --helpnow expands the package-manager tree (search,list,info,install,uninstall,doctor,packages path) instead of hiding it behind one summary row, andtdmcp packages --help/tdmcp completion <bash|zsh|fish>include those package commands and common package flags. - Expanded
doctor --fixrepairs.tdmcp-agent doctor --fixcreates a missing configuredTDMCP_VAULT_PATH, scaffolds the default profile directory, writes a missing bridge token to.envwithout printing the secret, can runinstall-bridge --verifybehind a bounded repair hook, attempts a macOS Textport auto-install when the bridge still needs the manualinstall.run()step, and still prints suggestions for checks that need manual action. - Script-compatible run files.
tdmcp-agent runnow forwards global--no-colorinto nested JSON/stdin steps, and individual run-file steps can set"no_color": true. - Bridge watch-build hot reload.
tdmcp-agent watch-buildnow treats saved changes undertd/as runtime bridge edits: after typecheck/build pass, it runspython -m py_compileon changed.pyfiles and callsreload_bridge.--no-py-compileand--no-reload-bridgeprovide opt-outs for build-only loops. - Offline MCP resource follow-through.
tdmcp://glsl-snippetsexposes the vetted in-repo GLSL snippet catalog,tdmcp://cheatsheetsadds compact workflow reminders with resource refs, andtdmcp://learning/touchdesignerpairs the existingteach_touchdesignerprompt with a curated KB-backed learning path. - N-channel
create_decks.create_decksnow keeps the legacy A/B crossfader path intact while adding an explicitdecks[]mode for 2-8 decks: per-deck source/gain chains, per-deck FX-send branches into an additive bus, an additive FX return into the master, a running Cross TOP program mix, and a hard-cut Switch TOP blended back into program withcut_mix. - Portable component docs.
make_portable_toxnow writes a packageREADME.mdby default, documenting node inventory, custom parameters, inputs/outputs and external file references beside the.toxand manifest.include_readme:falsekeeps the old lean package shape. - Versioned recipe-bundle publishing. New
publish_recipe_bundlewrites a local publish artifact folder: the recipe bundle JSON, atdmcp-recipe-publish.jsonmanifest with release version/recipe IDs, and atdmcp-checksums.jsonSHA-256 manifest for repeatable handoff or later CI upload. - Deferred GPU-style generators (CPU/GLSL paths). Four roadmap Milestone 2/4 generators now ship as stock-TD networks — no CUDA, no external models:
create_sdf_fieldbuilds a programmable signed-distance-field raymarcher (CSG tree of sphere/box/torus with union/intersect/subtract + smooth blend) inside a single GLSL TOP, with live camera/step-count/intensity/colour controls.create_strange_attractorruns a Script-CHOP-integrated ODE (Lorenz / Aizawa / Halvorsen) into a Script-SOP polyline + optional tube + Geometry / Camera / Light / Render pipeline for deterministic CPU geometry.create_optical_flowbuilds a CPU optical-flow vector field from a video source out of stock TOPs (blur, monochrome, cache, composite subtract, optional edge, math, feedback+level), producing an RG-packed flow TOP usable as a drop-in modulator for displacement / particle chains.create_histogram_scopeadds the Milestone-2 histogram panel as a focused tool: GPU GLSL TOP bins → CHOP normalisation →choptoSOP→ render TOP, luminance + optional per-channel RGB.
- MediaPipe face + hand + segmentation (camera-only). Three new one-shot adapters on the in-tree tracking engine:
setup_face_trackingloads the MediaPipe ENGINE and builds an adapter Script CHOP that emits a 468-sample (478 with iris) face-landmark CHOP (tx/ty/tz/confidence, centred on nose tip), ready forbind_to_channelandcreate_data_visualization.setup_hand_trackingreuses the same engine and emits a canonicalmax_hands×21-landmark CHOP (tx/ty/tz/confidence/handedness),coordinate_space='world'recommended for gesture detection, ready forbind_to_channelorcreate_pose_skeleton.setup_segmentationreuses the same engine, enables selfie-segmentation and publishes a clean alpha-mask Null TOP (+ optional pre-keyedperson_rgbaNull TOP), ready forcreate_keyer,create_depth_silhouetteor any matte-consuming chain.
- Inline preview pass (
get_inline_preview). New Layer-3 inspection tool returns a bounded TOP thumbnail (default 256×256, capped at 1024) together with resolution, pixel format, cook metadata and post-cook node errors in a single structured payload, so agents can verify a build without jugglingget_preview+get_td_node_errors. Closes the Milestone-4 inline preview pass. - Front-of-house dashboard v2 (
create_stage_dashboard layout:"v2"). Opt-in dashboard layout adds a stereo VU pair, a BPM readout fed by an optionaltempo_channel(e.g. adetect_tempoNull CHOP), an FPS / cook-time / frame overlay, a cue timeline strip driven by an optionalcue_times[]array (pairs fromcompose_cue_list), and a sticky confirm-tap PANIC bar.layout:"v1"remains the default and is byte-for-byte unchanged. Closes the Milestone-4 front-of-house dashboard pass. - Stronger component READMEs (
generate_readme). Newinclude_mermaid:trueembeds a Mermaid flowchart of the operator graph in the "Data flow" section, and amax_nodescap (default 200) truncates the Child inventory table with a one-line "N more nodes not shown" footer so large components produce scannable READMEs. Together with the existingmake_portable_toxpackage README (license/manifest metadata + inventory), this closes the Milestone-3 trust & publish polish item.
v0.7.1 — Operator DX, local copilot & bridge-health patch
v0.7.1 is a patch release on top of v0.7.0. It keeps the public story focused on operator reliability rather than introducing a new campaign label: the same BEYOND / Ingest & Extend release line, now with a cleaner CLI, richer local copilot context, more MCP resources, and a small read-only runtime diagnostic.
- CLI/operator DX.
tdmcp --helpprints usage without starting the MCP server;tdmcp-agent run -reads run files from stdin;--continue-on-errorfinishes a batch and returns the first failure; saved venue profiles can be listed/inspected with secrets redacted;tdmcp-agent commands --jsonandtdmcp://commandsexpose the command catalog; grouped help andtdmcp-agent help <command>make the CLI easier to scan. - Install, transport and watch ergonomics.
tdmcp install-client --writedeep-merges and verifies Claude/Cursor/Codex config files; the bridge installer now has--verify,--waitand--portpolling against/api/info;tdmcp serve --http [--port]starts loopback Streamable HTTP without changing the default stdio behavior; list commands can render table/CSV; the REPL has persistent history and Tab completion; andtdmcp-agent watchadds pretty output, event counts, heartbeats and debounced exec hooks. - Local copilot and resources.
tdmcp://promptsis generated from the real prompt registry,tdmcp://recipes/search/{query}searches recipes, andtdmcp://cookbook/tdmcp://cookbook/{en|pt}expose the prompt cookbook to MCP clients. The local copilot reads that prompt catalog, accepts--read-only,--creative,--prompt,--profileand--config, and can be tuned withTDMCP_LLM_TIER,TDMCP_LLM_MAX_STEPSandTDMCP_LLM_TEMPERATURE. - Bridge/runtime diagnostics.
get_node_state_runtimecan opt into temporary Info CHOP sampling withinclude_info_chop:true; the bridge now servesGET /api/health; andwatch_nodeadds a read-only short-window sampler for one operator's state, parameters and CHOP channels. Tool registry: 268 → 269. - Packaging hygiene. The release/bundle path no longer emits the deprecated
whatwg-encodingchain or the staged production-installmute-streamEBADENGINEwarning fixed after v0.7.0.
v0.7.0 — BEYOND, Ingest & Extend, and operator DX foundation
v0.7.0 was one consolidated release train. It shipped the BEYOND campaign, the Ingest & Extend waves, the Wave-3 smarter-assistance/library-publishing work, and the create_data_source_http_ws hotfix documented in CHANGELOG.md.
BEYOND campaign
- Wave 1 / v0.7.0 manifest — live-show foundation + all P0. Shared setlist/scene schema, memory-note schema, server-sampling LLM fallback,
setlist_runner,create_scene_timeline,create_auto_montage,create_euclidean_sequencer,create_preset_morph,create_scheduler,create_glsl_material,auto_tag_library_asset,recall_similar_work,style_memory,lint_recipe_library, plustdmcp panicandtdmcp dashboard. - Wave 1.5 / folded into v0.7.0.
import_setlistandexport_setlist_to_vaultnow shareSetlistSchema;scaffold_vaultseedsMemory/README.mdandMemory/style.md;save_recipe_to_vaultandsave_component_to_vaultcan opt into deterministic auto-tagging. - Wave 2 — show automation + musical reactivity.
compose_cue_list,create_prob_sequencer,create_automation_lane,scene_scheduler,create_chroma_reactive,create_transient_reactive,create_energy_structure,create_two_way_surfaceandcreate_phone_gesture. The last two remain hardware-gated; the three musical-reactivity tools are experimental. - Wave 3 — library provenance + AI dispatch + scene resource.
provenance_stamp,checksum_and_verify_pack,library_lineage_graph,morph_pack,learn_conventions,moodboard_to_system,audio_fingerprint_to_visual,score_build, and the livetdmcp://scene/{view}resource. - Wave 4 — TD-depth authoring + DX accelerators.
create_engine_comp,create_dmx_fixture_pipeline,scaffold_tool_generator,extend_data_source_fabric,build_chop_chain,author_script_operator,profile_cook_cost,control_timeline_transport,inspect_gpu_and_displays,macro_recorder,tdmcp-agent watch-buildandtdmcp-agent soundcheck-monitor. - Wave 5 — final BEYOND tail.
curated_collection_pack,component_changelog_trail,merge_vaults,vault_repo_sync,variant_pack,learn_from_my_corpus,create_shared_memory_bridge,build_sop_geometry,sync_timecode,manage_component_storage,enhance_build,create_growth_system,run_macro_script,tdmcp-agent log-tail,record-fixtures,fanout,controller-bridge, andvoice/llm-voice.
Smarter assistance, library publishing & operator DX
The Wave-3 backlog of the Ingest & Extend campaign shipped in v0.7.0. Sub-batch A delivered 3 pure-Node library/publishing tools, sub-batch B shipped 6 TD-required AI/library tools, and sub-batch C closed the colour-finish polish while opening the Milestone-4 operator DX lane.
Sub-batch A — pure-Node library/publishing:
- ✅
tag_and_search_library— faceted browse + tag editing over the vault library (Recipes/ + Components/ markdown notes).op:list/op:search/op:tag, preserves'*'-pinned user tags. - ✅
version_library_asset— SemVer patch/minor/major bumps for a vault asset, recorded in a sidecar<asset>.versions.jsonand written back to the note's frontmatterversion. - ✅ First canonical recipe pack —
generative_classics_pack— curated 6-technique pack that emits animport_recipe_bundle-compatible bundle JSON.
Sub-batch B — TD-required (live-validated against TD 099 build 2025.32820):
- ✅
extract_palette— K-color palette from a TOP via deterministic k-means on its preview PNG. - ✅
export_sop_to_svg— SOP polylines → SVG (pen-plotter / laser / print). - ✅
swap_operator— change an op's TYPE in place, preserving wires + matching parameters (fail-forward). - ✅
export_look_tox— save a COMP as a portable.toxinto the vault with a Markdown sidecar forbrowse_vault_library/tag_and_search_library. - ✅
tutorial_companion_pack— scaffold a teaching companion (lesson markdown + topology + previews + anetwork_snapshot.jsondocumentary snapshot, explicitly not a RecipeSchema-installable recipe) into the vault. - 🧪
copilot_vision— multimodal LLM query over a TOP preview. Live-tuning UNVERIFIED — no multimodal LLM endpoint configured in this session; mechanism (preview capture +ctx.llm.complete()contract) is covered by tests.
Sub-batch C — colour finish + authoring/DX:
- ✅
create_color_wheels— lift / gamma / gain RGB tints plus master offset and saturation controls. - ✅
create_pop_geometry— POP-family-style procedural geometry rig: primitive → transform → subdivide → noise → material SOP chain, rendered through a Geometry COMP + Render TOP. - ✅
tdmcp-agent config init— safe starter.envconfig writer for everyTDMCP_*variable, with--forceand--dry-run. - ✅
elicit_missing_args— verified shipped in v0.7.0 after the Wave-3C audit; schema-driven elicitation has offline / no-server fallbacks.
Ingest & Extend
The Ingest & Extend campaign is folded into this release line. Waves 1-2 grew the tool registry from 243 → 257, and Wave 3 completed the v0.7.0 release at 268 tools. The follow-up hotfix fixed the previously fatal HTTP-poll path before the public v0.7.0 cut.
- Wave 1 / v0.7.0 — ecosystem on-ramp + signature looks. Shared
foundation_glsl_top_mapping(preamble injection, ISF INPUTS → custom-page mapping) plus the importers and signature looks it unlocks:import_shadertoy,import_isf_shader,create_fluid_sim,image_to_particles,create_dither,create_jfa_voronoi. - Wave 2 / v0.7.0 — external inputs + color-finish + rehearsal (✅ included in v0.7.0).
apply_lut(OCIO / image-lookup / .cube fallback),create_video_scopes(waveform / RGB parade / vectorscope — histogram deferred, TD 099 lackshistogramCHOP),setup_tdableton(Palette probe + OSC synthetic fallback),create_chop_recorder,create_flow_abstraction(ETF→FDoG painterly),create_npr_filter(Kuwahara oil/pencil/watercolor — also three newapply_post_processingmode keys), andpost_passes_3d(SSAO / SSR / DOF / motion-blur for 3D scenes —apply_post_processingnow redirects 3D-only mode callers here with a friendly error). create_data_source_http_wshotfix (✅ fixed before v0.7.0). The HTTP-poll path no longer raisesTypeError: must be real number, not str; the dattoCHOP menu settings, selector table shape and live-readout custom parameters were corrected and live-validated against TD 099 build 2025.32820.
✅ Published releases
v0.6.x — TouchDesigner depth & library fidelity
A sharper, safer bridge plus two performance instruments. Reads now report the operator flags that explain the classic "why is it black?" (bypass / render / display / lock), and the core editing operations — connect, parameter modes, DAT text, logs — moved to structured endpoints that keep working even with raw-Python execution turned off, the security-conscious venue setup.
create_modulators— a tempo-locked bank of LFOs (sine / saw / noise) on one output; bind it to any parameter to make a network breathe in time.create_look_bank— capture, store and recall named "looks," with an instant snap or a quantized A↔B morph.generate_library_index+ preview thumbnails — a Markdown contact-sheet of your saved recipes and components.get_td_node_flags, structured connect / disconnect / parameter / text / logs endpoints, and edge-triggered cook-error events for fast live recovery.
v0.5.0 — Reusable components, agent-DX & live mixing
The shift from generating visuals to packaging, documenting and cheaply operating them. Build a network → add knobs → script it → save it as a reusable .tox.
- Components:
add_custom_parameters,scaffold_extension,analyze_project,generate_readme. - Token-cheap editing:
edit_dat_content,set_dat_content,batch_operations,manage_annotation, a compact whole-network read, andserialize_network/rebuild_network(a diffable JSON round-trip). - Live mixing & content:
create_transition,create_live_source,create_layer_stack,create_media_bin,create_keyer, plus signature effects (create_datamosh,create_displacement_warp,create_halftone,create_feedback_tunnel,create_text_3d) and five newapply_post_processingeffects. - One-shot reactivity:
bind_audio_reactive,create_data_reactive. - Library & packaging: portable
.toxbundles, checksummed recipe bundles, asset validation, and a local marketplace index. - 11 new AI prompts (fix a dead signal, recover a show mid-set, hands-free AI VJ, color story, setlist planner…) and a
tdmcp://promptscatalog. - Use tdmcp from inside TouchDesigner via dotsimulate's LOPs MCP Client.
v0.4.0 — Signature 3D / GPU visuals & more creation
Fifteen tools, live-validated in TouchDesigner: create_raymarch_scene, create_particle_flock, create_point_cloud, create_pbr_scene, create_cubemap_dome, detect_tempo, create_palette, create_led_mapper, create_cue_sequencer, create_stage_dashboard, create_generative_audio, scaffold_genre, plus the text_to_recipe and style_reference prompts. Body & pose tracking (MediaPipe) also landed around this time.
v0.3.0 — The big release: reactivity, performance, 3D & AI
The largest single release — a scriptable CLI, musical reactivity, live-performance instruments, advanced creation, a dimensional 3D/depth layer, assistant intelligence, and robustness/export.
- Musical reactivity:
extract_audio_features,create_tempo_sync,bind_to_channel(the link that actually wires a signal into a visual),create_spectrum,detect_onsets,create_waveform. - Live performance:
manage_cue(scenes + eased morph),create_macro,randomize_controls,create_control_surface,create_phone_remote,create_autopilot(beat-driven auto-VJ),create_panic,create_clip_launcher. - Stage I/O & sensors:
create_motion_reactive(the camera counterpart to audio),create_multi_output(multi-projector with soft edge-blending),create_text_overlay,sync_external_clock. - Advanced creation:
create_3d_scene,create_video_player,create_layer_mixer,create_projection_mapping,create_keyframe_animation,create_simulation, the signature effects (create_strobe,create_kaleidoscope,create_glitch,create_kinetic_text),create_color_grade,create_shader_lib,create_video_synth,import_model. - Dimensional (3D / depth / mapping):
create_3d_audio_reactive,create_dome_output,create_mesh_warp,create_depth_displacement,create_gpu_particle_field. - Intelligence:
search_operatorsover a 629-operator knowledge base,document_network, and AI prompts (recreate a reference image, plain-language tweaks, aesthetic critique, build a VJ set, fix a shader). - Robustness & export:
render_output,record_movie,optimize_performance,diff_snapshots,manage_checkpoint, a recipe library,reload_bridge, a full CLI, and adoctordiagnostic. - Obsidian vault integration — bridge a folder of Markdown notes to TouchDesigner: recipes, setlists, shaders, presets and a dated show diary. (See the caveat below — currently offline-tested.)
- Local LLM copilot (
tdmcp chat) — a browser chat driven by a local model (Ollama) for simple tasks, with no API key required.
v0.3.1 — Easy install & privacy
The one-click Claude Desktop bundle (now .mcpb, the current Anthropic format) and a privacy policy: tdmcp runs entirely on your machine, collects nothing, and has no telemetry.
v0.2.0 — Live control
The first step from static renders to playable instruments: create_control_panel, animate_parameter, manage_presets, create_external_io (OSC/MIDI in, DMX/Art-Net out, NDI/Syphon-Spout in) and manage_component (save / load .tox). From here on, every generator arrives with knobs.
🧪 Experimental & needs validation
These are usable in the latest public release, but they carry an honest caveat — they need live tuning, specific hardware, or a final on-hardware check before they're considered solid.
- Live-music tuning (offline-built, defaults need real music to graduate):
create_chroma_reactive,create_transient_reactive,create_energy_structure. Schemas, network topology and unit tests are green; only the perceptual defaults remain experimental. - Hardware round-trip pending (builder is offline-tested, only the live device exchange is unverified):
create_two_way_surface(MIDI/OSC guards),create_phone_gesture(smartphone sensors). - Multimodal-LLM dependent:
caption_top,copilot_vision. Tool schema and prompt assembly are unit-tested; output quality is gated on a stable multimodal endpoint — see Out of scope below. - Rollback tuning (offline-improvable):
repair_networkships with offline unit tests; the snapshot/restore loop will get a dedicated regression test before it leaves experimental. - Obsidian vault tools — fully unit-tested, but their live round-trip inside a running TouchDesigner hasn't been exercised end-to-end yet. The pure serialization↔deserialization round-trip is offline-improvable and queued.
- Signal-detection tools:
detect_pitch— known issue: default threshold can read near-zero on quiet inputs. A regression test pinning the default behaviour is queued; until then, pass an explicitthresholdfor reliable readings.detect_tempo— BPM lock validated against synthetic clicks; live music tuning still required.create_envelope_follower— sidechain routing topology is unit-tested; perceptual gate/duck timings need a real source.
learn_control— interactive MIDI/OSC "learn"; schema/modes are offline-tested, the input-event stream depends on live hardware.create_pop_field— a first generator for TouchDesigner's GPU POP family, which is itself experimental upstream in this build; the render path is held pending live validation.- MIDI hardware tools —
create_midi_note_reactiveandcreate_midi_mappreview fine from a synthetic note source, but the real device paths need a controller to confirm. - External-clock sync —
sync_external_clockmode='tap'is stable (offline-tested, default). Modesableton_linkandmidi_clockare hardware-gated; a manual-BPM fallback keeps the tool usable when no clock source is present. - v0.6.x bridge-routing regression check — the seven v0.6.0 features were each validated live in TouchDesigner, but the full bridge reinstall plus live HTTP routing round-trip remains a recurring smoke check after bridge or installer changes.
⬜ Planned — the road to 1.0
With the v0.8 line published (and now v0.13.0 on top of it, with v0.13.1 in prep above), the deferred SDF, strange-attractor, optical-flow and histogram-scope generators; MediaPipe face / hand / segmentation adapters; the persistent load_session_profile (+ tdmcp://session/profile resource); additional doctor --fix repairs; the get_inline_preview inspection tool; the front-of-house dashboard v2 layout; and the stronger generate_readme / make_portable_tox component-doc pass all shipped in the v0.8 release line. The pre-Round-4 Planned list was empty (all v0.8.x queued items shipped); the 2026-06-09 hype-scout (Round 4) reopened it with a trend-driven set of buildable wins. The remaining work toward a tagged 1.0 splits in two: consolidation (API stability, coverage, recipes, bridge hardening, docs, one-click install) tracked in v1.0.0 — Consolidation, plus the small Round-4 quick-win wave (force multipliers + the top-5 hand-to-pipeline items) listed under Milestone 3 just below. Only items that still need a future code change (not a hardware/service blocker) belong in this Planned section. Hardware-, live-music-, multimodal-LLM- and GPU/CUDA-gated items have been moved to Out of scope (for now) below. Version targets are a rough sequence, not a promise. One additional design-stage slice is tracked here: a Soundcraft Ui24R / mixer-aware expansion of AI-Controlled Party. It belongs in Planned because it needs future code changes, but it is not shipped and not a live hardware claim. The exhaustive, item-by-item backlog lives in the planning archive.
Creative RAG follow-ups (post-#76)
The Creative RAG MVP (#75) and the post-MVP robustness wave (#76 — embedding batching, indexVersion migration, Content-Type binary extension, Smithsonian
- Wikimedia Commons + Europeana sources, optional
TDMCP_RAG_BACKEND=lancedb) are Shipped above. The remaining follow-ups are tracked here:
- [P2 product]
SourceSkippedError— distinguish "no key" from "empty source" so a misconfigured key-gated source never tombstones real cards. - [Shipped] Configurable multilingual embedding model (
bge-m3) — env + docs + CI smoke (creative-rag-multilingual-smokejob). Default unchanged (nomic-embed-text); rebuild required when switching. - [P2 product]
canonicalizeGuidregression test pinning the rule that source URLs / ids never embed an API key (the lesson from the Europeanawskeystrip). - [Shipped] Optional RAG context injection in
tdmcp ask(flag- gated; must not change tool tiers or confirmation gates). (#87, v0.6.0) - [Shipped] MCP prompt
creative-inspirationreturning a curated mood-board payload (search + a handful oftdmcp://creative/cards/*URIs). (#88, v0.6.0) - [Shipped] Opt-in MCP tool
apply_creative_card(gated byTDMCP_RAG_APPLY_CARD=1) that routes a card'stdmcpAffordancesto the right Layer 1/2 tool — closes the inspiration → execution loop without expanding the default tool surface. (#89, v0.6.0) - [Shipped]
tdmcp doctorcoverage for RAG: Ollama reachable, embedding model pulled,TDMCP_RAG_DATA_DIRwritable; surfaced in--jsonoutput. (#90, v0.6.0) - [Shipped] Mandatory probe-live step for every new source PR (lesson from the Europeana key-leak and Rijksmuseum shape drift — mock-only tests missed both). (#91, v0.6.0)
Milestone 3 — Round-4 quick-win wave · v0.8.x / v0.9.x
Pulled forward from Round 4 — every item is S-effort, sits on existing scaffolding, and ships before the AI-bridge wave so the force multipliers are in place when those wrappers land.
Force multipliers (do these first — D.0):
- ✅ FM-01 —
create_external_iooutbound modes (ndi_out,syphon_spout_out) (shipped v0.9.0). Two KB-confirmed stock TOPs, additive to the existing_TYPEMAPliteral. Unlocks every TD↔AI bridge below. - ✅ FM-02 —
dropExternalToxhelper (shipped v0.9.0) for the canonical dotsimulate TOX-drop pattern (discover paths → drop intobaseCOMP→ validate custom pars → OSC-bind). Removes copy-paste between StreamDiffusion / ComfyUI / DepthAnything / LOPs / TDGS / MediaPipe wrappers. - ✅ FM-03 — Layer-2
build_pop_chaingeneric POP chain builder overNetworkBuilder(shipped v0.9.0). Unblocks the 5 POP-combo Layer-1 tools.
Top-5 ready-for-pipeline (D.1):
- ✅
create_pose_controlnet_driver— OpenPose-color render TOP over the existing pose stack; no external TOX (Hype × Ease = 9). (shipped v0.9.0) - ✅
create_ascii_render— character-grid TOP alongsidecreate_dither/create_halftone(Hype × Ease = 9). (shipped v0.9.0) - ✅
create_phrase_locked_cue_engine— extension tocreateSyncExternalClockthat quantizes cues to Ableton bars/phrases. (shipped v0.9.0) - ✅
create_audio_glsl_uniforms— Layer-2 helper that binds audio CHOPs as uniforms onglslTOP. (shipped v0.9.0) - ⬜
create_external_iooutbound — itself FM-01 above.
Milestone 4 — Generative-AI bridge wave (gated on FM-01 + FM-02) · ✅ v0.9.0
The trend-dominant cluster from Round 4 D.2 — wrappers around components users install themselves; never bundled. All entries remain GPU/CUDA-gated for the bundled path; this wave ships only the drive-installed-tox and cloud deltas. Shipped in v0.9.0 (hype-scout Round 4, #63): all eight register, are unit-tested offline, and survive TDMCP_BRIDGE_ALLOW_EXEC=0. Live GPU/component validation stays UNVERIFIED until each is run against its installed component — the cloud connect_daydream_cloud path is the one validatable without a local GPU.
- ✅
setup_mediapipe_plugin(torinmb canonical) — extension over the shipped face/hand/segmentation setup. - ✅
drive_streamdiffusion(dotsimulate TOX wrapper). - ✅
create_depth_from_2d(TDDepthAnything v2 wrapper; reopens the Round-3 EX placeholder). - ✅
connect_comfyui(olegchomp/TDComfyUI or JiSenHua/ComfyUI-TD). - ✅
connect_daydream_cloud(cloud path that skips the local GPU gate). - ✅
create_gaussian_splat_scene(TDGS / POPs Gaussian-Splat v2026) — the top trend in the scout, four-surface unanimous H. - ✅
create_llm_chain(dotsimulate LOPs). - ✅
create_ai_mirrorcombo recipe (depends on the bridge above + FM-01).
Milestone 5 — AI Show Director mixer scene arming · ⬜ Planned (design-stage)
Still fully ⬜ — no arm_mixer_scene tool exists yet; all five rows below stay dry-run, manifest-gated and approval-gated before any live adapter is built. Design status: _workspace/ai-party-mixer/05_synthesis_design.md and docs/superpowers/specs/2026-06-04-ai-party-ui24r-scene-arming-design.md define the first safe slice.
| Item | Delivers | Status | Gate |
|---|---|---|---|
arm_mixer_scene contract | A new Show Director intent for operator-approved Soundcraft Ui24R show/snapshot/cue arming, separate from blocked mixer_gain, pa_mute and audio_routing effects. | ⬜ Planned | Must remain dry-run and approval-gated; valid targets come only from a trusted scene catalog. |
| Mixer scene catalog / manifest | Venue-side allowlist with stable scene IDs, Ui24R show/snapshot/cue refs, policy hash/checksum, allowed setlist sections, rollback target and safety notes. | ⬜ Planned | Any scene that may hide gain, PA mute, routing, patching, channel-strip, mute-group or phantom-power changes stays operator-only/manual. |
| Dry-run mixer adapter | Adapter interface and dry-run backend that consumes approved mixer-scene plans and returns hardware_changed:false. | ⬜ Planned | No Soundcraft, Companion, Node or TouchDesigner hardware client may be constructed in this slice. |
| Companion live backend spike | Bitfocus Companion backend for one bench-validated Ui24R scene mapped to one preconfigured button. | ⬜ Planned | Isolated bench validation required; sent/acknowledged/confirmed must be separate audit states. |
| Direct Node bridge research | Protocol proof for show/snapshot/cue recall against the target Ui24R firmware. | ⬜ Planned | No raw commands; no gain/mute/routing/channel operations; fixture tests before any live backend. |
What's left for 1.0
With both the round-2 BEYOND backlog and the round-3 ingest-and-extend pass fully landed in the v0.8 release line, and Milestones 3-4 above shipped on the v0.9 line, the remaining work to 1.0 is consolidation. The measurable gates live in v1.0.0 — Consolidation below; every open item should map to one of those gates rather than to a new entry here. The Ui24R mixer-scene work remains a bounded AI Show Director extension and must ship behind dry-run, manifest and bench-validation gates before any live adapter is considered.
Later / deferred
The P2 long tail (the full list is in the planning archive, including the Round-4 D.5 aesthetic tools and the Round-4 D.4 hardware items that move to "Out of scope") — plus everything already moved to Out of scope just below.
Out of scope (for now)
Being honest about the edges. These need hardware, a live music source, a multimodal LLM endpoint, a specific GPU/OS, a paid license, or cut against tdmcp's local-first design — so they're parked until they can be validated properly:
- Multimodal-LLM-gated: live-tuning
caption_topandcopilot_vision(vision-capable transcripts, smarter copilot handoff) is parked until there's a stable multimodal LLM endpoint to validate the prompts/output against. (repair_networkis not multimodal-gated — its remaining hardening is offline rollback-regression testing, tracked in the Experimental section above.) - Live-music-gated reactivity validation: graduating the chroma / percussive-vs-tonal / song-structure detectors out of experimental requires validating defaults against real music sources in a live setting.
- GPU / CUDA-bound: real-time AI generation (StreamDiffusion / ComfyUI / DepthAnything) is kept only as a way to drive an already-installed component or as a cloud option — never bundled. GPU fluid simulation and any optical-flow particle path that depends on CUDA can't be validated on the current macOS dev machine and remain parked (the new stock-TOP
create_optical_flowships in main). - Hardware-bound: depth cameras (Kinect / Azure / RealSense), SMPTE/LTC timecode genlock, and laser (ILDA) output. Where possible we prefer the lighter, camera-only paths (MediaPipe face/hand/body, stock-TOP optical flow). The Kinect wall harp is a concrete, synthetic-safe depth-camera tool, but portable live claims still depend on the actual room, projector, USB path and sensor validation.
- Mixer/PA live control beyond scene arming: autonomous PA control, mixer gain, PA mute, routing, patching, phantom power, mute groups and channel-strip edits remain out of scope for the AI path. The planned Ui24R work is limited to operator-approved show/snapshot/cue arming with a manifest and dry-run first.
- Multi-machine / multi-instance: managing several TouchDesigner processes and cross-machine genlock — parked until there's hardware to test against.
- Paid TouchDesigner license: the Engine COMP / TouchEngine headless path.
- A hosted marketplace: sharing stays local-first — TouchDesigner's Palette plus an Obsidian vault — matching tdmcp's no-server, runs-on-your-machine design.
- Round-3 hardware add-ons: Arduino/serial sensor input (
create_sensor_input), TUIO/multitouch surfaces (create_multitouch_surface), and 2D LiDAR (create_lidar_reactive) — parked alongside the existing hardware-bound list until the hardware is on hand to validate. - Round-3 GPU/CUDA add-ons:
create_depth_from_2d(DepthAnything),create_volumetric_fire(NVIDIA Flow), anddrive_diffusion_tox(cloud or drive-installed-tox only) — same gating as the existing GPU/CUDA bullet. - Round-3 multi-machine:
create_machine_sync(Touch In/Out genlock across machines) — same gating as the existing multi-machine bullet. - Round-3 paid-license: the TouchEngine headless path beyond the shipped Engine COMP wrapper — same gating as the existing paid-license bullet.
- Round-4 hardware add-ons: iPhone TrueDepth/LiDAR via Record3D (
create_iphone_depth_source, S012), Orbbec Femto Bolt (create_femto_depth_silhouette, S018, the post-Azure-Kinect successor), ZED 2i / OAK-D POE outdoor capture (create_outdoor_depth_capture, S038), 2D LiDAR floor tracker (create_lidar_floor_tracker, S021), Nuitrack skeleton (create_nuitrack_skeleton, S023), ESP32 sensor bridge (create_esp32_sensor_bridge, S019) and capacitive pad grid (create_capacitive_pad_grid, S024) — same gating as the existing hardware-bound bullet. We prefer the light camera-only paths (MediaPipe, optical flow) until hardware is on hand to validate. - Round-4 GPU/CUDA add-ons:
drive_streamdiffusion(S001),create_depth_from_2d(S003),connect_comfyui(S004),create_ai_mirrorcombo (S017),create_rd_diffusion_hybrid(S048) andcreate_sam_segmentation(S046) — kept only as drive-installed-tox or cloud wrappers, never bundled.connect_daydream_cloud(S043) is the cloud delta and exits this gate. - Round-4 paid-license:
connect_unreal_engine(S014) — same gating as the existing TouchEngine bullet.
v1.0.0 — Consolidation
With the feature surface at 378 tools on HEAD (the generated Tools-reference total), the road to 1.0 is a set of measurable consolidation gates, not a new feature wave. Each gate below states the current posture and what "done" looks like, using the same legend as the rest of the page (✅ shipped / 🧪 in progress / ⬜ planned).
G1 — Tool API stability · 🧪
The contract for a "tdmcp tool" is the ToolContext shape (src/tools/types.ts) plus each tool's Zod inputSchema. Stability gate:
- ✅ The stability pin is written —
docs/reference/API_STABILITY.md(with the companion Tool API contract) fixes the v1.0 tool contract, the additive-minor rule, and the deprecation policy (one-minor warn, next-minor remove). - ⬜ One full minor release cycle (one tagged minor) with no breaking change to
ToolContextor to any existing tool'sinputSchema(additive optional fields are allowed; renames / removals / required-field additions are not). The 20 new #128 tools are additive-only — they don't break the contract — and per the pin doc the clock starts at the first tagged minor published after it landed, so this is the only open G1 item.
G2 — Test coverage · 🧪
Coverage is tracked by npm run test:coverage + the npm run coverage:harness ranking.
- ✅ Suite-level CI coverage gate. The
Coverage Gatejob in.github/workflows/ci.ymlrunsnpm run test:coverageand is a required check inci-success, so a regression below thevitest.config.tsthresholds fails the build. The floors are ratcheted to the measured baseline (2026-07-07: statements 86 / branches 73 / functions 85 / lines 88) and only ever move up. - ⬜ Reach the +5 pp stretch target (lines ≥ 91, branches ≥ 75) — currently at lines 88.85 / branches 73.36; raising the floors as coverage improves.
- ✅ Bridge tests (
npm run test:bridge) and recipe validation (npm run validate:recipes) run green alongside the four PR gates.
G3 — Recipe library depth · 🧪
The repo ships 60 validated recipes under recipes/, all gated by RecipeSchema and npm run validate:recipes (and cross-checked against the knowledge base by npm run lint:recipes).
- ✅ 10 net-new recipes shipped covering the v0.7–v0.8 generator wave —
raymarch_sphere_field+raymarch_infinite_tunnel(SDF),strange_attractor_lorenz,histogram_scope,ascii_render_post,dither_post,halftone_post,audio_glsl_uniforms,front_of_house_dashboard(dashboard-v2),sidechain_pump. All validated againstRecipeSchemawith real optypes and now live-cook-validated (the[Unreleased]recipe fixes closedhistogram_scopeand verified the other nine cook witherrors:[]). - 🧪 Orchestrator JSON twins — partial (60 recipes total). The prior set of eight twins (glitch, kaleidoscope, slime simulation, spectrum, waveform, tempo-sync, layer-mixer crossfade, slit-scan) is joined by 10 new offline twins of pure TOP/CHOP-network orchestrators:
color_grade_basic,transition_dissolve,text_overlay_lower_third,layer_stack_blend,strobe_flash,test_pattern_grid,datamosh_feedback_echo,chrome_blobs,displacement_warp_noise,luma_keyer— all live-cook-validated on TD 099 build 2025.32820 (each applies with 0 node errors / 0 warnings; the displaceTOPuvweighttoken was corrected against the live op). Orchestrators whose behavior is callback/pulse/hardware/3D-asset-driven (e.g.create_vector_lines,create_automation_lane,create_text_crawl,create_growth_system,create_pbr_scene,create_point_cloud,create_gaussian_splat_scene,create_fluid_sim, theimport_*and MediaPipe/Kinect/DMX tools) are not faithfully reproducible as static JSON offline and are deferred to post-live twin authoring. Also deferred:create_keyerchroma/rgb modes andcreate_video_scopes(needchromakeyTOP/rgbkeyTOP, not yet in the knowledge base — probe live first),create_pixel_sort(multi-pass GPU feedback — a static cook shows only the seed), andcreate_color_wheels(per-channel params absent from the KB).
G4 — Bridge hardening · 🧪
The bridge already exposes first-class REST endpoints for the work that used to round-trip through /api/exec: nodes CRUD, connect / disconnect, param modes, DAT text, network errors / topology / performance, batch, preview, and structured logs (see src/td-client/touchDesignerClient.ts). What's left:
- 🧪 Reduce remaining
executePythonScriptreliance. The 1:1-against-an- existing-endpoint sweep is complete: every tool whose operation maps directly to a typed REST method already prefers it (15 tools — 9 via the canonicaltryEndpointhelper + 6 with intentionally-manual conditional fallbacks), promoted across v0.8.1/0.8.2. Of the 183 exec callers, the remaining 168 are legitimate custom-Python / composite builds (create→wire→set→verify in one atomic pass) with no typed REST equivalent, or map only to the exec-gated/methodroute (no hardening value) — they correctly stay on exec, the intended escape hatch. What's left is new-endpoint authoring, not a rewire. - 🧪 #128 added 4 new first-class routes —
POST /api/nodes/{path}/save,POST /api/duplicate,GET /api/optypes, andPOST/DELETE/GET /api/params/watch— promotingrender_outputandduplicate_networkoff exec (exactly the "new-endpoint authoring" this gate named). Remaining work is further new-endpoint authoring (e.g. batch create+write) viatdmcp-bridge-endpoint; it needs live TD to validate. - ⬜ Keep
/api/execworking whenTDMCP_BRIDGE_ALLOW_EXEC=0is the venue policy: every Layer-1/Layer-2 tool must build with exec disabled (CI smoke). - ✅ Resilience patch — atomic writes, clean HTTP listen failure, event-stream close — landed in v0.8.1.
G5 — Docs completeness · 🧪
The Tools reference (docs/reference/tools.md) is auto-generated from the live registry on every docs build. Guide pages (docs/guide/*.md) currently cover install, first visual, body tracking, components, recipes, shader-park, local-copilot, LOPs integration, AI-controlled party, prompt cookbook, FAQ, troubleshooting and glossary.
- ⬜ Add per-arc guides for the v0.7/v0.8 work that doesn't yet have one: show timelines & setlists, dashboard-v2 / front-of-house, session profile & corpus learning, MediaPipe adapters, MCP resources (glsl-snippets / cheatsheets / learning).
- ✅ The 20 new #128 tools and the CLI-parity subcommands are documented. All 20 tools now have EN and PT prompt-cookbook entries (20/20 in each, parity holds);
docs/reference/cli.mddocuments the newtdmcp-agentsubcommands (bundle-deps,export-external-tree,narrate-set,check-optypes,preview --inline [--watch],doctor --json) and the full MCP-tool parity + the 21 vault subcommands. - ⬜ Every Layer-1 generator referenced in the cookbook has a one-paragraph "what it builds + when to reach for it" entry in the relevant guide.
G6 — One-click install & Connectors Directory · 🧪
The .mcpb Claude Desktop bundle is built by npm run build:mcpb and ships on every GitHub release; install docs cover the one-click path.
- ✅
.mcpbbundle produced on tag. - ✅ Submission prep done (#129). The
.dxt→.mcpbmigration, enriched + validated manifest, bundled icon (mcpb/icon.png), and a field-by-field submission draft are complete. What remains for this gate is external acceptance, not more prep. - ✅ npm package publishing stays manual by default; CI auto-publish requires both
TDMCP_AUTO_NPM_PUBLISH=trueandNPM_TOKEN. - ⬜ Anthropic Connectors Directory submission accepted — an external Anthropic decision, so this stays open until they accept (the submission harness —
tdmcp-submissionskill — drives prep and re-prep). - ✅ Glama / awesome-touchdesigner listings cross-linked from
README.md(README.mdLinks & community section).
Tool API contract reference. The v1.0 invariants are documented in
docs/reference/tool-contract.md(naming, input schema, error handling, offline behaviour, result shape, deprecation). G1'sAPI_STABILITY.mdpin will fold this page into the formal contract.
Planning archive — the full idea backlog
What this is. Everything below is the raw, unfiltered output of several brainstorming passes over the project — a catalog of ideas to choose from, not a list of promises. Most of it will never ship as written; it's kept here in the open for transparency and so the project's thinking stays on the record. The curated, prioritized plan is the Planned section above — that's what's actually being built. Skim this only if you're curious about the long tail.
Legend: Priority P0 / P1 / P2 · Effort S ≤1 day / M 2–4 days / L ~1 week · Impact & Confidence High / Med / Low · Novelty NEW / EXTENSION (extends an existing tool) / ROADMAP (already on the plan). Delivered rows are no longer repeated in these archive tables; shipped work lives in the release sections above. Rows remain here only when work is still open, partially delivered, experimental enough to need follow-through, or
gatedby GPU / hardware / CUDA / license constraints.
These passes are labelled in the order they happened (Round 0 → Round 4). Round 4 (2026-06-09) is the first trend-driven pass — produced by the tdmcp-hype-scout harness — and reopens the Planned list that Round 3 had fully drained into v0.7/v0.8.
Round 0 — 2026-05-28 (harvested into v0.5.0)
78 distinct features (93 raw; controls 23 · CLI 22 · AI 26 · TD-depth 22) — the discovery that fed v0.5.0 (Phases 13–15). Almost the entire backlog shipped (Round 1 below confirms "Phases 13–15 / v0.5.0 harvested almost the entire 2026-05-28 backlog"), so its open remainder is carried transitively into Round 1; it's recorded here for a complete lineage rather than reproduced row-by-row. Its Top-12 recommended-next — all ✅ shipped in v0.5.0 / 0.6.0: batch_operations, bind_audio_reactive, create_transition, fix_reactivity (prompt), create_live_source, read_parameter_modes, recover_show (prompt), create_layer_stack, auto_vj_director (prompt), snapshot_td_graph compact mode, create_media_bin, set_perform_mode. The just-missed tier (create_keyer, edit_dat_content / set_dat_content, config files + profiles, set_parameter_expression, create_datamosh / create_displacement_warp) also shipped; only wrap_pop_family (90 unreached GPU POP operators, L) remains open — tracked as Round-1 create_pop_geometry and Round-3 create_pop_fluid.
Round 1 — 2026-05-29
77 candidates (7 P0 · 38 P1 · 32 P2; 36 NEW · 31 EXTENSION · 10 ROADMAP). The P0 set, control instruments, library thumbnail/index work, and several later rows shipped in v0.6.0 / v0.7.x; the tables below keep only the remaining open or partial work.
A.1 · Artist controls & creative tools
The only remaining Round-1 A.1 row targeted by this PR, create_decks N-channel, shipped in the v0.8.1 release line above.
A.2 · Library, packaging & distribution
bundle_dependencies and export_externalized_tree shipped in v0.13.0 above, leaving this open backlog. The remaining open rows:
| Feature | Delivers | Effort | Impact | Conf | Priority | Novelty | Probe-first |
|---|---|---|---|---|---|---|---|
expand_recipe_library | First-party recipes for the new generators | M | Med | High | P2 | NEW (content) | live cook-check each |
recipe_from_live_network | Faithful round-trip recipe capture via serialize_network | M | Med | Med | P2 | EXTENSION | GLSL-uniform round-trip |
A.3 · CLI & developer DX
preview_inline_and_watch (preview --inline [--watch]) shipped in v0.13.0 above and leaves this backlog. The remaining open rows:
| Feature | Delivers | Effort | Impact | Conf | Priority | Novelty | Probe-first |
|---|---|---|---|---|---|---|---|
show_mode_oneliner | tdmcp show <profile> — load+doctor+perform+pre-flight | M | Med | Med | P2 | NEW | abort semantics |
error_exit_code_taxonomy | Distinct exit codes (offline/TD-error/config) | S | Low | Med | P2 | NEW | error subclass survives |
doctor_fix_autoexec, packages_cli_help_and_completion_parity and no_color_flag_is_dead shipped in v0.8.1 (vault/profile/token repairs + install-bridge --verify + bounded macOS Textport automation; top-level CLI completion / package parity; tdmcp-agent run --no-color propagation) and are no longer tracked as open backlog. bridge_watch_build shipped in v0.8.2: tdmcp-agent watch-build now gates changed bridge Python with py_compile and reloads the running bridge automatically unless disabled (--no-py-compile / --no-reload-bridge opt out).
A.4 · AI & LLM integration
| Feature | Delivers | Effort | Impact | Conf | Priority | Novelty | Probe-first |
|---|---|---|---|---|---|---|---|
copilot_smarter_handoff | Auto-surface the Claude/Codex handoff on a dead-end | S | Med | High | P1 | ROADMAP | none |
copilot_session_persistence | Resume transcript + last model/tier | M | Med | High | P1 | ROADMAP | none |
plan_visual→LLM-grounded | Upgrade describe_project to an optional LLM planner | M | Med | High | P1 | EXTENSION | none (keyword stays default) |
narrate_set | Persisted narration during auto_vj_director | S | Low | Med | P2 | NEW | none |
A.5 · TouchDesigner depth (bridge + operators)
| Feature | Delivers | Effort | Impact | Conf | Priority | Novelty | Probe-first |
|---|---|---|---|---|---|---|---|
createable_truth_flag | GET /api/optypes ground truth → mark createable/deprecated | M | Med | Med | P1 | NEW | probe-live (enumeration) |
param_change_event | Opt-in param.changed via a Parameter Execute DAT | M | Low | Med | P2 | NEW | onValueChange freq/scope |
refresh_operator_kb | Live-derived KB delta vs the static import | L | Low | Med | P2 | NEW | enumeration (depends on createable) |
A.6 · Deferred (Round 1 — still gated / post-v0.7.x candidates)
Still open / partial after the v0.6.x–v0.8.x releases: create_sdf_text, create_vertex_displacement_mat. ✅ create_pose_reactive shipped in Wave 12 / v0.8.3, closing A.6's pose-reactive item. The earlier deferrals (create_gpu_fluid, create_optical_flow_particles, control_diffusion / drive_streamdiffusion / connect_comfyui, manage_td_process / switch_instance, recipe/template marketplace) now live in Out of scope; hand / face / segmentation MediaPipe modes shipped in v0.8.1; create_strange_attractor shipped earlier.
Round 2 — "beyond the backlog" — 2026-05-30
63 distinct candidates (6 P0 · 35 P1 · 22 P2; 58 NEW · 5 EXTENSION · 0 ROADMAP), every one deliberately beyond Round 1 and beyond what v0.6.0 shipped. The BEYOND campaign shipped most of this round in v0.7.0, so the tables below keep only the remaining open or partial follow-through.
B.1 · Artist controls & creative tools
All Round-2 artist-control rows shipped in v0.7.0 or are tracked in Experimental & needs validation, so no open table rows remain here.
B.2 · Library, packaging & distribution
The Round-2 library/provenance rows shipped in v0.7.0; open publishing polish now lives under Milestone 3 above.
semantic_library_search(raised here) was merged into airecall_similar_work— same intent-retrieval capability; retrieval is owned by the AI surface.
B.3 · CLI & developer DX
bridge_watch_build shipped in v0.8.2 and is no longer tracked as open backlog (see Round 1 A.3 above for the released wording).
B.4 · AI & LLM integration
| Feature | Delivers | Effort | Impact | Conf | Priority | Novelty | Probe-first |
|---|---|---|---|---|---|---|---|
voice_copilot_chat follow-through | Browser Web-Speech push-to-talk in the copilot page | S | Med | Med | P2 | NEW | CLI alias exists; STT/Web Speech wiring still needs probe |
B.5 · TouchDesigner depth (bridge + operators)
param_changed_event is tracked once in Round 1 A.5 as param_change_event; no separate Round-2 entry.
B.6 · Cross-cutting (Round 2)
Value that spans surfaces (kept once above under its best-fit surface; relationships explicit here). Most of these relationships are now real v0.7.0 architecture rather than speculative planning:
- Time-based show automation —
create_scheduler(td-depth primitive) →create_scene_timeline(controls) ∥setlist_runner(cli) ∥compose_cue_list(ai); all share one setlist/scene schema. - Run AI tools via the connected model + a structured/image method on the LLM client — now used by
compose_cue_list,score_build,moodboard_to_system, Round-1'scaption_topand the newcopilot_visionpreview path. - "Do it my way" cluster —
recall_similar_work⇄style_memory⇄learn_from_my_corpus⇄learn_conventionsover oneMemory/vault note schema. - Morph at two altitudes —
create_preset_morph(live instrument) ⇄morph_pack/variant_pack(saved assets). - Engine pipeline —
create_engine_comp(process) ⇄ a future "compile for Engine" bake onmake_portable_tox. - Library keystone —
auto_tag_library_assetfeedslibrary_lineage_graph,recall_similar_workandlint_recipe_library.
Round 3 — external / community sources — 2026-05-30
157 raw records → ~62 deduped candidates (75 EX rows including sub-merges) from four community sources — alltd.org, awesome-touchdesigner (surveyed by two agents, creative ∥ integrations), and artist Anya Maryina (studied for technique and packaging only, never asset-copied). Distribution 6 P0 · ~30 P1 · ~39 P2. The new field versus the inward Rounds 0–2: ecosystem ingestion, the missing iconic looks, and an artist-publishing layer. Source codes:aw-cre/aw-int = the two awesome-touchdesigner agents · alltd · anya.
⚠️ alltd.org returned HTTP 403 to direct fetch — its rows are search-summary-level; re-fetch alltd-only items via a browser before speccing. Licensing discipline: GPL-3.0 (TD-Flow-ABS, TDComponents, TDNeuron) + CC-BY (RayTK) = technique/idea only, no code copied; Lygia not bundled; Anya never cloned (highest attention:
generative_classicsrecreates techniques, credits lineage, and never copies a named/estate artist).gated= drive-installed-tox / cloud / docs-delta only.
C.1 · Integrations & protocols
| Feature | EX | Delivers | Eff | Impact | Conf | Pri | Status | Source(s) |
|---|---|---|---|---|---|---|---|---|
create_fixture_control + 3D previz | EX-45 | Moving-head pan/tilt/dimmer/gobo via DMX + 3D rig preview | M | High | Med | P1 | NEW (builds planned DMX pipeline) | alltd, GeoPix, aw-cre |
create_detection_reactive (YOLO) | EX-05 | Object/person presence/count → params (ONNX/WS, no CUDA) | M | Med | Med | P1 | NEW | aw-int (TDYolo, MIT) |
create_geo_visualization (OSM) | EX-12 | GeoJSON/OSM → project lat-long → instance a city | L | Med | Med | P2 | NEW | alltd · ODbL attribution |
| Marketplace catalog index seed | EX-13 | Index public .tox catalogs (link-only) into local_marketplace_index | S | Low-Med | Med | P2 | EXTENSION | aw-int, aw-cre, alltd |
| Synesthesia/Unreal-OSC presets | EX-14 | Named OSC-out presets for Synesthesia / Unreal | S | Low-Med | Med | P2 | EXTENSION | alltd |
Round-3 hardware / GPU / cloud / multi-machine-gated rows (
create_machine_sync,create_depth_from_2d,create_sensor_input,create_laser_output,create_multitouch_surface,drive_diffusion_tox) now live in Out of scope.
C.2 · Controls — effects, generators, reactivity, performance, mapping
| Feature | EX | Delivers | Eff | Impact | Conf | Pri | Status | Source(s) |
|---|---|---|---|---|---|---|---|---|
| Color-finish suite remainder | EX-47/46 | Curves panel beyond the shipped apply_lut, scopes, colour wheels, and create_histogram_scope (v0.8.1) | M | High | High | P0 | PARTIAL | alltd, aw-cre |
create_interaction_zones + optical-flow trigger | EX-36 | Camera/pose enter/exit/dwell zones fire cues (no depth-cam) | M | Med-Hi | High | P1 | NEW | alltd |
controlled_disorder_grid | EX-27 | Grid of quads/lines with a tunable order↔chaos disorder knob | M | Med-Hi | High | P1 | NEW | anya, aw-cre · name generically |
create_terrain | EX-29 | Heightmap landscape + PBR splat + water + volumetric fog | L | Med | Med | P1 | NEW | aw-int, aw-cre (Terrain-Tools MIT) |
create_l_system + create_asemic_writing | EX-28 | Lindenmayer branching geometry + procedural glyph strokes | M–L | Med | Med | P1 | NEW | aw-cre, anya |
create_clip_sequencer + create_audio_transport | EX-40 | Cached clip seq (trim/reverse/beat-advance) + audio-file master transport | M | High | Med | P1 | NEW/EXT | alltd |
| musical-bands + spectrogram heatmap | EX-38 | FFT→named musical bands (per-band attack/release) + heatmap trail | S–M | Med | High | P1 | NEW/ENH | aw-cre, alltd |
create_pointer_reactive | EX-37 | Mouse/multitouch position as a first-class creative seed/force | S–M | Med | High | P1 | NEW | anya, alltd |
create_plexus | EX-20 | Points + lines between near neighbours (constellation/network) | M | Med | Med | P1 | NEW | aw-cre |
create_pixel_sort | EX-21 | Threshold pixel-sort via feedback translation | S–M | Med | High | P2 | NEW | alltd |
add_timecode_overlay | EX-42 | HH:MM:SS:FF / countdown overlay | S | Low-Med | High | P2 | NEW | aw-cre (GPL idea-only) |
create_step_repeat | EX-23 | Brick/grid tiling with gap/jitter/rotation | S | Low | High | P2 | NEW | aw-cre (GPL idea-only) |
| Lens/CA/vignette finishing pass | EX-24 | Barrel distortion + chromatic aberration + vignette | S | Low-Med | Med | P2 | ENH (check glitch overlap) | alltd, aw-cre |
| Feedback/displace preset library | EX-25 | Pixel-drip, mirror/trail/decay, video-displaces-video presets | S | Low | Med | P2 | EXTENSION | alltd |
| Kinetic-text path-follow / presets | EX-43 | Sentence-instancing path-follow + smoke-logo/ramp-text presets | M | Med | Med | P2 | EXTENSION | alltd, anya |
scaffold_vj_deck | EX-44 | Compose decks + control-surface + MIDI-map into a VJ deck UI | M | Med | Med | P2 | EXTENSION | alltd (PATCHDECK pattern) |
create_pop_fluid / create_surface_flow | EX-30 | POP-family GPU fluid + surface-flow (extends create_pop_field) | M–L | Med | Low | P2 | EXTENSION | alltd · probe POPs |
create_blob_trace | EX-74/75 | Contour outline trace to complement the shipped create_vector_lines / SVG path | M | Med | Med | P2 | NEW | aw-cre, alltd |
| Fractal SDF presets + particles-in-SDF | EX-33 | Mandelbulb/menger presets + instanced particles in a raymarched SDF | M | Low-Med | Med | P2 | EXTENSION | alltd · GPU |
create_virtual_projection_set / camera-match | EX-48 | Virtual room+projector cam previz; match cam to real projector | M | Med | Med | P2 | NEW | alltd |
| VR180 stereo dome mode | EX-49 | 180° stereo equirect render on dome/cubemap output | S | Low | Med | P2 | EXTENSION | alltd |
Removed from this table since v0.8.x:
MediaPipe face/hand/segmentation(shipped v0.8.1 assetup_face_tracking,setup_hand_tracking,setup_segmentation);create_lidar_reactiveandcreate_volumetric_firemoved to Out of scope.
C.3 · TouchDesigner depth — bridge, operators, editing
| Feature | EX | Delivers | Eff | Impact | Conf | Pri | Status | Source(s) |
|---|---|---|---|---|---|---|---|---|
create_raymarch_scene → SDF expr-graph | EX-51 | Compose SDF primitives/booleans/domain-ops → one GLSL | L | Med-Hi | Med | P1 | ENH | aw-int, aw-cre (RayTK CC-BY) |
complete_python_at | EX-52 | Valid op paths/params/channels from the live graph for the LLM | S–M | Med | Med | P2 | NEW | aw-int, aw-cre |
create_physics_constraints (Bullet) | EX-32 | Hinges/springs/ragdoll/stacking rigid-body sims | L | Med | Low | P2 | NEW | aw-cre · probe-live |
| Cook-on-change optimizer mode | EX-54 | Cook only when input changes (null-cache gating) | S | Low | Med | P2 | EXTENSION | aw-cre (GPL idea-only) |
TouchEngine headless path(EX-53) moved to Out of scope (paid-license).
C.4 · Library, packaging & product
| Feature | EX | Delivers | Eff | Impact | Conf | Pri | Status | Source(s) |
|---|---|---|---|---|---|---|---|---|
| License-tier + provenance/funnel metadata | EX-59 | Revenue-tiered license templates + price/tier fields in the index | S | Med | High | P1 | EXTENSION (planned provenance) | anya |
vendor_python_lib | EX-60 | Vendor pip libs into Text DATs → self-contained .toe | M | Med | Med | P2 | NEW | alltd |
| Own starter recipe pack + cover art | EX-61 | First-party curated recipe pack (the "free pack" funnel) | M | Med | Med | P2 | EXTENSION (content) | alltd, anya · author own |
C.5 · CLI & DX
| Feature | EX | Delivers | Eff | Impact | Conf | Pri | Status | Source(s) |
|---|---|---|---|---|---|---|---|---|
auto_ui from custom params | EX-63 | Auto-generate a control panel from a COMP's custom params | M | Med | High | P1 | NEW | alltd |
| Codec export presets + offline render | EX-41 | HAP/NotchLC/ProRes presets + non-realtime no-frame-drop render | S–M | Med | High | P2 | EXTENSION | alltd |
scaffold_state_machine | EX-64 | FSM show-flow + extension-driven structure skeleton | M | Med | Med | P2 | NEW | alltd |
edit_shader hot-reload | EX-65 | Edit-DAT → re-cook → errors+preview round-trip aggregator | S | Low-Med | Med | P2 | NEW | aw-cre (ShaderBuilder MIT) |
genuary_daily scaffold | EX-66 | Dated daily-sketch folder + variant capture + auto-gallery | S | Low | High | P2 | NEW | anya |
C.6 · AI & LLM
| Feature | EX | Delivers | Eff | Impact | Conf | Pri | Status | Source(s) |
|---|---|---|---|---|---|---|---|---|
| "generative-classic" + "one-source-five-ways" prompts | EX-68 | Steer a build toward a generative-art lineage; emit N labeled variants | S | Med | Med | P2 | NEW | anya |
tdmcp://glsl-snippets, tdmcp://cheatsheets, and the teach_touchdesigner learning resource are implemented on main after v0.7.1 and are no longer tracked as open backlog.
C.7 · Docs / examples
| Feature | EX | Delivers | Eff | Impact | Conf | Pri | Status | Source(s) |
|---|---|---|---|---|---|---|---|---|
| Cookbook: famous-tutorial mirrors | EX-71 | Recreate iconic tutorials with tdmcp tools (dither/plexus/point-cloud/blob/video→particles) | S ea | Med | High | P1 | docs | aw-cre, alltd, aw-int |
| Cookbook: everyday-object→generative + beginner psychedelia | EX-72 | Rebuild a real-world pattern procedurally; beginner audio-reactive stack | S | Med | High | P2 | NEW docs | anya |
| Docs: "tdmcp as a source for Resolume/VDMX/Disguise" | EX-73 | Document the downstream NDI/Spout/Syphon chain into other VJ apps | S | Med | High | P2 | exists-complete + docs | aw-int, alltd |
C.8 · Reconciled out (already shipped / planned / gated / ignore)
Recorded for honesty: exists-complete — Shader Park (create_shader_park), the full VJ-mixer stack (decks + layer-mixer + output + record), and Spout/NDI/Syphon capture (create_live_source). gated/planned — optical-flow particles, the Unreal/TouchEngine bridge (paid), StreamDiffusion/ComfyUI/DepthAnything bundling (kept only as drive-installed-tox / cloud deltas), and Kinect/Azure depth-cams (kept as the lighter optical-flow/MediaPipe path). ignore — TDNeuron / TF Style-Transfer (GPL/Windows/legacy-heavy) and Cables.gl (not TD). Cross-cutting: Round-3 create_data_source HTTP/WS folds into the v0.7.0 data-source fabric; create_fixture_control builds on the shipped create_dmx_fixture_pipeline; license-tier metadata hardens the v0.7.0 provenance work; and extract_palette and generative_classics_pack are part of v0.7.0, relating to the shipped create_palette / generate_from_moodboard lineage.
Round 4 — hype trend scouting — 2026-06-09
Round 4 campaign complete: 5 waves, 28 features, shipped together in v0.9.0.
60 raw candidates → 38 deduped from five external surfaces (community-showcase, tutorials, generative-ai, hardware-interactive, vfx-aesthetics) scouted in parallel by the tdmcp-hype-scout harness (.claude/skills/tdmcp-hype-scout/). Each entry was evidence-cited (≥2 URLs from 2025-2026) and feasibility-vetted against src/tools/, src/knowledge/data/, recipes/, docs/ROADMAP.md, and src/td-client/. Distribution after dedup: ~16 H · ~22 M · 0 L hype (heavy cross-surface confirmation of the AI-bridge and POPs clusters). Profile used: default Hype × Build-Ease (max 9, min 1). The curated per-surface tables (D.1–D.5 below) are the publishable summary; the raw scout outputs and the full per-candidate vet notes / merge log live under _workspace/hype-scout/ locally (gitignored, like every prior round's raw output). Source codes: comm = community-showcase · tut = tutorials · ai = generative-ai · hw = hardware-interactive · vfx = vfx-aesthetics.
The new field versus the inward Rounds 0–2 and Round 3's static community pull: what TD artists are SHIPPING right now in 2025-2026 — finished work + front-running tutorials, with a build-ease vet that prioritizes "the parts already exist; we're missing the preset/binding" wins.
Distinct from Round 3. Round 3 was an ecosystem ingestion pass over static catalogs (alltd, awesome-touchdesigner, anya). Round 4 is a trend pass over what's happening now — recent Patreon drops, new Daydream / LOPs / POPs releases, the StreamDiffusion v0.2.6 / DepthAnything v2 / SAM 2 / TDGS waves. Many tools recur because they're genuinely hyped across both ecosystem and trend angles; cross-referenced inline.
D.0 · Force multipliers (build first)
Foundational work that unlocks 3+ entries below. All are S-effort and sit on existing scaffolding — these are the cheapest accelerators in the backlog.
| FM | Delivers | Eff | Unlocks | Status |
|---|---|---|---|---|
| FM-01 | Outbound ndi_out / syphon_spout_out modes on createExternalIo — the universal "push a TOP out to StreamDiffusion / ComfyUI / MediaPipe-Spout-loopback / TouchEngine" plumbing. KB confirms both stock TOPs (syphon_spout_out_top.json, ndi_out_top.json). | S | S001, S004, S007, S014, S017 | ✅ shipped v0.9.0 |
| FM-02 | dropExternalTox helper for the canonical dotsimulate TOX-drop pattern (discover candidate paths → drop into baseCOMP → validate expected custom pars → OSC-bind). | S | S001, S003, S004, S005, S008, S016, S028 | ✅ shipped v0.9.0 |
| FM-03 | Layer-2 build_pop_chain — generic ordered POP chain wired by NetworkBuilder, with safe-default params per POP type. Unblocks 5 POP-combo Layer-1 tools without copy-pasting topology code. | M | S002, S006, S009, S010, S035 | ✅ shipped v0.9.0 |
D.1 · Ready for tdmcp-pipeline — the top-5 high-confidence picks
| Rank | id | Tool | Layer | Hype | Eff | Coverage | Status | Source(s) |
|---|---|---|---|---|---|---|---|---|
| 1 | S007 | create_pose_controlnet_driver — OpenPose-color render TOP fed by the existing pose stack; one preset, no TOX dependency | 1 | H | S | NEW (composes existing) | ✅ shipped v0.9.0 | ai, tut |
| 2 | S025 | create_ascii_render — character-grid render TOP suite alongside create_dither / create_halftone | 1 | H | S | NEW | ✅ shipped v0.9.0 | vfx, tut |
| 3 | S020 | create_phrase_locked_cue_engine — cues quantized to Ableton bars/phrases over createSyncExternalClock | 1 | M | S | EXTENSION | ✅ shipped v0.9.0 | hw, tut |
| 4 | S013 | create_audio_glsl_uniforms — bind audio CHOPs as uniforms on a glslTOP (ingredients exist) | 2 | M | S | PARTIAL | ✅ shipped v0.9.0 | tut |
| 5 | S015 | create_external_io outbound (FM-01 itself) | 2 | M | S | EXTENSION | ai, comm |
All 5 score H×S=9 or M×S=6, sit on existing tdmcp scaffolding, and need no new bridge endpoint. The AI bridges (StreamDiffusion / ComfyUI / DepthAnything wrappers) outrank these on raw hype but are M-effort behind FM-01 + FM-02, so they belong below.
D.2 · Generative-AI bridges — the highest-hype cluster (depends on FM-01 + FM-02)
| Feature | id | Delivers | Eff | Imp | Conf | Pri | Status | Source(s) |
|---|---|---|---|---|---|---|---|---|
drive_streamdiffusion | S001 | dotsimulate StreamDiffusionTD wrapper — discover the TOX, drop inside baseCOMP, expose t-index / prompt / strength as custom pars, OSC-bind | M | High | High | P1 | ✅ shipped v0.9.0 | ai, tut, comm, vfx |
create_depth_from_2d | S003 | TDDepthAnything v2 wrapper — RGB-in → depth-TOP-out preset for 2D-to-3D parallax / depth-keyed silhouette | M | High | High | P1 | ✅ shipped v0.9.0 | ai, comm |
connect_comfyui | S004 | ComfyUI bridge via olegchomp/TDComfyUI or JiSenHua/ComfyUI-TD — graph load + queue prompt + Spout pull-back | M | High | High | P1 | ✅ shipped v0.9.0 | ai, tut |
create_gaussian_splat_scene | S016 | TDGS wrapper (Anglerfish-graphics 6 Apr 2025; POPs Gaussian-Splat v2026) — load .ply, instance, camera-control. Top trend (4-surface unanimous H) | M | High | High | P1 | ✅ shipped v0.9.0 | ai, comm, tut, vfx |
setup_mediapipe_plugin | S028 | torinmb/mediapipe-touchdesigner canonical setup — face/hand/body/segmentation all from one Spout-loopback path | S | High | High | P1 | ✅ shipped v0.9.0 | ai, tut |
create_llm_chain | S008 | dotsimulate LOPs wrapper — chain OpenAI / Anthropic / Ollama nodes with prompt-templates and structured outputs | M | High | Med | P1 | ✅ shipped v0.9.0 | ai, tut |
create_voice_prompt_pipeline | S005 | STT-Whisper LOP → prompt → SD/SDXL update — push-to-talk live prompt morph | M | Med | Med | P2 | NEW | ai, tut |
create_ai_mirror | S017 | Combo recipe: camera-in + StreamDiffusion + control-surface mapped — the showcase form everyone is shipping | L | High | Med | P2 | ✅ shipped v0.9.0 | ai, comm, tut |
connect_daydream_cloud | S043 | dotsimulate × Daydream hosted StreamDiffusion — cloud path that skips the GPU gate | S | High | Med | P1 | ✅ shipped v0.9.0 | ai |
create_sam_segmentation | S046 | SAM 2 / FastSAM masks via ONNX → matte/alpha channel | L | Med | Med | P2 | PARTIAL — depends ONNX | ai, tut |
create_prompt_morph | S044 | IP-Adapter slot bank — morph between N saved prompts on a control surface | S | Med | Med | P2 | PARTIAL — depends S001 | ai |
create_rd_diffusion_hybrid | S048 | Feed create_reaction_diffusion into StreamDiffusion image2image | M | Med | Med | P2 | PARTIAL — depends S001 + S033 | comm, ai |
create_voice_character | S047 | ElevenLabs TTS → lip-synced MediaPipe face | M | Med | Med | P2 | NEW | ai |
Gating note. The realtime AI bridges (S001 / S003 / S004 / S017 / S048) continue to count against GPU/CUDA-bound in Out of scope for the bundled path. The Round-4 entries here are the drive-installed-tox + cloud delta — wrappers around components the user installs themselves; never bundled.
D.3 · POPs combos — the new generative cluster (depends on FM-03)
| Feature | id | Delivers | Eff | Imp | Conf | Pri | Status | Source(s) |
|---|---|---|---|---|---|---|---|---|
create_pop_particle_system | S002 | Multi-POP combo: particle_pop + feedback_pop + lookup_texture_pop + field_pop — the dominant new particle look | M | High | High | P1 | ✅ shipped v0.9.0 | comm, tut, vfx |
create_pop_growth | S006 | POP organic growth + RD-on-POPs — feedback-loop branching forms | M | High | Med | P1 | ✅ shipped v0.9.0 | comm, vfx |
create_pop_lines_pointcloud | S009 | Point cloud → POP lines with proximity threshold (constellation/plexus-style) | M | High | High | P1 | ✅ shipped v0.9.0 | comm, vfx |
create_depth_pop_field | S010 | ZED/Orbbec/OAK-D depth → POP scatter/instance with depth as the force field | M | High | Med | P1 | ✅ shipped v0.9.0 | comm, hw |
create_stipple_pointcloud | S035 | Stipple/dot rendering of a point cloud via POPs | M | Med | Med | P2 | ✅ shipped v0.9.0 | vfx |
D.4 · Hardware & interaction (mostly Out-of-scope; tracked here for visibility)
| Feature | id | Delivers | Eff | Imp | Conf | Pri | Status | Source(s) |
|---|---|---|---|---|---|---|---|---|
create_iphone_depth_source | S012 | iPhone TrueDepth/LiDAR via Record3D WebSocket — phone-as-depth-camera path that sidesteps RealSense/Azure | M | High | Med | P1 | NEW — see Out of scope (hardware light path) | comm, hw |
create_femto_depth_silhouette | S018 | Orbbec Femto Bolt — Azure-Kinect successor since MS EOL'd Azure | S | High | Med | P1 | EXTENSION — see Out of scope (hardware) | hw |
create_esp32_sensor_bridge | S019 | ESP32 + canonical Arduino sketch → TD UDP/OSC ingest with a tdmcp subnet preset | M | High | Med | P1 | PARTIAL — see Out of scope (hardware) | hw |
create_nuitrack_skeleton | S023 | Nuitrack skeleton tracking presets (post-Kinect-SDK) | S | Med | Med | P2 | EXTENSION — see Out of scope (hardware) | hw |
create_streamdeck_cue_surface | S022 | Stream Deck cue button preset on the existing OSC/MIDI surface infra | M | Med | Med | P2 | EXTENSION | hw |
create_capacitive_pad_grid | S024 | ESP32 + conductive paint pads → TD with a known N×M layout helper | M | Med | Med | P2 | NEW — see Out of scope (hardware) | hw |
create_outdoor_depth_capture | S038 | ZED 2i / OAK-D POE outdoor-rated depth capture preset | M | Med | Med | P2 | NEW — see Out of scope (hardware) | hw |
create_lidar_floor_tracker | S021 | Hokuyo URG-04LX-UG01 2D-LiDAR floor zone tracker | L | Med | Med | P2 | PARTIAL — already in Out of scope (Round-3) | hw |
create_touchosc_layout | S039 | Generate a TouchOSC layout file from a TD COMP's custom pars | L | Med | Med | P2 | PARTIAL | hw |
D.5 · Aesthetic / VFX tools (mostly buildable today; many overlap Round 3)
| Feature | id | Delivers | Eff | Imp | Conf | Pri | Status | Source(s) |
|---|---|---|---|---|---|---|---|---|
create_ascii_render | S025 | Character-grid TOP — top-5 (D.1) | S | Med | High | P1 | ✅ shipped v0.9.0 | vfx, tut |
create_slit_scan | S026 | Time-slice slit-scan render next to the shipped create_time_echo | S | Med | Med | P2 | ✅ shipped v0.9.0 | vfx |
create_chrome_blobs | S029 | Liquid-chrome / metaball preset stack | S | Med | Med | P2 | ✅ shipped v0.9.0 | vfx, comm |
create_vintage_lens | S030 | Lens/CA/vignette preset on applyPostProcessing (Round-3 EX-24) | S | Med | Med | P2 | ✅ shipped v0.9.0 | vfx |
create_pixel_sort | S031 | Threshold-pixel-sort (Round-3 EX-21) | M | Med | Med | P2 | ✅ shipped v0.9.0 | vfx |
create_volumetric_field | S032 | Raymarch density field preset | M | Med | Med | P2 | ✅ shipped v0.9.0 | vfx |
create_reaction_diffusion | S033 | Gray-Scott RD (recipe exists; wrap as a tool) | S | Med | High | P2 | ✅ shipped v0.9.0 | vfx, tut |
create_generative_architecture | S034 | PBR + hand-canvas architectural sketch preset (Round-3 EX-27 family) | M | Med | Med | P2 | PARTIAL — overlaps Round-3 | vfx, comm |
create_voxel_stack | S036 | Isometric voxel stack render preset | M | Med | Med | P2 | ✅ shipped v0.9.0 | vfx |
create_fulldome_output | S037 | B-Dome simulator + 180° equirect output (overlaps Round-3 EX-49) | M | Med | Med | P2 | PARTIAL — overlaps Round-3 | vfx, comm |
create_facade_mapping | S040 | Multi-projector blend + Kantan/CamSchnappr workflow | M | Med | Med | P2 | ✅ shipped v0.9.0 (PARTIAL — calibration deferred) | comm |
create_fixture_choreograph / create_data_choreograph | S041 | Solar/Astrum-style data-driven fixture choreography (Round-3 EX-45 family) | L | Med | Med | P2 | PARTIAL — overlaps Round-3 | comm |
D.6 · Reconciled cross-references
- Gating preserved. Realtime AI generation (S001 / S003 / S004), Hokuyo / ZED 2i / OAK-D / Orbbec / iPhone-LiDAR depth (S010 / S012 / S018 / S021 / S038), ESP32 / capacitive sensors (S019 / S024), Nuitrack (S023), and the Unreal/TouchEngine path (S014) continue to live under Out of scope. They appear in Round 4 because the drive-installed-tox, cloud, or light-camera-only variants are now in active community use — but they remain gated for bundling and live-validation.
- Round-3 overlaps. S025 ↔ EX-71/72 (cookbook ASCII mention); S026 ↔ shipped
create_time_echo; S029 ↔ EX-25 feedback presets; S030 ↔ EX-24; S031 ↔ EX-21; S033 ↔ existing reaction-diffusion recipe; S037 ↔ EX-49; S041 ↔ EX-45. Where Round 3 and Round 4 disagree on priority, the Round-4 vet (with citations from finished 2025-2026 work) wins for build sequencing. - Out — already shipped. MediaPipe face/hand/body/segmentation (S028 base layer) shipped in v0.8.1 as
setup_face_tracking,setup_hand_tracking,setup_segmentation— the Round-4 entry is an EXTENSION (canonical-plugin setup), not a duplicate. - Out — duplicate.
import_blender_clipboard(S045) is the same scope asBlend2TD(Round-3 reconciled-out, low priority); leave the Round-3 stance.