# How to Use the No-Mistakes TUI for Validation: A Complete Guide

> Master validation with the no-mistakes TUI. This guide shows you how to monitor pipeline steps, view LLM logs, and approve/reject findings interactively. Enhance your workflow today.

- Repository: [Kun Chen/no-mistakes](https://github.com/kunchenguid/no-mistakes)
- Tags: how-to-guide
- Published: 2026-07-14

---

**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.

```bash

# 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`](https://github.com/kunchenguid/no-mistakes/blob/main/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.

```bash

# Attach the TUI to a specific run ID

no-mistakes tui attach --run 42

```

This command, implemented in [`internal/cli/tui.go`](https://github.com/kunchenguid/no-mistakes/blob/main/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`](https://github.com/kunchenguid/no-mistakes/blob/main/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`](https://github.com/kunchenguid/no-mistakes/blob/main/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.

```bash

# 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`](https://github.com/kunchenguid/no-mistakes/blob/main/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`](https://github.com/kunchenguid/no-mistakes/blob/main/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`](https://github.com/kunchenguid/no-mistakes/blob/main/internal/tui/views/pipeline.go)** – Renders the pipeline table, manages step status updates, and handles row selection for validation.
- **[`internal/tui/views/logs.go`](https://github.com/kunchenguid/no-mistakes/blob/main/internal/tui/views/logs.go)** – Implements the live log view with scroll support for streaming agent output.
- **[`internal/tui/keymap.go`](https://github.com/kunchenguid/no-mistakes/blob/main/internal/tui/keymap.go)** – Defines all keyboard shortcuts and input handling for the validation workflow.
- **[`internal/cli/tui.go`](https://github.com/kunchenguid/no-mistakes/blob/main/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`](https://github.com/kunchenguid/no-mistakes/blob/main/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`](https://github.com/kunchenguid/no-mistakes/blob/main/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`](https://github.com/kunchenguid/no-mistakes/blob/main/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`](https://github.com/kunchenguid/no-mistakes/blob/main/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.