I/O Catalog & Reference Gallery

Every input format Liminal accepts, every output format it produces, and real-world examples of each creative coding domain from across the internet.

13Input Formats
22Output Formats
9Code Domains
3Stubbed

Input Formats

All the data formats Liminal can ingest, from text prompts to binary blobs.

#FormatDescriptionHandlerStatus
1TextPrompts via --prompt, TUI, chat modesrc/index.ts, src/tui/Done
2JSONConfig files (~/.liminal/config.json)src/config/ConfigLoader.tsDone
3JSON (legacy)~/.atelier/config.json — auto-migratedConfigLoader.migrateLegacyConfig()Done
4.envKey-value environment variablesdotenv in bin/liminalDone
5JSON (spec)Composition layer specssrc/composite/Compositor.tsDone
6AudioMP3, WAV, OGG, M4A, FLACsrc/audio/Partial
7JSON (aesthetic)Aesthetic preset configsrc/aesthetic/Partial
8MarkdownNarrative video scriptssrc/narrative/BlogToVideoPipeline.tsDone
9Multi-formatCompost heap: code, images, audio, video, 3D, textsrc/compost/Done
10SQLiteEvent store databasessrc/compost/EventStore.tsDone
11ZIPProject archive importssrc/composition/ProjectSerializer.tsDone
12URLRemote project JSONProjectSerializer.importFromURL()Done
13Float32ArrayRaw audio sample bufferssrc/audio/AudioExtractor.tsDone

Output Formats

Every format Liminal can produce — code, images, audio, video, data, and text.

#FormatDescriptionProducerStatus
1p5.js JSCreative coding canvas sketchessrc/generators/p5/ (6 generators)Done
2Three.js HTML3D WebGL scenessrc/generators/three/Done
3GLSLFragment shader source codesrc/generators/glsl/Done
4Hydra JSAnalog video synth codesrc/generators/hydra/Done
5Strudel JSLive music patterns (TidalCycles)src/generators/strudel/Done
6Tone.js JSWeb Audio synthesis codesrc/generators/tone/Done
7Revideo TSGenerative motion graphicssrc/generators/revideo/Done
8HTMLStandalone wrapped docs (9 templates)src/utils/htmlWrapper.tsDone
9ASCIICharacter-based visual artsrc/generators/ascii/Done
10Gen. TextConcrete poetry, word artsrc/generators/textgen/Done
11MarkdownDigest reports, video scriptssrc/compost/DigestGenerator.tsDone
12PNGCanvas screenshotssrc/render/Renderer.tsDone
13JPEGCanvas screenshotssrc/render/Renderer.tsDone
14MP4Rendered video (FFmpeg / Revideo / HyperFrames)src/render/CanvasRecorder.tsDone
15WebMVideo export (FFmpeg)src/export/VideoExporter.tsDone
16GIFAnimated GIF (FFmpeg)src/export/VideoExporter.tsDone
17ZIPProject bundlessrc/export/Exporter.tsDone
18JSONAPI responses, metadata, organismssrc/render/PreviewServer.tsDone
19SSEServer-Sent Events (live preview)src/render/PreviewServer.tsDone
20ScoresVisual & audio quality (0–1)src/render/VisualScorer.tsDone
21EmbeddingsFloat32Array semantic vectorssrc/embeddings/EmbeddingService.tsDone
22SQLiteEvent & project databasessrc/compost/EventStore.tsDone

Stubbed / Not Yet Implemented

Started but blocked on external dependencies.

ModuleWhat's MissingBlockerStatus
SemanticExtractor.extractImage()Image → text from compostNeeds vision-capable LLMStub
SemanticExtractor.extractAudio()Audio → text transcriptionNeeds Whisper or similar STTStub
SemanticExtractor.extractVideo()Video → text extractionNeeds frame sampling + vision modelStub

Infrastructure & Architecture Map

