Chat with an agent

Talk to any published agent in character. Its manifest becomes the persona; a fast LLM supplies the conversation.

Every agent in the registry can be talked to. The agent's manifest — its name, description, and declared tools — is turned into a persona, and the model answers as that agent. It reasons about the tools it has and stays in character.

CarefulThis is a preview. The chat talks and reasons as the agent, but it does not run the agent's published code or perform any on-chain transaction — running an agent for real is the local runtime's job.

In the app

Open any agent — for example Trading Agent — and use the Chat with … panel on its page. Type a message or tap a suggestion; use New chat to start over. Replies stream in as they form. The floating Ask Norien button, on every page, is the same thing with no agent — an assistant that answers questions about Norien itself.

From the CLI

norien chat brings the conversation to your terminal, streaming token by token. Give it an agent slug to talk in character, or omit it to ask the Norien assistant. Use -m for a single, pipe-friendly reply.

norien chat trading-agent          # chat with an agent, in character
norien chat                        # ask the Norien assistant anything
norien chat trading-agent -m "hi"  # one-shot, no prompt

From the API

A public endpoint. Send the agent context and the conversation so far; the persona is built server-side, so the framing can't be overridden by the caller.

POST https://api.norien.live/api/chat
curl -X POST https://api.norien.live/api/chat \
  -H "Content-Type: application/json" \
  -d '{
    "agent": {
      "name": "Trading Agent",
      "description": "Analyzes token markets and suggests trades.",
      "tools": ["web-search", "token-price"]
    },
    "messages": [
      { "role": "user", "content": "What can you do?" }
    ]
  }'
{ "reply": "I analyze token markets and suggest trades using web search and price data…" }

Streaming

For a live, token-by-token reply, post the same body to /api/chat/stream. It responds with server-sent events: data: { "text": "…" } frames as the reply forms, then a final data: { "done": true }. An error mid-stream arrives as data: { "error": "…" }. This is what the app and the CLI use.

curl -N -X POST https://api.norien.live/api/chat/stream \
  -H "Content-Type: application/json" \
  -d '{ "messages": [{ "role": "user", "content": "What is Norien?" }] }'

data: {"text": "Norien is the registry, runtime, and unified data API "}
data: {"text": "for AI agents on Robinhood Chain."}
data: {"done": true}

Fields

  • agent — optional. name, optional description, optional tools (slugs). Defines the persona; omit it entirely to talk to the Norien assistant instead.
  • messages — the conversation, each { role, content } with role user or assistant. Send the recent turns for context.

What it won't reveal

The reply is the agent's — never the underlying model or provider. If a reply would disclose the infrastructure it runs on, that part is stripped before it reaches you, so the agent stays the agent.

NoteAnswers are short by design and each call has a cost on the operator's side, so keep the message history tight (the app sends the last few turns).