An open API service indexing awesome lists of open source software.

https://github.com/vnknowledge2014/colima-ui

A modern, feature-rich desktop & web GUI for Colima β€” manage Docker containers, Kubernetes clusters, Linux VMs with AI-powered diagnostics
https://github.com/vnknowledge2014/colima-ui

ai-diagnostics colima container-management desktop-app docker docker-gui gui kubernetes lima linux macos react rust tauri

Last synced: about 1 month ago
JSON representation

A modern, feature-rich desktop & web GUI for Colima β€” manage Docker containers, Kubernetes clusters, Linux VMs with AI-powered diagnostics

Awesome Lists containing this project

README

          


ColimaUI

ColimaUI


A modern, feature-rich desktop & web GUI for Colima β€” manage Docker containers, Kubernetes clusters, Linux VMs, and more from a beautiful dark-themed interface.


Latest Release
CI
Release
Tauri v2
React 19
Rust
macOS & Linux
License

---

## πŸ“₯ Download

Grab the latest release for your platform from [**GitHub Releases**](https://github.com/vnknowledge2014/colima-ui/releases/latest):

| Platform | File | Architecture |
|----------|------|--------------|
| **macOS** (Apple Silicon) | `ColimaUI_*_aarch64.dmg` | M1 / M2 / M3 / M4 |
| **macOS** (Intel) | `ColimaUI_*_x64.dmg` | x86_64 |
| **Linux** (Debian/Ubuntu) | `ColimaUI_*_amd64.deb` | x86_64 |
| **Linux** (Universal) | `ColimaUI_*_amd64.AppImage` | x86_64 |

> **Browser mode:** After launching the app, access the full web UI at `http://127.0.0.1:11420` from any browser.

---

## ✨ Features

### 🐳 Docker Management
- **Containers** β€” List, start, stop, restart, pause, unpause, remove, rename. View logs, inspect details, see real-time stats (CPU/Memory/Network/IO), run new containers with full configuration
- **Images** β€” Pull, remove, prune unused, inspect, tag. Batch operations supported
- **Volumes** β€” Create, inspect, remove, prune. View mount details and usage
- **Networks** β€” Create (bridge/overlay/macvlan/host), inspect, remove, prune
- **Docker Compose** β€” List projects, view services, restart/stop projects, view logs

### ☸️ Kubernetes
- **Multi-resource browser** β€” Pods, Deployments, Services, ConfigMaps, Secrets, StatefulSets, DaemonSets, Jobs, CronJobs, Ingresses, PVCs, Namespaces, Nodes, Events
- **Custom Resource Definitions (CRDs)** β€” Discover and browse custom resources dynamically in the sidebar
- **Resource actions** β€” Describe, view/edit YAML, view logs (with container selection), delete, restart, scale replicas
- **Real-time log streaming** β€” Follow pod logs via SSE with auto-scroll toggle
- **HTTP Benchmark** β€” Benchmark Kubernetes services with configurable concurrency, request count, and latency statistics (p50/p95/p99)
- **Port forwarding** β€” Create and manage port forwards to services and pods
- **Exec** β€” Shell into pod containers
- **Cluster health** β€” Health scan dashboard with node status, resource pressure, component health
- **Context switching** β€” Switch between multiple Kubernetes contexts
- **Kind clusters** β€” Create and manage [Kind](https://kind.sigs.k8s.io/) clusters

### πŸ–₯️ Linux VMs (Lima)
- Create VMs from templates with custom CPU, memory, and disk settings
- Start, stop, delete VMs
- Shell into VMs directly

### πŸ€– AI Features
- **Dockerfile Generator** β€” Choose from templates (Node.js, Python, Go, Rust, Java, Ruby, .NET) and edit interactively
- **AI Chat** β€” Chat with AI to generate/optimize Dockerfiles. Supports multiple providers:
- Anthropic (Claude)
- OpenAI (GPT)
- Google (Gemini)
- Ollama (local models)
- OpenRouter, Groq, Together AI, Mistral, DeepSeek, and more
- **AI Models** β€” Pull, delete, and serve Ollama models directly

### πŸ”¬ AI Diagnostic Agent
- **Self-learning diagnostic AI** β€” Expert-level troubleshooting for Colima/Lima/Docker/Kubernetes errors
- **5-tool agent loop** β€” Web search, page fetch, diagnostic log collection, safe command execution, and user-approved command execution
- **Knowledge Bank (SQLite)** β€” 22+ builtin solutions for common Colima/Lima errors, user-contributed fixes via like/dislike feedback
- **Like/Dislike feedback** β€” πŸ‘ saves a working fix to the knowledge bank for future reuse; πŸ‘Ž marks it as an anti-pattern so the AI avoids it
- **Command Sandbox** β€” AI can execute safe read-only diagnostic commands (e.g., `ps`, `docker ps`, `cat logs`) automatically, and request user approval for state-changing commands (e.g., `colima stop --force`, `pkill`)
- **3-tier safety system** β€” Safe (auto-run), Approve (user click), Banned (rejected at Rust level). Prevents destructive commands (`rm`, `sudo`, `eval`, etc.) even if AI hallucinates
- **SearXNG / DuckDuckGo integration** β€” Multi-engine web search fallback for researching unknown errors
- **Deep diagnostics** β€” Reads Lima VM logs (`ha.stderr.log`, `serial.log`), detects zombie processes, inspects stale lock/PID/socket files

### πŸ“Š Dashboard
- System overview with running/stopped instance counts, total CPU/memory allocation
- Docker resource counts (containers, images, volumes, networks, compose projects)
- Kubernetes status (connection, pod/namespace counts, Kind clusters)
- Linux VM status (total/running counts)
- Clickable cards for quick navigation

### πŸ”§ Additional Features
- **Terminal** β€” Integrated xterm.js terminal with SSH into Colima instances or Lima VMs
- **Instance Management** β€” Create/start/stop/delete Colima instances with full configuration (runtime, CPU, memory, disk, VM type, architecture, mounts, DNS, K3s)
- **Setup Wizard** β€” First-run guided setup for installing dependencies
- **Getting Started Tour** β€” Interactive walkthrough for new users
- **Global Toast Notifications** β€” Persistent notifications across tab switches for long-running operations
- **System Settings** β€” View installed dependencies, disk usage, system prune
- **Context Menus** β€” Right-click context menus on containers, images, volumes, and networks
- **Keyboard Shortcuts** β€” Hotkeys for common actions (search, refresh, navigation)
- **Persistent AI Memory** β€” SQLite-backed knowledge bank at `~/.colima-ui/knowledge.db` that learns from user feedback across sessions

---

## πŸ—οΈ Architecture

ColimaUI uses a **dual-mode, event-driven architecture** that works as both a native desktop app and a web application:

```mermaid
graph TD
subgraph Frontend["Frontend β€” React 19 + TypeScript + Vite 7"]
APP["App.tsx"]
PAGES["Pages (13 lazy-loaded)"]
STORE["Jotai Atoms (store/)"]
LIB["Lib (api.ts)"]
COMP["Components (5)"]
end

APP & PAGES & COMP --> LIB
APP --> STORE

subgraph API["Dual-Mode API Layer"]
TAURI_IPC["Tauri IPC (invoke)"]
HTTP["Axum HTTP (:11420)"]
end

LIB -->|"Desktop"| TAURI_IPC
LIB -->|"Browser"| HTTP

subgraph Events["Real-time Updates"]
TAURI_EVT["Tauri Events (push)"]
SSE["SSE /api/events (push)"]
POLL["HTTP Polling (fallback)"]
end

TAURI_EVT -->|"Desktop"| STORE
SSE -->|"Browser"| STORE
POLL -->|"SSE unavailable"| STORE

subgraph Backend["Backend β€” Rust"]
CMD["Command Handlers"]
BROADCAST["tokio::broadcast"]
WATCHER["Docker Event Watcher"]
end

TAURI_IPC --> CMD
HTTP --> CMD
WATCHER --> BROADCAST
BROADCAST --> SSE
BROADCAST --> TAURI_EVT

subgraph CLI["CLI Tools"]
COLIMA["colima"]
DOCKER["docker"]
KUBECTL["kubectl"]
KIND["kind"]
LIMACTL["limactl"]
OLLAMA["ollama"]
end

CMD --> CLI
```

### Event-Driven Updates

ColimaUI uses a **push-first architecture** for real-time state synchronization:

| Mode | Mechanism | Fallback |
|------|-----------|----------|
| **Desktop (Tauri)** | Tauri IPC events (`instances-update`, `docker-state-updated`) | β€” |
| **Browser (SSE available)** | `EventSource` β†’ `/api/events` | β€” |
| **Browser (SSE unavailable)** | Automatic HTTP polling (3–5s intervals) | Graceful degradation |

### Frontend (`src/`)

| Directory | Contents |
|-----------|----------|
| `pages/` | 13 lazy-loaded page components (Dashboard, Instances, Containers, Images, Volumes, Networks, Compose, Kubernetes, LinuxVMs, Models, DockerfileGen, Terminal, Settings) |
| `components/` | Shared components (ConfirmDialog, ContextMenu, SetupWizard, GettingStartedTour, AiChatBubble, Icons) |
| `store/` | Jotai atomic state β€” `dockerAtom.ts`, `resourceAtom.ts`, `dashboardAtom.ts`, `k8sAtom.ts` |
| `hooks/` | Custom hooks β€” `useHotkeys.ts` |
| `lib/` | API layer (`api.ts`) with dual-mode Tauri/HTTP support, global toast (`globalToast.ts`), display formatters (`formatters.ts`) |
| `assets/` | Static assets |

### Backend (`src-tauri/`)

| File | Purpose |
|------|---------|
| `lib.rs` | Tauri app setup, plugin registration, IPC command handlers |
| `api_server.rs` | Axum HTTP API server (port 11420) with SSE `/api/events` endpoint and Docker event watcher |
| `docker_state.rs` | Bollard Docker event stream for real-time push updates (container/image state changes) |
| `commands/` | Modular CLI-based command handlers: `colima`, `docker`, `volumes`, `networks`, `compose`, `kubernetes`, `lima`, `models`, `ai_chat`, `searxng`, `knowledge_bank`, `shell_sandbox`, `system` |
| `knowledge_bank.rs` | SQLite knowledge bank β€” builtin solutions, user feedback, anti-pattern tracking |
| `path_util.rs` | macOS PATH fixup for Finder/Dock launches |
| `instance_reader.rs` | Colima instance YAML config parser |
| `terminal_session.rs` | PTY-based terminal session management for xterm.js |
| `poller.rs` | Background instance status poller |

---

## πŸ“¦ Prerequisites

- **[Colima](https://github.com/abiosoft/colima)** β€” Container runtime manager (macOS / Linux)
- **[Docker CLI](https://docs.docker.com/engine/install/)** β€” Container engine client
- **[Lima](https://lima-vm.io/)** β€” Linux VM manager (installed with Colima)
- **[Node.js](https://nodejs.org/) β‰₯ 18** β€” For frontend development
- **[Rust](https://www.rust-lang.org/tools/install)** β€” For Tauri backend
- **[kubectl](https://kubernetes.io/docs/tasks/tools/)** *(optional)* β€” For Kubernetes features
- **[Kind](https://kind.sigs.k8s.io/)** *(optional)* β€” For Kind cluster management
- **[Ollama](https://ollama.ai/)** *(optional)* β€” For local AI model management

> **Note:** The desktop app (Tauri) runs on **macOS and Linux**. The web mode runs on any platform with a modern browser.

---

## πŸš€ Getting Started

### 1. Clone the repository

```bash
git clone https://github.com/vnknowledge2014/colima-ui.git
cd colima-ui
```

### 2. Install dependencies

```bash
npm install
```

### 3. Run in development mode

#### Desktop App (Tauri)

```bash
npm run tauri dev
```

This starts both the Vite dev server (port 1420) and the Tauri native window.

#### Web-only (Browser)

```bash
npm run dev
```

Then open `http://localhost:1420` in your browser. The app will use HTTP API on port 11420 (requires the Tauri backend to be running, or a standalone API server).

### 4. Build for production

#### Desktop App

```bash
npm run tauri build
```

Produces a native `.app` bundle in `src-tauri/target/release/bundle/`.

#### Web-only

```bash
npm run build
```

Output goes to `dist/`.

---

## πŸ› οΈ Tech Stack

| Layer | Technology | Version |
|-------|-----------|---------|
| **Frontend** | React | 19.1 |
| **State Management** | Jotai | 2.x |
| **Language** | TypeScript | 5.8 |
| **Bundler** | Vite | 7.x |
| **Desktop** | Tauri | 2.x |
| **Backend** | Rust (Edition 2021) | β€” |
| **HTTP Server** | Axum | 0.8 |
| **Docker Client** | Bollard | β€” |
| **Terminal** | xterm.js | 6.0 |
| **Virtualization** | @tanstack/react-virtual | 3.x |
| **Styling** | Vanilla CSS (dark theme) | β€” |

### Key Dependencies

**Frontend:**
- `jotai` β€” Atomic state management for Docker/K8s resource caching
- `@tauri-apps/api` β€” Tauri IPC bridge
- `@tauri-apps/plugin-shell` β€” Shell command execution
- `@xterm/xterm` + `@xterm/addon-fit` + `@xterm/addon-web-links` β€” Terminal emulation
- `@tanstack/react-virtual` β€” Virtualized scrolling for large container/image lists

**Backend (Rust):**
- `tauri` (with `tray-icon` feature) β€” Desktop framework
- `axum` + `tower-http` (CORS) β€” HTTP API server with SSE support
- `bollard` β€” Native Docker API client for event streaming
- `tokio` (broadcast channels) β€” Async runtime with pub/sub for SSE
- `async-stream` β€” Async stream helpers for SSE log streaming
- `reqwest` β€” HTTP client for benchmark tool and web search
- `rusqlite` (bundled) β€” SQLite knowledge bank for AI diagnostic memory
- `regex-lite` β€” Lightweight regex for error pattern matching
- `scraper` + `html2md` β€” HTML parsing and markdown conversion for web search
- `serde` + `serde_json` + `serde_yaml` β€” Serialization
- `tauri-plugin-shell` β€” Shell command execution from Tauri

---

## πŸ“ Project Structure

```
colima-ui/
β”œβ”€β”€ src/ # Frontend source
β”‚ β”œβ”€β”€ App.tsx # Main app shell, SSE/event listeners, sidebar
β”‚ β”œβ”€β”€ main.tsx # React entry point
β”‚ β”œβ”€β”€ index.css # Global styles (dark theme, animations)
β”‚ β”œβ”€β”€ pages/ # Page components (lazy-loaded)
β”‚ β”‚ β”œβ”€β”€ Dashboard.tsx # System overview & resource counts
β”‚ β”‚ β”œβ”€β”€ Instances.tsx # Colima instance & Kind cluster management
β”‚ β”‚ β”œβ”€β”€ Containers.tsx # Docker container management (virtual scroll)
β”‚ β”‚ β”œβ”€β”€ Images.tsx # Docker image management
β”‚ β”‚ β”œβ”€β”€ Volumes.tsx # Docker volume management
β”‚ β”‚ β”œβ”€β”€ Networks.tsx # Docker network management
β”‚ β”‚ β”œβ”€β”€ Compose.tsx # Docker Compose project management
β”‚ β”‚ β”œβ”€β”€ Kubernetes.tsx # Kubernetes resource browser & actions
β”‚ β”‚ β”œβ”€β”€ LinuxVMs.tsx # Lima VM management
β”‚ β”‚ β”œβ”€β”€ Models.tsx # Ollama AI model management
β”‚ β”‚ β”œβ”€β”€ DockerfileGen.tsx # AI-powered Dockerfile generator
β”‚ β”‚ β”œβ”€β”€ Terminal.tsx # Integrated terminal (xterm.js)
β”‚ β”‚ └── Settings.tsx # System info, disk usage, prune
β”‚ β”œβ”€β”€ store/ # Jotai atomic state management
β”‚ β”‚ β”œβ”€β”€ dockerAtom.ts # Container & image state atoms
β”‚ β”‚ β”œβ”€β”€ resourceAtom.ts # Volume & network state atoms
β”‚ β”‚ β”œβ”€β”€ dashboardAtom.ts # Dashboard cached state
β”‚ β”‚ └── k8sAtom.ts # Kubernetes resource state
β”‚ β”œβ”€β”€ hooks/ # Custom React hooks
β”‚ β”‚ └── useHotkeys.ts # Keyboard shortcut manager
β”‚ β”œβ”€β”€ components/ # Shared components
β”‚ β”‚ β”œβ”€β”€ ConfirmDialog.tsx # Reusable confirmation dialog
β”‚ β”‚ β”œβ”€β”€ ContextMenu.tsx # Right-click context menus
β”‚ β”‚ β”œβ”€β”€ SetupWizard.tsx # First-run setup wizard
β”‚ β”‚ β”œβ”€β”€ GettingStartedTour.tsx # Interactive tour
β”‚ β”‚ β”œβ”€β”€ AiChatBubble.tsx # AI diagnostic agent (chat, tools, feedback)
β”‚ β”‚ └── Icons.tsx # SVG icon components
β”‚ └── lib/ # Utilities
β”‚ β”œβ”€β”€ api.ts # Dual-mode API layer (Tauri IPC / HTTP)
β”‚ └── globalToast.ts # Global toast notification system
β”œβ”€β”€ src-tauri/ # Tauri backend (Rust)
β”‚ β”œβ”€β”€ src/
β”‚ β”‚ β”œβ”€β”€ lib.rs # App setup & command registration
β”‚ β”‚ β”œβ”€β”€ main.rs # Entry point
β”‚ β”‚ β”œβ”€β”€ api_server.rs # Axum HTTP API (port 11420)
β”‚ β”‚ β”œβ”€β”€ commands/ # Modular command handlers
β”‚ β”‚ β”‚ β”œβ”€β”€ colima.rs # Colima instance management + diagnostics
β”‚ β”‚ β”‚ β”œβ”€β”€ docker.rs # Docker operations (all via Docker CLI)
β”‚ β”‚ β”‚ β”œβ”€β”€ kubernetes.rs # Kubernetes resource management
β”‚ β”‚ β”‚ β”œβ”€β”€ knowledge_bank.rs # SQLite AI knowledge bank
β”‚ β”‚ β”‚ β”œβ”€β”€ shell_sandbox.rs # 3-tier command execution sandbox
β”‚ β”‚ β”‚ β”œβ”€β”€ searxng.rs # SearXNG/DuckDuckGo web search
β”‚ β”‚ β”‚ └── ... # volumes, networks, compose, lima, models, ai_chat, system
β”‚ β”‚ β”œβ”€β”€ instance_reader.rs # Colima config parser
β”‚ β”‚ β”œβ”€β”€ terminal_session.rs # PTY terminal management
β”‚ β”‚ β”œβ”€β”€ poller.rs # Background status polling
β”‚ β”‚ └── path_util.rs # macOS PATH fixup
β”‚ β”œβ”€β”€ tauri.conf.json # Tauri configuration
β”‚ β”œβ”€β”€ Cargo.toml # Rust dependencies
β”‚ └── icons/ # App icons
β”œβ”€β”€ package.json # Node.js dependencies & scripts
β”œβ”€β”€ vite.config.ts # Vite configuration (port 1420)
β”œβ”€β”€ tsconfig.json # TypeScript configuration
└── index.html # HTML entry point
```

---

## 🎨 Design

ColimaUI features a premium **dark theme** with:
- Glassmorphism effects and subtle transparency
- Smooth micro-animations and transitions
- Custom CSS variables for consistent theming
- Responsive layout with collapsible sidebar
- macOS-native title bar integration (overlay style)
- Global toast notifications with slide-in animation

## ⚑ Performance

- **Code Splitting** β€” All 13 pages lazy-loaded via `React.lazy` + `Suspense`
- **Vendor Chunk Splitting** β€” Separate bundles for React, xterm, Tauri, and Jotai
- **Virtual Scrolling** β€” `@tanstack/react-virtual` for large container/image lists
- **Deferred Search** β€” `useDeferredValue` for non-blocking search filtering
- **Event-Driven Updates** β€” SSE push replaces polling; zero overhead when idle
- **Graceful Degradation** β€” Automatic HTTP polling fallback when SSE unavailable

---

## πŸ“ Scripts

| Command | Description |
|---------|-------------|
| `npm run dev` | Start Vite dev server (port 1420) |
| `npm run build` | TypeScript check + Vite production build |
| `npm run preview` | Preview production build |
| `npm run tauri dev` | Start Tauri desktop app in dev mode |
| `npm run tauri build` | Build Tauri desktop app for production |

---

## πŸ”„ CI/CD & Releases

This project uses **GitHub Actions** for automated CI and releases:

- **CI** (`.github/workflows/ci.yml`) β€” Runs on every push/PR:
- TypeScript type checking
- Rust `cargo check` + `cargo clippy` (macOS ARM64, macOS x86, Linux)
- Frontend build validation

- **Release** (`.github/workflows/release.yml`) β€” Triggered by version tags (`v*`):
- Builds DMG for macOS (ARM64 + x86)
- Builds `.deb` + `.AppImage` for Linux
- Auto-creates GitHub Release with all assets
- Auto-syncs version across `package.json`, `Cargo.toml`, `tauri.conf.json`

### Creating a Release

```bash
# Bump version, commit, tag, and push (triggers CI + Release build)
./scripts/release.sh patch # 0.1.1 β†’ 0.1.2
./scripts/release.sh minor # 0.1.1 β†’ 0.2.0
./scripts/release.sh major # 0.1.1 β†’ 1.0.0
./scripts/release.sh 2.0.0 # explicit version
```

The script automatically:
1. Updates version in all 3 config files
2. Creates an atomic commit + signed tag
3. Pushes to GitHub β†’ triggers release workflow
4. GitHub Actions builds all platforms and creates a GitHub Release

---

## 🀝 Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'feat: add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

Please follow [Conventional Commits](https://www.conventionalcommits.org/) for commit messages.

---

## πŸ“„ License

MIT License. This project is part of the [Colima](https://github.com/abiosoft/colima) ecosystem.

---


Built with ❀️ using Tauri, React, and Rust