@qodalis/vue-cli

Vue 3 wrapper for the @qodalis CLI terminal engine.
1,600 3
Install
npm install @qodalis/vue-cli
Latest Version:2.0.0-rc.2
Vue:3
License:MIT
Last Updated:Oct 27, 2026
Links: GitHub  ·  npm
Maintainer: nicolae.lupei

Qodalis CLI

A web terminal for Angular, React, Vue and plain TypeScript, extended through command modules.

Help command

Qodalis CLI renders an xterm.js terminal in your app with a shell-like command line, built-in commands, themes and a runtime package manager. You add commands as modules (ICliModule): the 40 official plugins, your own commands, or packages installed at runtime with pkg add. It can also connect to a Node.js, .NET or Python backend to run server-side commands.

Try it online

Starter projects for each framework, using the published npm packages:

Framework StackBlitz CodeSandbox Gitpod Repository
Angular Open in StackBlitz Open in CodeSandbox Open in Gitpod source
React Open in StackBlitz Open in CodeSandbox Open in Gitpod source
Vue Open in StackBlitz Open in CodeSandbox Open in Gitpod source
Vanilla TypeScript Open in StackBlitz Open in CodeSandbox Open in Gitpod source

Or try the terminal and write your own commands in the docs playground.

Install

Framework Package Install
Angular @qodalis/angular-cli npm install @qodalis/angular-cli
React @qodalis/react-cli npm install @qodalis/react-cli
Vue 3 @qodalis/vue-cli npm install @qodalis/vue-cli
Vanilla TS @qodalis/cli npm install @qodalis/cli @qodalis/cli-core
Electron @qodalis/electron-cli npm install @qodalis/electron-cli (with a wrapper above)

Plugins are separate packages, for example npm install @qodalis/cli-guid.

Quick start

Each example shows a terminal with the guid plugin. Pass any number of modules.

Angular

Angular 22 or later. Add the stylesheet to angular.json:

"styles": ["node_modules/@qodalis/angular-cli/src/assets/styles.css"]
import { Component } from '@angular/core';
import { CliModule } from '@qodalis/angular-cli';
import { ICliModule } from '@qodalis/cli-core';
import { guidModule } from '@qodalis/cli-guid';

@Component({
    selector: 'app-root',
    imports: [CliModule],
    template: `<cli [modules]="modules" height="100vh" />`,
})
export class AppComponent {
    modules: ICliModule[] = [guidModule];
}

<cli-panel> is a collapsible panel docked to the page. To register modules app-wide through DI instead of the modules input, add resolveCliModuleProvider(guidModule) to your providers.

React

React 18 or 19.

import '@qodalis/react-cli/styles.css';
import { Cli } from '@qodalis/react-cli';
import { guidModule } from '@qodalis/cli-guid';

export function App() {
    return <Cli modules={[guidModule]} style={{ height: '100vh' }} />;
}

Vue

<script setup lang="ts">
import '@qodalis/vue-cli/styles.css';
import { Cli } from '@qodalis/vue-cli';
import { guidModule } from '@qodalis/cli-guid';
</script>

<template>
    <Cli :modules="[guidModule]" :style="{ height: '100vh' }" />
</template>

React and Vue also export CliPanel, and CliConfigProvider to share modules and options with every terminal below it.

Vanilla TypeScript

import '@qodalis/cli/assets/styles.css';
import { CliEngine } from '@qodalis/cli';
import { guidModule } from '@qodalis/cli-guid';

const engine = new CliEngine(document.getElementById('terminal')!);
engine.registerModule(guidModule);
await engine.start();

Your own commands

A command is an ICliCommandProcessor; a module groups processors (and optional services, translations and lifecycle hooks):

import {
    API_VERSION,
    CliProcessCommand,
    ICliCommandProcessor,
    ICliExecutionContext,
    ICliModule,
} from '@qodalis/cli-core';

class GreetCommandProcessor implements ICliCommandProcessor {
    command = 'greet';
    description = 'Greet someone by name';
    valueRequired = true;

    async processCommand(command: CliProcessCommand, context: ICliExecutionContext): Promise<void> {
        context.writer.writeSuccess(`Hello, ${command.value}!`);
    }
}

export const greetModule: ICliModule = {
    apiVersion: API_VERSION,
    name: 'my-app-commands',
    processors: [new GreetCommandProcessor()],
};

Register it like any plugin: the modules input/prop, resolveCliModuleProvider(greetModule) in Angular, or engine.registerModule(greetModule). To publish a reusable plugin, scaffold it with npx @qodalis/create-cli-plugin. See Core concepts and Create a plugin.

Configuration

Options go to the options input/prop or the CliEngine constructor:

import { CliEngineOptions } from '@qodalis/cli';

const options: CliEngineOptions = {
    welcome: { message: 'Welcome to My App', show: 'daily' }, // or false
    servers: [{ name: 'node', url: 'http://localhost:8047' }],
    terminalOptions: { fontSize: 14 },
};

All options are listed in Configuration.

