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 |
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:
- Queue — messages you send wait and go out after the current reply; you can edit queued messages before they send
- Interject — flip the toggle to send your message into the running reply instead
- Stop — tap the stop button to cancel the reply
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 |
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