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.
- 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
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)
Quick install (downloads vestacp-tui and belljard):
curl -fsSL https://raw.githubusercontent.com/outroll/vestacp-tui/main/dist/install.sh | shFrom source:
git clone https://github.com/outroll/vestacp-tui.git
cd vestacp-tui
cargo build --release./target/release/vestacp-tuiNavigation:
- 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.
We welcome contributions! Whether you're fixing bugs, adding features, improving documentation, or enhancing the UI/UX, your help is appreciated.
Before contributing:
- Read CONTRIBUTING.md for workflow and standards
- Open an issue to discuss your proposed changes
- Wait for maintainer feedback before starting implementation
Key requirements:
- Run
cargo fmtandcargo clippy --all-targetsbefore 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.
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.
# rust-toolchain.toml configures the correct Rust version automatically
cargo build
cargo test
cargo runnix develop # Enter devshell with pinned dependencies
cargo buildcargo fmt # Format code (mandatory)
cargo clippy --all-targets # Lint (mandatory)
cargo clippy --fix --all-targets # Auto-fix lints
cargo test # Run testsBusiness 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.
- Issues: GitHub Issues
- Discussions: GitHub Discussions (if enabled)
- Documentation: See CONTRIBUTING.md and inline code documentation
