Complete guide to using the OMNI-GRC Terminal User Interface (TUI) for interactive GRC management from the command line.
The OMNI-GRC TUI provides a full-featured, interactive terminal interface for managing governance, risk, and compliance operations. It’s perfect for:
✅ 8 Interactive Views:
✅ Real-time Updates: Auto-refresh with configurable intervals
✅ Rich Visualizations: Charts, tables, and progress bars
✅ Full Keyboard Navigation: Vim-style key bindings supported
✅ Color-Coded Interface: Severity levels and status indicators
✅ Search and Filter: Quick access to specific items
✅ Detail Panels: Expandable item details
# From project directory
npm run tui
# Or using CLI
npm run cli -- tui
# With auto-refresh (every 30 seconds)
npm run cli -- tui --refresh 30
# In quiet mode (no startup messages)
npm run cli -- tui --quiet
| Option | Description |
|---|---|
--refresh <seconds> |
Auto-refresh interval (default: disabled) |
-q, --quiet |
Suppress startup messages |
--no-color |
Disable colors (for accessibility) |
--api-url <url> |
Override API endpoint |
When you launch the TUI, you’ll see:
╔══════════════════════════════════════════════════════════════════╗
║ OMNI-GRC - One Platform. All Compliance. ║
╚══════════════════════════════════════════════════════════════════╝
1:Dashboard │ 2:Findings │ 3:Compliance │ 4:Scans │ 5:Assets │ 6:Risks │ 7:Alerts │ ?:Help
[1-8] Switch Views [Tab] Next View [r] Refresh [q] Quit [?] Help
| Method | Action |
|---|---|
| Number Keys (1-8) | Jump directly to a view |
| Tab | Next view (circular) |
| Shift+Tab | Previous view |
| ? | Help view |
Example:
1 → Dashboard2 → Findings3 → Compliance? → Help| Key | Action |
|---|---|
| ↑ or k | Move up in list |
| ↓ or j | Move down in list |
| Page Up | Scroll up one page |
| Page Down | Scroll down one page |
| Home or g | Jump to top |
| End or G | Jump to bottom |
| Enter | Select item / Show details |
| Key | Action |
|---|---|
| r | Refresh current view |
| q | Quit TUI |
| Esc | Close detail panel / Go back |
| / | Search (where available) |
| f | Filter (where available) |
| s | Sort (where available) |
| ? | Show help |
The Dashboard provides an overview of your security and compliance posture.
Press 1 to access
Top Section - Key Metrics:
╔══════════════════════════════════════════════════════════════╗
║ Overall Compliance: 72% ████████▒▒ [+5% from last month] ║
║ Open Findings: 47 [12 resolved this week] ║
║ Critical Vulns: 3 ⚠️ [Requires immediate attention] ║
║ Scans Today: 8 [Next scan in 2 hours] ║
╚══════════════════════════════════════════════════════════════╝
Framework Compliance Section:
┌─ Framework Compliance ────────────────────────────────────┐
│ SOC 2 Type II 78% ████████▒▒ 50/64 controls │
│ ISO 27001:2022 65% ██████▒▒▒▒ 60/93 controls │
│ HIPAA 82% ████████▒▒ 37/45 controls │
│ PCI-DSS 4.0 45% ████▒▒▒▒▒▒ 35/78 controls │
└───────────────────────────────────────────────────────────┘
Recent Activity Feed:
┌─ Recent Activity ─────────────────────────────────────────┐
│ ⬤ Trivy scan completed: 12 findings (2 mins ago) │
│ ⬤ User john@company.com logged in (5 mins ago) │
│ ⬤ Risk "Data Breach" updated to CRITICAL (15 mins ago) │
│ ⬤ Report generated: Executive Summary (1 hour ago) │
└───────────────────────────────────────────────────────────┘
Manage and track security findings from all scanners.
Press 2 to access
┌─ Security Findings (47 total, 3 critical) ────────────────┐
│ Severity │ Finding │ Target │ Status│
├──────────┼────────────────────────────┼───────────┼───────┤
│ CRITICAL │ CVE-2024-1234: OpenSSL RCE │ api-server│ OPEN │
│ CRITICAL │ SQL Injection in Auth │ web-app │ OPEN │
│ CRITICAL │ Exposed AWS Credentials │ repo-main │ OPEN │
│ HIGH │ S3 Bucket Public Access │ prod-data │ IN_PROGRESS
│ HIGH │ Weak TLS Configuration │ loadbal │ OPEN │
│ MEDIUM │ Outdated Dependencies │ api-server│ OPEN │
│ MEDIUM │ Missing CSP Headers │ web-app │ RESOLVED
│ LOW │ Weak Password Policy │ AD-server │ OPEN │
└──────────┴────────────────────────────┴───────────┴───────┘
When you press Enter on a finding:
╔══════════════════════════════════════════════════════════════╗
║ Finding Details ║
╠══════════════════════════════════════════════════════════════╣
║ Title: CVE-2024-1234: OpenSSL Remote Code Execution ║
║ Severity: CRITICAL ║
║ Status: OPEN ║
║ Target: api-server:latest ║
║ Scanner: Trivy ║
║ First Seen: 2024-12-28 10:30:00 ║
║ ║
║ Description: ║
║ A critical vulnerability in OpenSSL allows remote code ║
║ execution through a buffer overflow in the TLS handshake... ║
║ ║
║ Remediation: ║
║ Update OpenSSL to version 3.0.8 or later ║
║ Command: apt-get update && apt-get install openssl ║
║ ║
║ CVE Link: https://cve.mitre.org/cgi-bin/cvename.cgi?... ║
║ ║
║ [Esc] Close [m] Mark as resolved [a] AI Analysis ║
╚══════════════════════════════════════════════════════════════╝
View compliance status across all frameworks.
Press 3 to access
┌─ Compliance Frameworks ───────────────────────────────────┐
│ Framework │ Score │ Controls │ Status │
├────────────────────┼───────┼───────────────┼─────────────┤
│ ▸ SOC 2 Type II │ 78% │ 50/64 (78%) │ 🟢 On Track │
│ ISO 27001:2022 │ 65% │ 60/93 (65%) │ 🟡 Review │
│ HIPAA │ 82% │ 37/45 (82%) │ 🟢 Good │
│ PCI-DSS 4.0 │ 45% │ 35/78 (45%) │ 🔴 At Risk │
│ NIST CSF 2.0 │ 70% │ 56/80 (70%) │ 🟢 On Track │
│ GDPR │ 55% │ 44/80 (55%) │ 🟡 Review │
│ FedRAMP Rev 5 │ 60% │ 48/80 (60%) │ 🟡 Review │
│ CMMC 2.0 L2 │ 68% │ 54/80 (68%) │ 🟢 On Track │
└────────────────────┴───────┴───────────────┴─────────────┘
┌─ SOC 2 Type II Controls ──────────────────────────────────┐
│ ID │ Title │ Status │ Auto │
├───────┼──────────────────────────────┼─────────────┼──────┤
│ CC1.1 │ Control Environment │ ✓ Implemented│ Part │
│ CC1.2 │ Board Independence │ ⚠ In Progress│ Man │
│ CC2.1 │ Information Communication │ ✓ Implemented│ Part │
│ CC3.1 │ Risk Assessment │ ✓ Implemented│ Part │
│ CC4.1 │ Monitoring Activities │ ✓ Implemented│ Full │
│ CC5.1 │ Control Activities │ ⚠ In Progress│ Part │
│ CC6.1 │ Logical Access Controls │ ✓ Implemented│ Full │
│ CC6.2 │ User Authentication │ ✓ Implemented│ Full │
│ CC6.3 │ Access Removal │ ✓ Implemented│ Full │
│ CC7.1 │ Vulnerability Management │ ✓ Implemented│ Full │
│ CC7.2 │ Security Monitoring │ ✓ Implemented│ Full │
│ CC8.1 │ Change Management │ ✗ Not Started│ Part │
└───────┴──────────────────────────────┴─────────────┴──────┘
Monitor and manage security scans.
Press 4 to access
┌─ Recent Scans (15 total, 2 running) ──────────────────────┐
│ Name │ Scanner │ Status │ Findings │ Age│
├─────────────────────┼──────────┼───────────┼──────────┼────┤
│ API Server Scan │ Trivy │ COMPLETED │ 12 │ 2h │
│ AWS Production Scan │ Prowler │ RUNNING │ - │ 5m │
│ Backend Repo Scan │ Semgrep │ COMPLETED │ 5 │ 1d │
│ Secret Scan All │ Gitleaks │ COMPLETED │ 0 │ 1d │
│ Web App DAST │ OWASP ZAP│ PENDING │ - │ 30m│
│ K8s CIS Benchmark │ Kube-bench│FAILED │ - │ 2h │
└─────────────────────┴──────────┴───────────┴──────────┴────┘
┌─ Available Scanners ───────────────────────────────────────┐
│ Scanner │ Category │ Status │ Last Used │
├──────────────┼───────────┼───────────┼────────────────────┤
│ Trivy │ Container │ Available │ 2 hours ago │
│ Prowler │ Cloud │ Available │ Running now │
│ Semgrep │ SAST │ Available │ 1 day ago │
│ Gitleaks │ Secrets │ Available │ 1 day ago │
│ TruffleHog │ Secrets │ Available │ Never │
│ Bandit │ SAST │ Available │ 3 days ago │
│ OWASP ZAP │ DAST │ Available │ Pending │
│ Kube-bench │ K8s │ Error │ 2 hours ago │
└──────────────┴───────────┴───────────┴────────────────────┘
Manage IT asset inventory.
Press 5 to access
┌─ IT Assets (124 total) ────────────────────────────────────┐
│ Name │ Type │ Environment│ Criticality│Owner│
├────────────────┼────────────┼────────────┼────────────┼─────┤
│ api-server-01 │ Server │ Production │ CRITICAL │DevOps
│ db-primary │ Database │ Production │ CRITICAL │DBA │
│ web-frontend │ Application│ Production │ HIGH │FE │
│ jenkins-ci │ Application│ Development│ MEDIUM │DevOps
│ test-db │ Database │ Staging │ LOW │QA │
│ backup-storage │ Storage │ Production │ HIGH │Ops │
│ vpn-gateway │ Network │ Production │ HIGH │NetOps
└────────────────┴────────────┴────────────┴────────────┴─────┘
╔═ Asset Summary ══════════════════════════════════════════╗
║ Total Assets: 124 ║
║ By Type: Servers (45), Databases (12), Apps (38) ║
║ By Env: Production (67), Staging (23), Dev (34) ║
║ By Critical: Critical (15), High (34), Medium (52) ║
╚══════════════════════════════════════════════════════════╝
Manage the risk register with interactive risk matrix.
Press 6 to access
┌─ Risk Register (28 risks, 3 critical) ─────────────────────┐
│ Risk │ Score │ Likelihood│ Impact │ Treatment │
├────────────────────┼───────┼───────────┼────────┼───────────┤
│ Data Breach via API│ 25/25 │ 5-VeryHigh│ 5-Crit │ Mitigate │
│ Ransomware Attack │ 20/25 │ 4-High │ 5-Crit │ Mitigate │
│ Vendor Breach │ 16/25 │ 4-High │ 4-High │ Accept │
│ DDoS Attack │ 12/25 │ 4-High │ 3-Med │ Transfer │
│ Insider Threat │ 12/25 │ 3-Medium │ 4-High │ Mitigate │
│ Physical Break-in │ 6/25 │ 2-Low │ 3-Med │ Accept │
└────────────────────┴───────┴───────────┴────────┴───────────┘
┌─ Risk Matrix (Likelihood × Impact) ────────────────────────┐
│ │ Insignif│ Minor │ Moderate│ Major │ Critical│ │
│─────┼─────────┼────────┼─────────┼────────┼─────────┤ │
│ 5-VH│ 1 │ 2 │ 3 │ 8 │ ◉15 │ │
│ 4-H │ 2 │ 4 │ 5 │ ◉7 │ ◉11 │ │
│ 3-M │ 3 │ 6 │ ◉9 │ 12 │ 14 │ │
│ 2-L │ 1 │ 5 │ 8 │ 10 │ 13 │ │
│ 1-VL│ 2 │ 3 │ 6 │ 9 │ 11 │ │
└─────┴─────────┴────────┴─────────┴────────┴─────────┘ │
◉ = Risk present in cell │ Number = Risk ID │
Manage alert configurations and notification channels.
Press 7 to access
┌─ Alert Configurations (8 total, 6 enabled) ────────────────┐
│ Name │ Type │ Enabled │ Channels│
├────────────────────┼────────────────────┼─────────┼─────────┤
│ Critical Findings │ new_critical_find │ ✓ Yes │ 3 │
│ Compliance Drop │ compliance_thresh │ ✓ Yes │ 2 │
│ Scan Failures │ scan_failed │ ✓ Yes │ 3 │
│ Scan Completed │ scan_completed │ ✗ No │ 1 │
│ Control Status │ control_status_ch │ ✓ Yes │ 2 │
│ Risk Score Change │ risk_score_change │ ✓ Yes │ 2 │
│ Cert Expiry │ certificate_expiry │ ✓ Yes │ 1 │
│ SLA Breach │ sla_breach │ ✗ No │ 2 │
└────────────────────┴────────────────────┴─────────┴─────────┘
╔═ Alert: Critical Findings ════════════════════════════════╗
║ Type: new_critical_finding ║
║ Status: ENABLED ║
║ Created: 2024-12-01 10:00:00 ║
║ ║
║ Channels: ║
║ • Slack: #security-alerts (✓ Enabled) ║
║ • Email: security@company.com (✓ Enabled) ║
║ • PagerDuty: Security Team (✓ Enabled) ║
║ ║
║ Condition: ║
║ Trigger when new finding with severity >= CRITICAL ║
║ ║
║ Recent Alerts: 12 sent in last 7 days ║
║ Last Triggered: 2 hours ago ║
║ ║
║ [Esc] Close [t] Test [e] Edit [d] Delete ║
╚═══════════════════════════════════════════════════════════╝
Quick reference for all keyboard shortcuts and features.
Press ? to access
╔══════════════════════════════════════════════════════════════╗
║ OMNI-GRC TUI Help ║
╠══════════════════════════════════════════════════════════════╣
║ ║
║ NAVIGATION ║
║ 1-8 Switch to view (Dashboard, Findings, etc.) ║
║ Tab Next view ║
║ Shift+Tab Previous view ║
║ ? Show this help ║
║ q Quit TUI ║
║ ║
║ LIST NAVIGATION ║
║ ↑/↓ or j/k Move up/down in lists ║
║ Page Up/Down Scroll one page ║
║ Home/End Jump to top/bottom ║
║ Enter Select item / Show details ║
║ ║
║ ACTIONS ║
║ r Refresh current view ║
║ f Filter items ║
║ s Sort items ║
║ / Search ║
║ n Create new item ║
║ e Edit selected item ║
║ d Delete selected item ║
║ Esc Close panel / Go back ║
║ ║
║ VIEW-SPECIFIC SHORTCUTS ║
║ Dashboard: 1-4 to jump to framework details ║
║ Findings: m to mark as resolved, a for AI analysis ║
║ Scans: c to cancel, t to toggle scanner view ║
║ Risks: m to show risk matrix ║
║ Alerts: t to test alert, Space to toggle enabled ║
║ ║
║ Press any key to continue ║
╚══════════════════════════════════════════════════════════════╝
┌─────────────────────────────────────────────────────────────┐
│ OMNI-GRC TUI Quick Reference │
├─────────────────────────────────────────────────────────────┤
│ GLOBAL │ LIST NAVIGATION │
│ 1-8 Switch views │ ↑/↓ Move up/down │
│ Tab Next view │ j/k Vim-style move │
│ ? Help │ PgUp/Dn Page scroll │
│ q Quit │ Home/End Jump to top/bottom │
│ r Refresh │ Enter Select item │
│ Esc Go back │ Space Toggle/Select │
├─────────────────────────┼────────────────────────────────────┤
│ ACTIONS │ VIEW-SPECIFIC │
│ n New │ Dashboard: 1-4 Frameworks │
│ e Edit │ Findings: m Mark, a AI analyze │
│ d Delete │ Scans: c Cancel, t Scanners │
│ f Filter │ Risks: m Risk matrix │
│ s Sort │ Alerts: t Test alert │
│ / Search │ │
└─────────────────────────┴────────────────────────────────────┘
Configure TUI behavior with environment variables:
# Auto-refresh interval (seconds)
export OMNI_GRC_TUI_REFRESH=30
# Default view on startup
export OMNI_GRC_TUI_DEFAULT_VIEW=dashboard
# Disable colors
export OMNI_GRC_TUI_NO_COLOR=true
# API endpoint
export OMNI_GRC_API_URL=https://grc.company.com/api
The TUI supports multiple color schemes:
# High contrast mode
npm run tui -- --high-contrast
# Monochrome mode
npm run tui -- --no-color
Run TUI in a persistent terminal session:
# In screen
screen -S omni-grc
npm run tui
# Detach with Ctrl+A, D
# In tmux
tmux new-session -s omni-grc
npm run tui
# Detach with Ctrl+B, D
Set up a monitoring session with auto-refresh:
npm run tui -- --refresh 30
Press 1 for Dashboard, and it will update every 30 seconds.
Access TUI over SSH:
ssh user@grc-server.company.com
cd /opt/omni-grc
npm run tui
Use number keys for instant view switching instead of Tab:
1 → Dashboard (overview)2 → Findings (check vulnerabilities)3 → Compliance (review status)4 → Scans (monitor scans)When viewing large lists:
f to open filterf again and clear to resetWhile in a list view, you can:
Esc to go back to terminalomni-grc <view> --json > export.jsonnpm run tuiSymptoms: Broken borders, misaligned text
Solutions:
# 1. Check terminal size
echo $COLUMNS x $LINES
# Minimum: 80x24
# 2. Try different terminal
# Use: iTerm2, Terminal.app, Alacritty, or Windows Terminal
# 3. Reset terminal
reset
npm run tui
Solution:
# Check TERM variable
echo $TERM
# Should be: xterm-256color
# Set if needed
export TERM=xterm-256color
npm run tui
Solution:
# Some terminals may have conflicting keybindings
# Try alternative keys:
# - Instead of j/k, use arrow keys
# - Instead of /, use f for filter
Solution:
# Ensure OMNI-GRC server is running
npm run dev
# In another terminal:
npm run tui
# Or specify API URL
npm run tui -- --api-url http://localhost:3000/api
Solutions:
# 1. Disable auto-refresh
npm run tui
# Don't use --refresh option
# 2. Use filters to reduce data
# Press 'f' in any view
# 3. Close detail panels
# Press 'Esc' to close
Solution:
# Maximize terminal window or increase size
# Minimum recommended: 100x30
# Or use horizontal scroll in panels
# Use ← → keys in detail views
Pro Tip: Use the TUI for quick checks and the CLI for automation. The TUI is perfect for interactive sessions, while the CLI excels at scripting!