For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /docs/mobile/chat.md (or send Accept: text/markdown).
AI chat and the assistant
Streaming chat threads and one-shot agent runs over the shared API.
Chat threads use the web contract
The chat tab calls the same REST surface as the browser app: list and create on /api/chat/threads, and read, rename, or delete on /api/chat/threads/:id. Titles normalize to the shared 120-character limit, and the thread list is covered by the offline read cache.
Streamed replies
Replies stream through POST /api/chat/stream over expo/fetch; server-sent frames become chunk, done, or error events and malformed frames are skipped. Model aliases are fast, smart, and cheap — fast is the default — a structuredOutput flag forwards the matching requirement, and the stop control aborts the in-flight request.
One-shot agent runs
The hidden assistant screen posts {alias, prompt, workspaceId, maxSteps: 4} to /api/v1/agent-runs — a single budgeted run in the active workspace. The client validates the response strictly and rejects a run attributed to a different workspace. Rate limits, sign-in, missing entitlement, and forbidden answers each map to a distinct state, and the run history keeps the last ten in session memory with microunit-exact cost formatting.
Verification and troubleshooting
Test a cancelled stream, a revoked session mid-run, an entitled and a locked workspace, and airplane-mode behavior on the cached thread list. A run denied by the server must surface as unavailable work, never as a silent empty reply.