claude-remote-control.service floods journald with per-second TUI repaint #283

Closed
opened 2026-06-10 10:36:09 +00:00 by coilysiren · 0 comments
Owner

Problem

claude-remote-control.service on kai-server floods the journal with its TUI repaint loop.

The daemon renders its interactive status screen (Capacity: N/32 …, Attached, Continue coding…, space to show QR code) to stdout roughly once per second. Running under systemd (non-tty), journald captures every frame.

Measured on 2026-06-10 (uptime 3d 09h since the 2026-06-06 18:18:50 PDT start):

  • ~1,163 journal lines / 15 min (~77/min) for this unit
  • 570,060 lines emitted by this one unit since the last start
  • Total journald on disk: 4.0 GB

The service is otherwise healthy (MainPID stable, 0 restarts, ~1.85 GiB RSS, 0.6% CPU). This is pure log noise, but it bloats the journal and makes journalctl -u claude-remote-control unusable for finding real events.

Root cause

claude remote-control --help exposes no quiet/headless flag — only --debug-file <path> and -v/--verbose. The repaint can't be silenced in-app, and the unit has no StandardOutput= override, so it inherits journal.

Proposed fix

In systemd/claude-remote-control.service, under [Service]:

StandardOutput=null
StandardError=journal

Drops the stdout repaint loop while keeping real errors in the journal. Optionally pair with --debug-file /var/log/claude/remote-control.log (or a path under kai's home) for on-demand diagnostics, since startup/connection state currently only shows on stdout.

Acceptance

  • Unit no longer emits per-second repaint lines to journald
  • Real startup/error events still reachable (journal stderr and/or --debug-file)
  • Roll out via the ansible unit-deploy role, not a manual edit on the box
## Problem `claude-remote-control.service` on kai-server floods the journal with its TUI repaint loop. The daemon renders its interactive status screen (`Capacity: N/32 …`, `Attached`, `Continue coding…`, `space to show QR code`) to stdout roughly **once per second**. Running under systemd (non-tty), journald captures every frame. Measured on 2026-06-10 (uptime 3d 09h since the 2026-06-06 18:18:50 PDT start): - **~1,163 journal lines / 15 min** (~77/min) for this unit - **570,060 lines** emitted by this one unit since the last start - Total journald on disk: **4.0 GB** The service is otherwise healthy (MainPID stable, 0 restarts, ~1.85 GiB RSS, 0.6% CPU). This is pure log noise, but it bloats the journal and makes `journalctl -u claude-remote-control` unusable for finding real events. ## Root cause `claude remote-control --help` exposes **no quiet/headless flag** — only `--debug-file <path>` and `-v/--verbose`. The repaint can't be silenced in-app, and the unit has no `StandardOutput=` override, so it inherits `journal`. ## Proposed fix In `systemd/claude-remote-control.service`, under `[Service]`: ```ini StandardOutput=null StandardError=journal ``` Drops the stdout repaint loop while keeping real errors in the journal. Optionally pair with `--debug-file /var/log/claude/remote-control.log` (or a path under kai's home) for on-demand diagnostics, since startup/connection state currently only shows on stdout. ## Acceptance - Unit no longer emits per-second repaint lines to journald - Real startup/error events still reachable (journal stderr and/or `--debug-file`) - Roll out via the ansible unit-deploy role, not a manual edit on the box
Sign in to join this conversation.
No description provided.