vue-termui

Build terminal apps with Vue 3
24,392
Install
npm install vue-termui
Latest Version:0.3.0
Vue:3
License:MIT
Last Updated:Aug 18, 2026
Links: npm
Maintainer: posva

[!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

Related Packages

@vue-tui/runtime

Vue 3 terminal renderer with Yoga flexbox layout, inspired by React Ink.

3,402 366
@vizejs/fresco

Vue TUI framework - Build terminal UIs with Vue.js

71,222 908
termdom-vue

Vue 3 renderer for TermDOM: Vue components rendered to the terminal through a re...

368 2
lattice-tui

A keyboard-first, Obsidian-inspired Markdown knowledge base for the terminal.

1,197 0
@vizejs/fresco-native

Vue TUI framework - Native bindings

76,634 908

Version History

Version Released License
0.3.0 MIT
0.2.0 MIT
0.1.0 MIT
0.0.19 MIT
0.0.18 MIT