A Terminal User Interface (TUI) for managing GitLab runners on Debian hosts. This tool provides an interactive way to monitor runners, view logs, and update configurations.
- Runner Management: View all configured GitLab runners with their status
- Log Viewer: Real-time log viewing with filtering and auto-scroll
- Job History: View recent job runs with runner information, status, and duration
- Configuration Editor: Update runner concurrency, limits, and other settings
- System Monitor: View service status, CPU/memory usage, and restart services
- Debug Mode: Enable verbose logging for troubleshooting
- Keyboard Navigation: Easy tab-based navigation between views
- Go 1.19 or higher
- GitLab Runner installed on the system
- Appropriate permissions to:
- Read GitLab Runner configuration files
- Execute
gitlab-runnercommands - Access system services (systemctl/service)
- Read system logs (journalctl)
# Download and install latest release
curl -sSL https://raw.githubusercontent.com/larkinwc/gitlab-runner-tui/main/install.sh | bash
# Or with wget
wget -qO- https://raw.githubusercontent.com/larkinwc/gitlab-runner-tui/main/install.sh | bashDownload the latest release for your platform from the releases page.
# Example for Linux x64
curl -L https://github.com/larkinwc/gitlab-runner-tui/releases/latest/download/gitlab-runner-tui_Linux_x86_64.tar.gz | tar xz
sudo mv gitlab-runner-tui /usr/local/bin/# Clone the repository
git clone https://github.com/larkinwc/gitlab-runner-tui
cd gitlab-runner-tui
# Build the binary
go build -o gitlab-runner-tui cmd/gitlab-runner-tui/main.go
# Optional: Install to system path
sudo cp gitlab-runner-tui /usr/local/bin/# Run with default config path (/etc/gitlab-runner/config.toml)
gitlab-runner-tui
# Run with custom config path
gitlab-runner-tui -config /path/to/config.toml
# Run in debug mode for verbose logging
gitlab-runner-tui -debug
# Show help and default paths
gitlab-runner-tui -help
# If running without sudo, it will check ~/.gitlab-runner/config.tomlThe tool checks for configuration files in this order:
/etc/gitlab-runner/config.toml(system-wide)~/.gitlab-runner/config.toml(user-specific)
You can override with the -config flag.
Tab/Shift+Tab: Navigate between tabs1-5: Jump to specific tab (Runners, Logs, Config, System, History)q: Quit (or go back from logs view)Ctrl+C: Force quit
↑/↓: Navigate runner listEnter: View logs for selected runnerr: Refresh runner list
↑/↓/PgUp/PgDn: Scroll logsg/G: Go to top/bottoma: Toggle auto-scrollc: Clear logsr: Refresh logs
Tab: Navigate between fieldsCtrl+S: Save configurationr: Edit runner-specific settings↑/↓: Select different runner (in runner edit mode)Esc: Exit runner edit mode
r: Refresh system statuss: Restart GitLab Runner service
r: Refresh job history↑/↓: Navigate job list
The tool reads and modifies the standard GitLab Runner configuration file (usually /etc/gitlab-runner/config.toml).
Global:
- Concurrent job limit
- Check interval
- Log level
Per-Runner:
- Job limit
- Max concurrent builds
- Tags
- Run untagged jobs
- Locked status
- The tool requires read/write access to the GitLab Runner configuration
- Service management commands may require sudo privileges
- Runner tokens are displayed but can be masked in future versions
# Get dependencies
go mod download
# Build
make build
# Install locally
make install# Run all tests
make test
# Run tests with coverage report
make test-coverage
# View coverage in browser
open coverage.html
# Run tests with race detection (recommended)
go test -race ./...
# Generate local coverage badge
./scripts/coverage-badge.sh- Current coverage: ~22.3%
- Target coverage: 70%
- Critical paths covered: Terminal size handling, config validation, runner parsing
The project uses both Codecov and Coveralls for tracking test coverage over time. Coverage reports are automatically generated on each push to the main branch.
# Run linter
make lint
# Format code
go fmt ./...
# Run security scan
gosec ./...- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Write tests for your changes
- Ensure all tests pass (
make test) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT License - See LICENSE file for details
Contributions are welcome! Please feel free to submit a Pull Request.