Skip to content

nikdelvin/termweave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Termweave β€” Build terminal apps. Ship them native.

Termweave project preview

πŸ“Ÿ Termweave turns an OpenTUI interface into a native Tauri desktop app.

You build the interface with Solid β€” Termweave handles everything else:
πŸ“¦ The window, terminal renderer, app lifecycle, and native packaging.

✨ Why Termweave?

  • Build with OpenTUI and Solid instead of recreating a terminal UI in the browser.
  • Run your app in a native, resizable Tauri window.
  • Present it inside an immersive CRT monitor with animated effects and native ambient audio.
  • Configure the name, colors, window size, and icon in βš™οΈ one config file.
  • See source changes without restarting the native window.
  • Create a native bundle with ⚑️ one command.

πŸš€ Quick start

You need macOS, Bun 1.3+, a stable Rust toolchain, and the Xcode Command Line Tools.

Create an empty project and run the installer:

mkdir my-termweave-app
cd my-termweave-app
curl -fsSLo install.sh https://raw.githubusercontent.com/nikdelvin/termweave/main/sdk/install.sh
sh install.sh

The installer asks for your app name and metadata, creates the starter project, and installs its dependencies.

Start the app:

bun run dev

🎨 Make it yours

The main places to edit are:

  1. src/routes/ β€” build the starter Home and Demo screens.
  2. src/routes.ts and src/App.tsx β€” configure routing and the application shell.
  3. app.config.json β€” set the app name, colors, window size, CRT effects, and bundle metadata.
  4. app.icon.png β€” replace the default app icon.

Changes under src/ reload while the app is running. Restart bun run dev after changing the configuration or icon.

Get the CRT glow

Give your app the glow, grain, motion, and low ambient hum of a real CRT. Keep the monitor frame for the full retro look, or switch it off and let the terminal fill the window.

"monitorOverlay": true,
"crtEffects": {
  "soundVolume": 0.3,
  "chromaticAberrationShift": 3,
  "processedFrameOpacity": 0.3,
  "noiseVisibility": 0.3,
  "scanlinesVisibility": 0.3,
  "flickerVisibility": 0.3,
  "sweepLineVisibility": 0.3
}
Option Values What it changes
monitorOverlay true/false Shows the monitor frame or goes edge-to-edge.
soundVolume 0–1 Sets the ambient CRT hum.
chromaticAberrationShift 0–10 Separates the red, green, and blue edges.
processedFrameOpacity 0–1 Blends the chromatic frame over the terminal.
noiseVisibility 0–1 Adds animated screen grain.
scanlinesVisibility 0–1 Adds horizontal scanlines.
flickerVisibility 0–1 Controls the subtle screen flicker.
sweepLineVisibility 0–1 Controls the moving sweep line.

Use 0 to turn the sound or any visual effect off.

Bring pixels to life

A terminal can be more than text. Drop a GIF, PNG, or JPEG into PixelRenderer, turn it into a living backdrop, then layer your OpenTUI interface right on top.

import { PixelRenderer } from "@termweave/sdk";
import background from "./assets/background.jpg" with { type: "file" };

export function App() {
  return (
    <PixelRenderer uri={background}>
      <box position="absolute" bottom={0} width="100%" height={8}>
        <text>Overlay content</text>
      </box>
    </PixelRenderer>
  );
}

That is all it takes to turn a terminal screen into your own little world.

Your project stays small:

my-termweave-app/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ App.tsx
β”‚   β”œβ”€β”€ routes.ts
β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”œβ”€β”€ HomeRoute.tsx
β”‚   β”‚   └── DemoRoute.tsx
β”‚   β”œβ”€β”€ components/
β”‚   └── assets/
β”œβ”€β”€ app.config.json
β”œβ”€β”€ app.icon.png
β”œβ”€β”€ package.json
β”œβ”€β”€ patches/        Router compatibility patch
└── termweave/       Managed SDK checkout

🧰 Commands

Command What it does
bun run dev Check the project and start the desktop app.
bun run build Build native bundles into build/.
bun run check Run linting, type checks, and formatting checks.
bun run update Update the managed SDK to the latest main.
bun run terminate Terminate every active Bun process across all users.

🍎 Current status

Termweave currently supports macOS for installation and development. Native bundles are built for the current machine.

🀝 Contributing

Issues and pull requests are welcome. Read CONTRIBUTING.md to get started.

Termweave is available under the MIT License.

⭐ If Termweave helps you build something, star the repository and share what you made.