Skip to content

Chat

You interact with NimbleBrain by chatting with an agent that has access to all the tools provided by your installed apps. The agent processes your message, decides which tools to call, executes them, and streams the response back to you.

NimbleBrain offers two ways to chat: a web UI for browser-based interaction and a terminal TUI for command-line workflows.

The web UI is available at http://localhost:3000 when the server is running. Type your message in the input field and press Enter to send.

During a response, you see three streaming states:

  • Thinking — the agent is processing your message and deciding what to do
  • Streaming — text is arriving from the model
  • Working — a tool call is in progress

Tool calls appear inline as they execute. Each shows the tool name, which app it belongs to, and whether it succeeded or failed.

When stdin is piped, NimbleBrain automatically enters headless mode. It reads one message per line from stdin and writes responses to stdout:

Terminal window
echo "What bundles are installed?" | nb

For structured output, use --json:

Terminal window
echo "List my apps" | nb --json

This returns a ChatResult JSON object with response, conversationId, toolCalls, token counts, and stopReason.

The conversation ID carries across lines, so multi-turn conversations work:

Terminal window
printf "What is 2+2?\nNow multiply that by 10\n" | nb

The agent has access to:

  • App tools — every tool from every installed MCP bundle (e.g., granola__list_meetings, bash__execute)
  • System tools — built-in tools prefixed with nb__:
ToolPurpose
nb__discover_toolsSearch available tools by keyword across all installed apps
nb__discover_bundlesSearch the mpak registry for new bundles to install
nb__manage_bundleInstall, uninstall, or configure a bundle at runtime
nb__bundle_statusCheck version, health, and tool count for installed bundles
nb__delegateSpawn a child agent for a sub-task

When you open an app in the web UI sidebar and chat from within that app’s view, the chat is scoped to that app. The agent receives an appContext that tells it which app you are focused on, so it can prioritize that app’s tools and provide more relevant responses.

  • Be specific about what you want. “Search for MCP servers related to Slack” works better than “find me something.”
  • Name the app when relevant. If you have multiple apps installed, say “Use Granola to list my meetings” rather than just “list my meetings.”
  • Ask the agent to install what it needs. The agent can search mpak and install bundles on its own via nb__manage_bundle.
  • Use delegation for parallel work. For tasks that split naturally, ask the agent to delegate sub-tasks. See Multi-Agent Delegation.

You can resume a previous conversation in the CLI:

Terminal window
nb --resume conv_a1b2c3d4e5f67890

In the web UI, open a past conversation from the Conversations app and click “Resume in Chat” to reopen it in the chat panel.

See Conversations for details on history, forking, and search.

  • Installing Apps — add new capabilities to your agent
  • Skills — customize how the agent responds with prompt composition
  • Conversations — history, resume, fork, and search