How to Use the No-Mistakes TUI for Validation: A Complete Guide
The no-mistakes TUI is an interactive terminal interface that launches automatically when you run no-mistakes run, allowing you to monitor pipeline steps, stream LLM agent logs in real-time, and approve or reject validation findings using keyboard shortcuts like y to accept and n to reject.
The no-mistakes repository provides a terminal user interface (TUI) that serves as the interactive front-end for the validation pipeline. Built in the internal/tui package, this interface connects to the daemon over the same IPC channel used by the CLI, giving you direct control over code review automation while maintaining visibility into every step.
Launching the No-Mistakes TUI for Validation
The TUI activates automatically when you initiate a validation run, providing immediate visual feedback on pipeline progress.
Automatic Launch with Pipeline Runs
When you execute no-mistakes run, the CLI spawns the TUI unless you explicitly disable it with the --no-tui flag. The interface renders in your terminal and maintains a persistent connection to the daemon via IPC.
# Start a new validation run and open the TUI automatically
no-mistakes run --branch feature/foo
The main application bootstrap in internal/tui/app.go initializes the event loop and establishes the IPC wiring that keeps the interface synchronized with the daemon's state.
Attaching to Existing Runs
If you started the daemon in the background or previously detached from a session, you can attach the TUI to an already-running pipeline using the attach command.
# Attach the TUI to a specific run ID
no-mistakes tui attach --run 42
This command, implemented in internal/cli/tui.go, reconnects the interface to the daemon and restores the live view of the validation state.
Navigating the Validation Interface
The TUI organizes validation data into distinct views that update in real-time as the pipeline executes.
Pipeline Status Rows
The primary view, implemented in internal/tui/views/pipeline.go, displays each pipeline step—checkout, lint, test, review, fix—as a distinct row. Each row shows current status transitions from pending to running, then to passed, failed, or awaiting approval.
When a step requires validation, the row highlights and flashes to draw attention. You navigate between rows using j and k (or arrow keys), with the selection logic handled by the view's update loop.
Live Agent Log Streaming
Beneath each step row, the TUI streams output from underlying LLM agents. Press l to toggle the log view, which is rendered by internal/tui/views/logs.go. This view includes scroll support, allowing you to inspect the exact reasoning behind automated suggestions before making approval decisions.
The Status Bar
The bottom bar displays the current run ID, elapsed time, and daemon attachment status. This component respects the same configuration rules as the daemon, meaning trusted repository configuration governs which commands appear as allowed operations. The UI automatically detaches and re-attaches if the daemon restarts, maintaining session continuity.
Approving and Rejecting Validation Findings
The core validation workflow pauses when LLM agents generate findings that require human review.
Interactive Approval Workflow
When a step reaches the awaiting approval gate, the TUI highlights the corresponding row and displays a concise summary. The approval flow works as follows:
- Navigate to the highlighted row using
j/kor arrow keys - Press Enter to open the full diff view for detailed inspection
- Press y to accept the suggestion or n to reject it
- Press r to request a rewrite of the finding
After you process all pending approvals, the pipeline automatically proceeds to the next step. Pressing q quits the UI while allowing the run to continue in the background.
Yolo Auto-Approval Mode
For CI-only runs or when you trust the automation completely, enable yolo mode to bypass manual approval. Activate this with the --yolo flag or set tui.yolo: true in your configuration file.
# Enable automatic acceptance of all findings
no-mistakes run --branch feature/foo --yolo
In this mode, the UI automatically accepts every finding without pausing, though it still displays the pipeline progress and agent logs for monitoring purposes.
Essential Keyboard Shortcuts and Navigation
The key bindings are defined in internal/tui/keymap.go and provide complete control over the validation workflow.
- ? – Display the help overlay listing all available commands
- j/k – Navigate up and down through pipeline rows
- Enter – Expand the selected finding to show the full diff
- y – Accept the current finding
- n – Reject the current finding
- a – Accept all findings in yolo mode context
- r – Request a rewrite of the suggestion
- l – Toggle the live agent log view
- r (on selected row) – Rerun the specific step
- q – Quit the TUI while keeping the daemon run alive
Architecture and Source Files
The TUI implementation spans several critical files in the no-mistakes repository:
internal/tui/app.go– Contains the main application bootstrap, event loop, and IPC communication layer that connects to the daemon.internal/tui/views/pipeline.go– Renders the pipeline table, manages step status updates, and handles row selection for validation.internal/tui/views/logs.go– Implements the live log view with scroll support for streaming agent output.internal/tui/keymap.go– Defines all keyboard shortcuts and input handling for the validation workflow.internal/cli/tui.go– Provides the CLI wrapper that spawns the TUI and forwards run IDs from the command line.
The user-facing documentation in docs/src/content/docs/guides/tui.md provides additional layout details and visual references for the interface.
Summary
- Launch automatically: The no-mistakes TUI for validation opens when you run
no-mistakes rununless you pass--no-tui. - Monitor in real-time: Watch pipeline steps progress from pending to completion while streaming LLM agent logs in
internal/tui/views/logs.go. - Control validation: Use y to accept, n to reject, and Enter to inspect diffs when the pipeline reaches awaiting approval gates.
- Attach anytime: Connect to existing runs with
no-mistakes tui attach --run <id>. - Automate approvals: Enable yolo mode with
--yoloortui.yolo: trueto auto-accept findings without manual intervention.
Frequently Asked Questions
How do I exit the TUI without stopping the validation run?
Press q to quit the interface. According to the implementation in internal/tui/app.go, this detaches the TUI from the daemon while keeping the pipeline running in the background, allowing you to re-attach later using no-mistakes tui attach.
Can I view the full code diff before approving a finding?
Yes. Navigate to the row showing awaiting approval status and press Enter. This opens the detailed diff view, implemented in the pipeline view logic, showing the exact changes proposed by the LLM agent before you press y to accept or n to reject.
Why does the TUI automatically launch instead of running silently?
The default behavior prioritizes human-in-the-loop validation for safety. The interface connects via IPC to the daemon to ensure you can monitor and approve automated changes. Disable this with --no-tui only when running in fully automated CI environments where you want silent operation.
Where are the keyboard shortcuts defined in the source code?
All key bindings reside in internal/tui/keymap.go, including navigation commands (j/k), approval actions (y/n), and view toggles (l for logs). This file maps physical keys to their corresponding actions in the validation workflow.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →