README.md

July 10, 2026 · View on GitHub

Vue TermUI logo

vue-termui

npm version ci

Build terminal apps with Vue 3, powered by OpenTUI.

Important

vue-termui renders through OpenTUI's native engine, which requires FFI. Run your app with Node ≥ 26.3 and --experimental-ffi (add --disable-warning=ExperimentalWarning to silence the notice), or use Bun, which supports FFI natively.

Install

Scaffold a new app:

npm create vue-termui@latest

Or add it to an existing project:

pnpm add vue-termui

Usage

<!-- App.vue -->
<script setup lang="ts">
import { Box, Text, onKeyDown, useExit } from 'vue-termui'

const exit = useExit()
onKeyDown((key) => key.name === 'q' && exit())
</script>

<template>
  <Box border>
    <Text>Hello from the terminal! Press <Text bold>q</Text> to quit.</Text>
  </Box>
</template>
// main.ts
import { createApp } from 'vue-termui'
import App from './App.vue'

const app = await createApp(App)
app.mount()

Compile .vue files with the Vite plugin:

// vite.config.ts
import { defineConfig } from 'vite'
import vueTermui from 'vue-termui/vite'

export default defineConfig({
  plugins: [vueTermui()],
})

License

MIT