Skip to content

Terminal chat

Terminal window
nouride chat # the default agent
nouride chat nouva # address one by name

Nothing reaches an agent unless a gateway delivers it, so a fresh daemon with no Discord or Telegram token is unreachable. This is the way in.

A terminal chat session

It is a real gateway, not a shortcut

Messages travel through the in-process local gateway, so routing, hooks, the queue, the tool loop and session persistence all run exactly as they would for a chat platform. That is what makes it a genuine end-to-end test rather than a debug console.

It is registered by:

[control]
enabled = true
chat = true

What works here

  • Slash commands. All of them — /new, /model, /approvals, /drafts.
  • Approvals inline. A request appears mid-turn and a keypress answers it. a is “always”.
  • Live progress. Tool steps as they happen, rather than a pause and then a wall of text.
  • Sessions. The conversation is cli-<pid>, so each run of the command is its own thread.

Non-interactive

Piped stdin is detected, not assumed:

Terminal window
echo "what is the disk usage on this box?" | nouride chat nouva

Approvals are printed rather than prompted for, and the command does not try to read from a stream that has ended. A script driving this is a first-class use — it is how an end-to-end test talks to the daemon — and trying to prompt anyway used to crash at EOF.

Against a remote daemon

Every command except start talks to a running daemon over the control API, so this works over the network too:

Terminal window
export NOURIDE_URL=https://nouride.example.com
export NOURIDE_TOKEN=<contents of its data/.control-token>
nouride chat

Locally it reads data/.control-token itself, which is why no token is needed on the box.

Why it does not start its own daemon

A CLI that booted one to answer a question would report on a process nobody is using — and nouride chat would talk to a second copy with its own gateway connections. Two Telegram bots polling one token get half the messages each.

So this needs a daemon running. If there is none:

Terminal window
nouride start

Leaving

/quit, or Ctrl-D.