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.
Starting a conversation
Section titled “Starting a conversation”- Tap the Chat tab in the bottom bar
- Tap the New chat icon in the header, or open an existing conversation from Home or History
- Choose an agent from the agent selector in the chat header
- 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.
Agent selector
Section titled “Agent selector”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)
Message types
Section titled “Message types”The chat displays several message types with distinct styling:
| Type | Appearance | Description |
|---|---|---|
| User message | Right-aligned bubble | Your sent messages |
| Agent response | Left-aligned bubble | Streaming text with markdown rendering |
| Tool call | Compact line, grouped when there are several | Shows tool name, expandable to see input/output |
| Tool approval | Card with Approve / Reject | Elevated tool calls waiting for your decision (auto-rejected after 5 minutes) |
| Questions | Interactive form | Questions the agent asks you mid-task |
| Status | Status line | ”Thinking…” and other progress while the agent works |
| Failed | Marked message | The error text when a reply fails |
At a glance summaries
Section titled “At a glance summaries”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:
-
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:
Chip Meaning Done The task finished Needs your answer The agent is waiting on you Working in background The agent is continuing without blocking on you Blocked The agent can’t proceed Continuing More work is coming in a follow-up turn
A reply without an ## At a glance heading renders as plain markdown, with no card or chip.
Message actions
Section titled “Message actions”Every finished message has a row of actions beneath it:
| Action | Where it appears | What it does |
|---|---|---|
| Copy | Every message | Copies the message text to the clipboard |
| Edit | Your own messages | Edit the text inline, then Save & Send to resubmit it |
| Retry | Your own messages | Resend the message as a new turn |
| Report | Finished agent replies (not while streaming) | Opens a sheet to flag the response — see below |
Reporting a response
Section titled “Reporting a response”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.
Markdown rendering
Section titled “Markdown rendering”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.
While the agent is responding
Section titled “While the agent is responding”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.
- 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
Check-ins
Section titled “Check-ins”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.
Voice input
Section titled “Voice input”The mobile app supports tap-to-record voice input:
- Tap the microphone icon next to the text input
- Speak your message — a recording indicator with a timer shows recording is active
- Tap the indicator to stop — the audio is transcribed and sent automatically
File attachments
Section titled “File attachments”Attach files to your messages:
- Tap the attachment icon in the input bar
- Choose a source:
- Photo Library — Select one or more images from your gallery
- Take Photo — Use the camera
- Choose File — Browse device files
- The file appears as a preview in the input area
- Type an optional message and tap Send
Files are uploaded to your daemon; the app doesn’t restrict file types.
Streaming events
Section titled “Streaming events”The chat handles these real-time events from the daemon:
| Event | What happens |
|---|---|
message_start | Begins a new agent response bubble |
content_delta | Appends text to the current response |
thinking_delta | Shows a “Thinking…” status |
tool_start | Displays a tool call card |
tool_result | Updates the tool card with results |
message_complete | Finalizes the response |
ask_questions | Shows interactive question buttons |
approval_required | Shows a tool approval card |
cancelled | Marks the response as cancelled |
error | Displays an error banner |
Catching up after being away
Section titled “Catching up after being away”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.
Conversation history
Section titled “Conversation history”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
Troubleshooting
Section titled “Troubleshooting”Messages not streaming
Section titled “Messages not streaming”- Check your daemon connection in Settings > Connection
- Ensure the daemon is running:
snippbot status - Check that the selected agent exists and has a valid model configured
Voice input not working
Section titled “Voice input not working”- Grant microphone permission in device Settings > Apps > Snippbot
- Check that your daemon has a speech-to-text provider configured (Settings → Voice in the app lists them)
File upload fails
Section titled “File upload fails”- Check your daemon connection — large files over a slow tunnel can time out
- Ensure the daemon has enough disk space
- Verify camera/photo library permissions in device settings