Skip to content

Mobile Chat

The Chat tab is the primary interface for interacting with your Snippbot agents on mobile. It supports streaming responses, agent and model selection, queued and interjected messages, voice input, file and photo attachments, and full conversation history.

  1. Tap the Chat tab in the bottom bar
  2. Tap the New chat icon in the header, or open an existing conversation from Home or History
  3. Choose an agent from the agent selector in the chat header
  4. Type your message and tap Send

The agent’s response streams in real-time via Server-Sent Events (SSE), showing content as it’s generated.

Tap the agent name in the chat header to open the agent picker:

  • Lists every agent on your daemon, with a status dot showing whether it’s idle or busy
  • A model selector next to it lets you override the model for the conversation
  • The people icon opens the roster, where you can add or remove extra agents for a multi-agent conversation (the primary agent always stays)

The chat displays several message types with distinct styling:

TypeAppearanceDescription
User messageRight-aligned bubbleYour sent messages
Agent responseLeft-aligned bubbleStreaming text with markdown rendering
Tool callCompact line, grouped when there are severalShows tool name, expandable to see input/output
Tool approvalCard with Approve / RejectElevated tool calls waiting for your decision (auto-rejected after 5 minutes)
QuestionsInteractive formQuestions the agent asks you mid-task
StatusStatus line”Thinking…” and other progress while the agent works
FailedMarked messageThe error text when a reply fails

When an agent finishes a reply with a ## At a glance section — typically after a multi-step task — the app renders it as a highlighted card instead of plain markdown:

An At a glance card
  • At a glance — the card itself: a short bulleted summary at the top of the reply

  • Details — an optional, collapsible section with the fuller write-up (collapsed or expanded by default based on your conversation’s Hide details preference; stays expanded while the reply is still streaming)

  • Progress notes — an optional, separately collapsible section for progress the agent streamed before its summary

  • State chip — a small pill below the card showing where things stand:

    ChipMeaning
    DoneThe task finished
    Needs your answerThe agent is waiting on you
    Working in backgroundThe agent is continuing without blocking on you
    BlockedThe agent can’t proceed
    ContinuingMore work is coming in a follow-up turn
The Needs your answer chip

A reply without an ## At a glance heading renders as plain markdown, with no card or chip.

Every finished message has a row of actions beneath it:

ActionWhere it appearsWhat it does
CopyEvery messageCopies the message text to the clipboard
EditYour own messagesEdit the text inline, then Save & Send to resubmit it
RetryYour own messagesResend the message as a new turn
ReportFinished agent replies (not while streaming)Opens a sheet to flag the response — see below
Message actions beneath a reply

Tapping Report on an agent reply opens a sheet to flag it to Snippai, the app’s developer, as required by Google Play’s AI-Generated Content policy. Pick a reason, optionally add a note, and send:

Reason
Hateful or harassing
Sexual content
Violence or self-harm
Dangerous or illegal advice
False or misleading
Something else

The report carries the flagged response text, your chosen reason and note, and the app version — never the rest of the conversation, your daemon’s address, or your device token.

Agent responses render full markdown:

  • Bold, italic, strikethrough
  • Code blocks (monospace, with a language label)
  • Tables
  • Lists (ordered and unordered)
  • Links (tappable)

Image attachments display inline in the conversation.

You don’t have to wait for a reply to finish:

  • Live chip — above the composer while a reply is running, a small pill shows Live (streaming into this phone), Reconnecting… (re-attaching after a drop, a trip to the background, or reopening the chat), or Not live · updates when done (nothing on this phone is currently streaming it). Tap the chip in any state to reconnect.
The Live chip while a reply streams
  • Send: Into reply / After reply — a toggle next to the composer controls whether a message you send while a reply is running goes into the running reply (Into reply) or waits and sends after it finishes (After reply, the default)
  • Queued — messages waiting to go out after the current reply show in a Queued list above the composer; each one can be edited inline or canceled before it sends
  • Stop — tap the stop button to cancel the reply

An agent can schedule a check-in — a time it will look again at work it’s waiting on. When one is open, a small pill in the chat header shows how soon the next one is due. Tap it to see every open check-in for the conversation (which agent, what it’s waiting on, and why that timing), with a Cancel button for each.

The mobile app supports tap-to-record voice input:

  1. Tap the microphone icon next to the text input
  2. Speak your message — a recording indicator with a timer shows recording is active
  3. Tap the indicator to stop — the audio is transcribed and sent automatically

Attach files to your messages:

  1. Tap the attachment icon in the input bar
  2. Choose a source:
    • Photo Library — Select one or more images from your gallery
    • Take Photo — Use the camera
    • Choose File — Browse device files
  3. The file appears as a preview in the input area
  4. Type an optional message and tap Send

Files are uploaded to your daemon; the app doesn’t restrict file types.

The chat handles these real-time events from the daemon:

EventWhat happens
message_startBegins a new agent response bubble
content_deltaAppends text to the current response
thinking_deltaShows a “Thinking…” status
tool_startDisplays a tool call card
tool_resultUpdates the tool card with results
message_completeFinalizes the response
ask_questionsShows interactive question buttons
approval_requiredShows a tool approval card
cancelledMarks the response as cancelled
errorDisplays an error banner
A question form

While your phone is backgrounded or on standby, the app holds no live connection, so it can miss events for a reply that keeps running on your daemon — the turn itself isn’t interrupted, only the live push to your phone is. When the app returns to the foreground, it fetches everything that was persisted since you left and merges it in automatically. If the turn is still running when you catch up, the app keeps polling until it finishes, so you don’t need to do anything to see the rest of the reply.

Access past conversations:

  • Tap the History tab to browse all conversations, with separate Chats and Scheduled views
  • Search by title, agent, or model
  • Pull down to refresh the list
  • The Home tab also shows your most recent conversations
  1. Check your daemon connection in Settings > Connection
  2. Ensure the daemon is running: snippbot status
  3. Check that the selected agent exists and has a valid model configured
  1. Grant microphone permission in device Settings > Apps > Snippbot
  2. Check that your daemon has a speech-to-text provider configured (Settings → Voice in the app lists them)
  1. Check your daemon connection — large files over a slow tunnel can time out
  2. Ensure the daemon has enough disk space
  3. Verify camera/photo library permissions in device settings