README.md
July 10, 2026 · View on GitHub
vue-termui
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()],
})