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.

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:

  1. Navigate to the highlighted row using j/k or arrow keys
  2. Press Enter to open the full diff view for detailed inspection
  3. Press y to accept the suggestion or n to reject it
  4. 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 run unless 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 --yolo or tui.yolo: true to 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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →