A native Qt6/C++ GUI for kforge — the personal multi-platform Docker image builder powered by BuildKit.
Built by KhmerStack · Made by Ing Muyleang
kforge-studio is a desktop application that wraps the kforge CLI in a polished, Docker Desktop–style GUI. It lets you:
- Launch multiple parallel builds and monitor each one in a live job card (log output, progress bar, cancel button)
- Manage BuildKit builders — create, list, switch, and remove
- Run declarative bake builds from
kforge.hcl/kforge.jsonwith live log streaming - Run the interactive setup wizard for QEMU / native multi-node configuration
- See a session dashboard — running, succeeded, and failed build counts at a glance
| Dashboard | Build Page | Builder Manager |
|---|---|---|
| (screenshot) | (screenshot) | (screenshot) |
kforge-studio/
├── CMakeLists.txt # CMake build (Qt5 & Qt6 compatible)
├── src/
│ ├── main.cpp # QApplication entry point
│ ├── MainWindow.h/.cpp # Root window: dark theme, sidebar, page stack
│ │ # Owns all QProcess jobs, emits jobStatusChanged
│ ├── SidebarWidget.h/.cpp # Left nav: logo, nav buttons, live badges
│ ├── BuildJobWidget.h/.cpp # "Build" page: form + live job cards (JobCardWidget)
│ └── OtherWidgets.h/.cpp # BuilderManagerWidget | BakeWidget
│ # SettingsWidget | DashboardWidget
└── resources/
└── resources.qrc # Icons, fonts (optional)
User fills form → BuildJobWidget::onBuildClicked()
→ MainWindow::launchBuild(BuildJob) // spawns QProcess("kforge", args)
→ QProcess::readyRead → MainWindow::onProcessReadyRead()
→ emit jobLogAppended(id, line)
→ JobCardWidget::appendLog() // appends to terminal view
QProcess::finished → MainWindow::onProcessFinished()
→ emit jobStatusChanged(id, "success"|"failed")
→ JobCardWidget::setStatus() // updates badge + border color
→ QSystemTrayIcon::showMessage() // desktop notification
| Dependency | Version |
|---|---|
| Qt | 5.15+ or 6.x |
| CMake | 3.20+ |
| C++ | 17 |
| kforge | v1.0.0+ in PATH |
# Clone
git clone https://github.com/MuyleangIng/kforge-studio
cd kforge-studio
# Configure
cmake -B build -DCMAKE_BUILD_TYPE=Release
# Build
cmake --build build --parallel
# Run
./build/kforge-studiocmake -B build -GXcode
open build/kforge-studio.xcodeproj
# or command-line:
cmake --build build --config Release
open build/kforge-studio.appcmake -B build -G "Visual Studio 17 2022" -A x64 `
-DCMAKE_PREFIX_PATH="C:\Qt\6.x.x\msvc2022_64"
cmake --build build --config Release
.\build\Release\kforge-studio.exe- Dark-themed Qt main window with sidebar navigation
- Build page — form with tag, context, platforms, flags, progress style
- Multiple parallel builds — each in its own
QProcess, live log card - Job card — status badge (running/success/failed/cancelled), log toggle, cancel button
- Builder Manager — table view, create/use/remove builders
- Bake page — run
kforge bakewith file picker, --set, env vars - Settings — kforge binary path, default progress/platform, setup wizard launcher
- Dashboard — stat cards (total/running/success/failed), recent jobs tree
- System tray — minimise to tray, desktop notification on build complete/fail
- Dark GitHub-style theme — full QSS stylesheet
- Persist settings to
QSettings(INI / registry) - Save build history to SQLite via
QtSql - Real-time build log ANSI color rendering (custom
QTextEditrenderer) - Estimated build time from previous runs
- Context-menu on job cards (copy log, open Dockerfile, re-run)
- Drag-and-drop Dockerfile / directory onto the Build page
- Multi-language i18n skeleton (Khmer + English)
- Pull live builder list from
kforge builder ls --json(parse JSON) - Registry browser — login, list tags, pull/delete images
- Image layer inspector — sizes and command per layer
- Build timeline graph (QCustomPlot or QtCharts) — seconds per stage
- Cache hit/miss visualisation
- Export build report as PDF
- SSH remote builder wizard (multi-node)
- Kubernetes builder node provisioning dialog
- Shared builder pool — store endpoints in team config file
- Webhook trigger — listen for
git push→ auto-build - Slack / webhook notification on build events
- OS keychain integration for registry credentials (libsecret / macOS Keychain / Windows Credential Store)
- Secret manager — create, list, and revoke
--secretsources - SBOM (Software Bill of Materials) viewer from
kforge sbomoutput - Vulnerability scan results panel (Trivy integration)
- Containers tab — list, start, stop, exec into running containers
- Images tab — local image list, inspect, tag, push, delete
- Volumes & Networks management
- Docker Compose runner — parse
docker-compose.yml, start/stop stacks - System resource monitor (CPU, memory, disk via Docker API)
- Plugin system — load kforge-studio extensions from
.so/.dll
PRs welcome! Please open an issue first for large features.
# Format code
clang-format -i src/*.cpp src/*.h
# Build in Debug mode
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build --parallelMIT © 2025 Ing Muyleang / KhmerStack