What each I/O format means in terms of runtime dependencies, external services, and system architecture. Every format carries infrastructure weight.

Text Prompt
ConfigLoader
LLMClient
Generator
Code Output
Renderer
PNG / MP4 / GIF
Audio File
AudioAnalyzer
VisualMapper
Generator
Hydra / p5.js
Compost Files
Shredder
CollisionEngine
SeedBank
Seeds / Digest

Dependency Map by I/O Format

p5.js JavaScript

  • Runtime: Node.js + LLM API call to generate code
  • Output rendering: Puppeteer or Playwright headless browser
  • Screenshot: Canvas .toBuffer() → PNG/JPEG
  • Dependencies: p5 (CDN in HTML wrapper) CDN
  • Video: Frame sequence → FFmpeg FFmpeg
  • Infrastructure weight: Medium — needs headless browser + optional FFmpeg

Three.js HTML

  • Runtime: Node.js + LLM API call
  • Output: Complete standalone HTML with import maps
  • Rendering: WebGL via Playwright (GPU-accelerated headless)
  • Dependencies: three (import map / CDN) CDN
  • Infrastructure weight: Medium-High — WebGL requires GPU-capable headless browser

GLSL Shaders

  • Runtime: Node.js + LLM API call (shader source generation)
  • Output: Plain text .frag / .glsl files
  • Rendering: WebGL2 via HTML wrapper — requires GPU for preview
  • Dependencies: None for generation; WebGL2 for rendering
  • Infrastructure weight: Low for generation, High for rendering (GPU)

Hydra JavaScript

  • Runtime: Node.js + LLM API call
  • Output: JavaScript source for hydra-synth
  • Live execution: Browser-only — Hydra uses WebRTC + Canvas
  • Dependencies: hydra-synth npm or CDN CDN
  • Infrastructure weight: Low for code gen; Live preview needs browser

Strudel JavaScript

  • Runtime: Node.js + LLM API call
  • Output: JavaScript pattern code (TidalCycles mini-notation)
  • Audio rendering: Web Audio API via Strudel REPL in browser
  • Dependencies: @strudel/repl or embedded REPL npm
  • Headless audio: Playwright + WebAudio capture → Float32Array Optional
  • Infrastructure weight: Low for code gen; Medium for headless audio capture

Tone.js JavaScript

  • Runtime: Node.js + LLM API call
  • Output: JavaScript using Tone.js scheduling + synthesis API
  • Audio rendering: Web Audio API in browser or headless Playwright
  • Dependencies: tone npm or CDN CDN
  • Headless audio: Playwright captures Float32Array from AudioContext Optional
  • Infrastructure weight: Low for code gen; Medium for audio capture

Revideo TS + MP4

  • Runtime: Node.js + LLM API call + @revideo/renderer
  • Output: TypeScript motion graphics + rendered MP4 video
  • Build pipeline: @revideo/core + @revideo/2d@revideo/renderer (in-process renderVideo)
  • Dependencies: @revideo/core, @revideo/2d, @revideo/renderer Optional
  • Infrastructure weight: Medium — Revideo uses in-process rendering without a separate bundler

PNG / JPEG Screenshots

  • Rendering: Puppeteer or Playwright headless browser
  • Process: Load HTML wrapper → wait for canvas render → screenshot
  • Scoring: Pixel analysis via png-js or sharp (color variety, edges, contrast)
  • Dependencies: Puppeteer or Playwright Binary
  • Infrastructure weight: Medium — headless browser is the main cost

MP4 / WebM / GIF Video

  • Pipeline A (Canvas): Puppeteer frame capture → PNG sequence → FFmpeg
  • Pipeline B (Revideo): TypeScript motion graphics → @revideo/renderer (in-process)
  • Pipeline C (HyperFrames): HTML+GSAP compositing → @hyperframes/producer
  • Transcoding: FFmpeg handles MP4, WebM, GIF conversion + resize + audio merge
  • Dependencies: ffmpeg binary, fluent-ffmpeg npm Binary
  • Infrastructure weight: Heavy — FFmpeg binary + headless browser + large temp storage for frames

