Skip to content

outroll/vestacp-tui

Repository files navigation

vestacp-tui

A modern terminal user interface (TUI) for managing Incus containers. Built with Rust for speed and minimal system dependencies, vestacp-tui provides an intuitive interface for container lifecycle management, project organization, and configuration.

vestacp-tui in usage

Features

  • Interactive TUI: Navigate projects and containers with an intuitive split-pane interface
  • Project Organization: Group and manage containers by project
  • Container Management: Create, start, stop, and configure Incus containers
  • YAML Configuration: Pass custom YAML configs for advanced container setup
  • Minimal Dependencies: Requires only Rust and Incus runtime
  • Fast & Lightweight: Built in Rust with performance in mind

Quick Start

Prerequisites

Runtime requirements (minimal by design):

  • Incus runtime
  • Linux system with terminal

Development requirements:

  • Rust (stable) - managed via rust-toolchain.toml
  • Incus runtime for testing
  • Optional: Nix with flakes (for reproducible dev environment)

Installation

Quick install (downloads vestacp-tui and belljard):

curl -fsSL https://raw.githubusercontent.com/outroll/vestacp-tui/main/dist/install.sh | sh

From source:

git clone https://github.com/outroll/vestacp-tui.git
cd vestacp-tui
cargo build --release

Running

./target/release/vestacp-tui

Navigation:

  • Arrow keys: Navigate interface
  • q: Quit application
  • See in-app help for additional keybindings

All container and project management is performed via the interactive UI. There are no command-line parameters.

Contributing

We welcome contributions! Whether you're fixing bugs, adding features, improving documentation, or enhancing the UI/UX, your help is appreciated.

Before contributing:

  1. Read CONTRIBUTING.md for workflow and standards
  2. Open an issue to discuss your proposed changes
  3. Wait for maintainer feedback before starting implementation

Key requirements:

  • Run cargo fmt and cargo clippy --all-targets before submitting
  • Follow our code quality standards (no .unwrap(), comprehensive docs)
  • Add tests for new functionality
  • Follow Conventional Commits for messages

See CONTRIBUTING.md for complete guidelines.

Architecture

vestacp-tui is structured as a TUI application built on:

  • ratatui: Terminal UI framework
  • tokio: Async runtime for non-blocking operations
  • reqwest: HTTP client for Incus REST API communication
  • serde: Configuration and state serialization

The application maintains a clean separation between UI components, business logic, and Incus API integration.

Development

Standard Setup

# rust-toolchain.toml configures the correct Rust version automatically
cargo build
cargo test
cargo run

With Nix (optional)

nix develop  # Enter devshell with pinned dependencies
cargo build

Code Quality

cargo fmt                        # Format code (mandatory)
cargo clippy --all-targets       # Lint (mandatory)
cargo clippy --fix --all-targets # Auto-fix lints
cargo test                       # Run tests

License

Business Source License 1.1 (BSL-1.1)

This project uses the Business Source License 1.1. See LICENSE for full terms.

In summary: The source code is available for review, modification, and non-production use. Production use requires a commercial license or is permitted after the Change Date specified in the license.

Support

About

VestaCP-Lite repository

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •