Skip to main content

NALA TUI Agent

PreviewAvailable on: WindowsShips in the preview channel only. Not a stable release.

The resident agent in any terminal: same daemon, same tasks, same artifacts as the desktop, entirely on the keyboard.

The NALA TUI is a full agent surface that lives in a terminal. It is not a cut-down version of the desktop and not a chat box: it talks to the same daemon, creates the same durable tasks, reads the same artifacts, and participates in the same agent-to-agent messaging.

Start it in any terminal, in the directory you want to work in:

nala

What it is

LayerWhat it means
IdentityA first-party Harmony agent, not a third-party CLI wrapped in branding
RuntimeThe TUI engine plus one reasoning owner; models never load in the TUI process
Client roleA client of the daemon — closing it does not end your work
ToolsHarmony tools: tasks, artifacts, worktrees, A2A

IMPORTANT

The TUI is a client. The daemon owns orchestration state and the session host owns provider processes. This is why you can detach, close the terminal, and reattach later to the same session.

How a turn actually runs

When you submit a message the TUI does not simply create a task and hope:

  1. It ensures a structured session for the selected reasoning provider.
  2. It submits the prompt, and the daemon spawns the provider turn.
  3. It polls session events into the transcript until the turn completes.
  4. It keeps the durable task id from the acknowledgement.

The header chrome is gated on evidence: Starting, Thinking, Ready, and Failed appear on real submit acknowledgement and terminal turn evidence, not on optimism. Polling continues through error events until the canonical completion event, so a failure does not leave stale "running" state on screen.

NOTE

If the interface looks reluctant to claim progress, that is deliberate. It reports what it can prove, and unknown is a real answer.

The four-character interaction language

Almost everything is reachable from four prefixes:

PrefixAddressesExample
/Commands — 80 built-ins/tasks
@Files, agents, and entities@src/config.ts
#Tasks and artifacts#task-id
!Your shell, directly!git status

Learn these four and the rest of the surface follows. See the composer.

What you can do without leaving the keyboard

AreaCommands
Session/resume /fork /attach /detach /stop /quit /clear /compact
Route/mode /provider /model /profile /permissions
Work/task /tasks /artifact /artifacts /export
Fleet and A2A/agents /send /ask /delegate /review
Code/worktree /diff
Context/context /memory /trace
Extensibility/skills /extensions /mcp /tools
Voice/voice /speak /read-aloud /bark /play-back
Presence/stay /come
Meta/help /usage /doctor

The complete generated list, with descriptions straight from the registry, is at TUI slash commands.

Overlays

Heavier interactions open as overlays rather than scrolling the transcript: command palette, agent fleet, context and memory, diff review, doctor recovery, permissions, plan approval, provider picker, session picker, tasks and artifacts, and traces.

Errors are structured

Failures carry a code and a retryable flag rather than prose you have to interpret. Transport codes (DAEMON_NOT_CONNECTED, DAEMON_TIMEOUT, DAEMON_CANCELLED, DAEMON_RPC_ERROR) are distinct from domain errors, so "the daemon is unreachable" never looks like "the model refused".

Handing off to the desktop

/desktop

Opens the desktop attached to the same daemon, with your session, tasks, and artifacts intact. The reverse works too — start in the desktop, attach a terminal later.