Audio Input (MP3, WAV, OGG...)

  • Analysis: meyda for MFCC, spectral centroid, chroma Optional
  • Pitch detection: pitchfinder for frequency + clarity Optional
  • Metadata: music-metadata for BPM, key, duration Optional
  • Formant analysis: Custom DSP for vowel/consonant classification
  • Infrastructure weight: Low — pure JS DSP, no external services. Optional deps increase install size.

Compost Pipeline (Multi-format)

  • Storage: Filesystem heap + SQLite (better-sqlite3) for events/assets
  • Text extraction: Direct file read + LLM summarization
  • Code parsing: AST analysis via tree-sitter or regex heuristics
  • Binary processing: SHA256 hash + hex dump + base64 (files < 100KB)
  • LLM collision: Semantic merging of cross-domain fragments via LLMClient
  • Infrastructure weight: Medium — SQLite + filesystem + LLM API calls for collisions

Embeddings & Semantic Search

  • Model: @xenova/transformers (local SBERT, no API needed)
  • Output: Float32Array vectors (384-dim typical)
  • Operations: Cosine similarity, Euclidean distance, KNN search
  • First run: Downloads ~30MB model weights (cached locally after)
  • Infrastructure weight: Low-Medium — runs locally, one-time model download, CPU-bound

SSE + Preview Server

  • Transport: HTTP server (Express or native http)
  • Live updates: Server-Sent Events (text/event-stream)
  • Endpoints: Gallery API, sandbox execution, export, CSRF tokens
  • Sandbox: Isolated code execution in sandboxed iframe or VM
  • Infrastructure weight: Low — standard Node.js HTTP server, no external deps

ZIP Archives

  • Export: archiver npm — bundles project.json + iterations + HTML
  • Import: JSZip — parses uploaded project archives
  • Contents: project.json, iterations/*.js, index.html, sketch.js
  • Infrastructure weight: Minimal — pure JS compression, no binaries

Visual & Audio Scores (0–1)

  • Visual scoring: Pixel-level analysis — color variety, edge complexity, composition balance, contrast
  • Audio scoring: Signal analysis — frequency variety, dynamics, rhythm detection, harmonic richness
  • Output: JSON score objects used by RalphLoop and quality gates
  • Infrastructure weight: Minimal — pure JS computation on existing render buffers

SQLite Persistence

  • Library: better-sqlite3 (native binding, synchronous API)
  • Tables: events, snapshots, branches, assets (content-addressable blobs)
  • File: project.liminal in project root
  • Infrastructure weight: Low — single file DB, native binding requires build toolchain

Infrastructure Dependency Summary

DependencyTypeUsed ByInstall Impact
LLM APIExternalAll generators, SemanticExtractor, CompostSoup collisionsAPI key + network
Puppeteer / PlaywrightBinaryRenderer, HeadlessRenderer, CanvasRecorder, VisualScorer~300MB Chromium download
FFmpegBinaryVideoExporter, CanvasRecorder, all video/GIF outputSystem binary via brew/apt
@revideo/*OptionalRevideoGenerator, RevideoRenderer, VideoPipelineoptionalDependencies
@hyperframes/producerOptionalHyperFramesGenerator, HyperFramesRenderer, VideoPipelineoptionalDependencies
better-sqlite3RuntimeEventStore, AssetStore, ProjectStoreNative build (node-gyp)
@xenova/transformersOptionalEmbeddingService~30MB model on first run
meydaOptionalAudioExtractor (MFCC, spectral features)Pure JS, no binary
pitchfinderOptionalPitchExtractor (frequency, clarity)Pure JS, no binary
music-metadataOptionalBPMKeyDetectorPure JS, no binary

Reference Gallery

Real-world examples of each creative coding output domain from across the internet.