Multimodal Pipeline
Scaffolds a multimodal processing pipeline in TypeScript. Accepts image, audio, and video inputs, detects modality automatically, routes each input through a modality-specific processor, sends the result to a vision or audio-capable LLM (Anthropic Claude, OpenAI GPT-4o), and returns structured output with Zod-validated schemas. No heavy frameworks — all components are built from first principles using provider SDKs directly. Processors and LLM providers use a self-registering registry pattern for easy extension.
| Name | multimodal-pipeline |
| Version | 0.1.0 |
| Category | ai-systems |
| License | Apache-2.0 |
| Persona | engineering |
| Tags | typescript, multimodal, vision, audio, video, llm, ai, structured-output |
| Source | templates/multimodal-pipeline |
Render it
Three front doors, one catalog. Pick whichever suits the caller.
# CLI
npx @nanohype/sdk render multimodal-pipeline --out ./my-app
# SDK
import { LocalSource, renderTemplate } from "@nanohype/sdk";
const result = await renderTemplate(source, "multimodal-pipeline", variables);
# MCP — from an agent
get_template({ name: "multimodal-pipeline" })Prerequisites
| Tool | Version | Why |
|---|---|---|
node | >=22 | Node.js runtime for TypeScript execution |
Variables
Required
ProjectNamestring- Kebab-case project name, used in package.json and directory names Must be lowercase kebab-case starting with a letter.
Optional
Descriptionstring — defaults toA multimodal processing pipeline- Short project description for package.json and README
LlmProviderstring — defaults toanthropic- LLM provider for multimodal analysis (e.g. anthropic, openai)
IncludeAudiobool — defaults totrue- Include audio processing support (whisper transcription + LLM analysis)
IncludeVideobool — defaults tofalse- Include video processing support (frame extraction + LLM analysis)
IncludeTestsbool — defaults totrue- Include vitest test suite with pipeline and processor tests
What it produces
32 files. Placeholder names such as __APP_NAME__ are what the renderer substitutes into.
.env.example
.gitignore
biome.json
package.json
README.md
src/__tests__/image.test.ts
src/__tests__/pipeline.test.ts
src/__tests__/process-file.test.ts
src/bootstrap.ts
src/config.ts
src/index.ts
src/logger.ts
src/output/formatter.ts
src/output/types.ts
src/pipeline.ts
src/processors/audio.ts
src/processors/image.ts
src/processors/index.ts
src/processors/registry.ts
src/processors/types.ts
src/processors/video.ts
src/providers/anthropic.ts
src/providers/index.ts
src/providers/mock.ts
src/providers/openai.ts
src/providers/registry.ts
src/providers/types.ts
src/providers/whisper.ts
src/resilience/__tests__/circuit-breaker.test.ts
src/resilience/circuit-breaker.ts
tsconfig.json
vitest.config.tsComposes with
- Pairs with
agentic-loop - Pairs with
rag-pipeline - Pairs with
eval-harness - Nests inside
monorepo