# Installation URL: /runtime/getting-started/installation Install the runtime framework, one kernel, and one bundler, then wire the runtime into your framework. ## Prerequisites [#prerequisites] * Node.js 24 or later * A package manager: npm, pnpm, or yarn ## Install the Packages [#install-the-packages] The runtime ships no kernels, so install at least one kernel plugin (`@taucad/replicad`) and the `@taucad/esbuild` bundler that compiles TypeScript model code. `zod` is a required peer dependency. pnpm npm yarn ```bash pnpm add @taucad/runtime @taucad/replicad @taucad/esbuild zod ``` ```bash npm install @taucad/runtime @taucad/replicad @taucad/esbuild zod ``` ```bash yarn add @taucad/runtime @taucad/replicad @taucad/esbuild zod ``` Add other plugins the same way when you need them — see [Choose a Kernel](/runtime/guides/choosing-a-kernel). ### Native Build123d [#native-build123d] `@taucad/build123d` is not a browser plugin, and a global Python does not make it usable: the host packages the pinned CPython and wheel tree itself. Read [Build123d](/runtime/reference/build123d) first. ### tscircuit [#tscircuit] To use TSX electronics boards, install `@taucad/tscircuit` with the runtime, bundler, and Zod. Its bundled engine needs no package-manager hook or bundler alias. See [tscircuit](/runtime/reference/tscircuit) for the authoring contract. ```bash npm install @taucad/runtime @taucad/esbuild @taucad/tscircuit zod ``` ## Framework Configuration [#framework-configuration] ### Vite and React Router [#vite-and-react-router] Add the runtime's Vite integration beside the framework plugins. Vite flattens the plugin array returned by `tauRuntime()`, so do not spread it: ```typescript import { reactRouter } from '@react-router/dev/vite'; import { tauRuntime } from '@taucad/runtime/vite'; import { defineConfig } from 'vite'; export default defineConfig({ plugins: [tauRuntime(), reactRouter()], }); ``` For plain Vite, omit `reactRouter()`. The same `tauRuntime()` call supports Vite 7 and 8. ### Next.js [#nextjs] ```typescript import { withTauRuntime } from '@taucad/runtime/nextjs/config'; export default withTauRuntime(); ``` The composer supports Next.js 15/Webpack and Next.js 16/Turbopack without a version branch. ### Electron [#electron] ```typescript import { electronRuntimeConfig } from '@taucad/runtime/electron/vite'; export default electronRuntimeConfig({ main: {}, preload: {}, renderer: {}, }); ``` Continue with [Bundling](/runtime/guides/bundling#electron) for utility-process entries and the [Framework Integrations API](/runtime/api/frameworks) for every process helper. ### Node.js [#nodejs] No build configuration is needed on the server. Compose a runtime, and use `fromNodeFs` to read model files from disk: ```typescript import { createRuntimeClient } from '@taucad/runtime'; import { fromNodeFs } from '@taucad/runtime/filesystem/node'; import { inProcessTransport } from '@taucad/runtime/transport/in-process'; import { defineRuntime } from '@taucad/runtime/worker'; import { replicad } from '@taucad/replicad'; import { esbuild } from '@taucad/esbuild'; const runtime = defineRuntime({ plugins: [replicad(), esbuild()], }); const client = createRuntimeClient({ transport: inProcessTransport({ runtime, fileSystem: fromNodeFs('/path/to/project') }), }); ``` ## Subpath Imports [#subpath-imports] The package splits its API across subpaths so bundles carry only what they import: the client from `@taucad/runtime`, transports from `/transport/*`, filesystems from `/filesystem` (with platform backends behind `/node` and `/browser`), and authoring entries from `/kernel`, `/middleware`, and `/bundler`. Each [API Reference](/runtime/api/client) page names the subpath that exports its symbols. ## What's Next [#whats-next] * [Quick Start](/runtime/getting-started/quick-start) — Render your first 3D model * [LLMs.txt](/runtime/getting-started/llms-txt) — Feed Runtime docs into AI tools * [API Reference: Client](/runtime/api/client) — Full API documentation for `createRuntimeClient`