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.
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 promptFrom 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/chatcurl -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, optionaldescription, optionaltools(slugs). Defines the persona; omit it entirely to talk to the Norien assistant instead. - messages — the conversation, each
{ role, content }with roleuserorassistant. 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.