Features

  • Shell-like command line: &&, ||, ;, pipes, >/>> redirects, aliases, history search, tab completion and readline shortcuts (hotkeys lists them).
  • Built-in commands: help, theme, pkg, history, alias, json, diff, random, timestamp, convert, color, clipboard, ps/kill, htop and more. See Built-in commands.
  • Runtime packages: pkg add guid installs a plugin from npm (unpkg or jsdelivr) without rebuilding the app.
  • Interactive input: line, password, confirm, select, multi-select and number prompts, progress bars, spinners and a full-screen mode for editors and games.
  • Themes: 29 built-in themes, custom colors and fonts.
  • Panel: a dockable panel with tabs, split panes, resizing and maximize.
  • Users and permissions (users plugin): login, su, groups, permissions and per-user history.
  • Server integration: run commands on a backend, stream output, open a remote shell, browse the server filesystem, query databases with the data explorer.
  • i18n: 10 language packs.

Plugins

Install from npm and pass the module, or run pkg add <name> in the terminal.

Package Module Commands
@qodalis/cli-browser-storage browserStorageModule local-storage, cookies
@qodalis/cli-chart chartModule chart
@qodalis/cli-cron cronModule cron
@qodalis/cli-csv csvModule csv
@qodalis/cli-curl curlModule curl
@qodalis/cli-data-explorer dataExplorerModule data-explorer (SQL, MongoDB, Redis, Elasticsearch via a server)
@qodalis/cli-encode encodeModule base64, hex, url, jwt, hash, rot, morse, binary
@qodalis/cli-files filesModule ls, cd, cat, nano, mkdir, touch, rm, cp, grep, tree
@qodalis/cli-guid guidModule guid
@qodalis/cli-markdown markdownModule md
@qodalis/cli-password-generator passwordGeneratorModule generate-password
@qodalis/cli-qr qrModule qr
@qodalis/cli-regex regexModule regex
@qodalis/cli-scp scpModule scp
@qodalis/cli-server-jobs jobsModule server jobs
@qodalis/cli-server-logs serverLogsModule server logs
@qodalis/cli-speed-test speedTestModule speed-test
@qodalis/cli-stopwatch stopwatchModule stopwatch
@qodalis/cli-string stringModule string
@qodalis/cli-text-to-image textToImageModule text-to-image
@qodalis/cli-todo todoModule todo
@qodalis/cli-users usersModule login, su, whoami, adduser, perms, sessions, ...
@qodalis/cli-wget wgetModule wget
@qodalis/cli-yesno yesnoModule yesno

Games: @qodalis/cli-2048 (game2048Module), @qodalis/cli-minesweeper, @qodalis/cli-snake, @qodalis/cli-sudoku, @qodalis/cli-tetris, @qodalis/cli-wordle.

Language packs: @qodalis/cli-lang-<code> for de, es, fr, it, ja, ko, pt, ro, ru, zh (langDeModule, ...).

Details and examples for each plugin: Plugins.

Ecosystem

Repository What it is
cli-server-node Node.js server (@qodalis/cli-server-node): server commands, shell, filesystem, data explorer, jobs, MCP
cli-server-dotnet The same server for ASP.NET Core (NuGet Qodalis.Cli)
cli-server-python The same server for FastAPI (PyPI qodalis-cli-server)
cli-server-dashboard Admin dashboard the servers serve at /qcli/admin
mcp-cli @qodalis/mcp-cli: MCP server for Claude Code and other AI clients
pwa-cli The terminal as an installable PWA and an Android app
Angular, React, Vue and vanilla examples Starter apps using the npm packages (try them online)

Connecting a server: Server integration.

AI-assisted development

  • @qodalis/mcp-cli gives Claude Code (or any MCP client) the docs, the published API declarations and the plugin scaffolder, with no server needed:

    claude mcp add qcli -- npx -y @qodalis/mcp-cli
    

    Set QCLI_URL (and QCLI_TOKEN) to also expose a running server's commands, filesystem and data sources as MCP tools.

  • llms.txt and llms-full.txt: the plugin API guide for language models.

See AI plugin development.

Development

This repository is a pnpm 12 + Nx 24 monorepo (Node 22):

pnpm install
pnpm run build                # all packages, in dependency order
pnpm exec nx test <project>   # Jasmine + Karma (ChromeHeadless), e.g. nx test guid
pnpm run lint
pnpm run serve:docs           # docs site on http://localhost:4300
pnpm run serve:angular-demo   # also serve:react-demo, serve:vue-demo, serve:vanilla-demo
pnpm run create-plugin -- --name <name> --description "<desc>" --processor-name <Name>
Path Contents
packages/core @qodalis/cli-core: interfaces, models, themes, utilities
packages/cli @qodalis/cli: the engine and built-in commands
packages/angular-cli, react-cli, vue-cli, electron-cli Framework wrappers
packages/create-cli-plugin Plugin scaffolder
packages/plugins/* The 40 plugins
apps/ Docs site and demo apps

CONTRIBUTING.md covers branches and pull requests, DEVELOPER.md the architecture and build details.

License

MIT

Related Packages

@livx.cc/wcli

Extensible web-based terminal/CLI framework with Vue 3, TypeScript, and virtual...

7,826
vue-termui

Build terminal apps with Vue 3

24,392
@wterm/vue

Vue component for wterm — a terminal emulator for the web

5,271 3,511
@vizejs/fresco

Vue TUI framework - Build terminal UIs with Vue.js

71,222 908
vue-command

A fully working, most feature-rich Vue.js terminal emulator

82,254 394

Version History

Pre-releases (23)
Version Released Vue License
2.0.0-rc.2 ^3.3.0 MIT
2.0.0-rc.1 ^3.3.0 MIT
2.0.0-beta.21 ^3.3.0 MIT
2.0.0-beta.20 ^3.3.0 MIT
2.0.0-beta.19 ^3.3.0 MIT