# Overview
URL: /docs/guides
Practical patterns for building features with assistant-ui.
Guides are task-oriented walkthroughs for building specific features on top of assistant-ui. They sit between the [Primitives](/docs/primitives) (low-level building blocks) and [Components](/docs/ui/thread) (pre-styled installs) — pick a guide when you know what you want to build and need the recommended pattern.
## Composer \[#composer]
Extend the message input with file attachments, mentions, slash commands, voice, and quoting.
Let users attach files, images, and documents to messages. Covers upload adapters, validation, and the typed `attachmentAddError` event.
`@`-style triggers that insert directives into the composer. Sync and async search patterns.
`/`-style commands with arguments, async loading, and combining with mentions.
Selection toolbar, programmatic `setQuote`, and forwarding quote context to the LLM.
Speech-to-text into the composer using `DictationAdapter` and `ComposerPrimitive.Dictate`.
## Messages \[#messages]
Customize how messages render, are edited, branched, and suggested.
Welcome-screen prompts, dynamic suggestions, and the `AuiIf` empty-thread pattern.
Edit user messages with `UserEditComposer`, `beginEdit()`, and edit-during-streaming behavior.
Navigate alternative message versions with `BranchPickerPrimitive`, reload, and direct branch-id navigation.
Display response duration and stream timing with `useMessageTiming` (experimental).
## Tools & Generative UI \[#tools--generative-ui]
Connect tools to the LLM and render their outputs as interactive UI.
Define tools with the Toolkit API, stream args, handle cancellation, and integrate with AI SDK / LangGraph / LangChain.
Render tool calls and `DataMessagePart` into custom components, with fallback handling.
Persisted, schema-validated interactive UI driven by AI state.
Sub-agent message attribution via `ToolCallMessagePart.messages` and LangGraph subgraph events.
## Display \[#display]
Render specialized message content.
Display the assistant's reasoning steps in a collapsible accordion.
Render math via React Markdown or Streamdown, with streaming-safe escape rules.
## Audio \[#audio]
Voice input and output.
Realtime bidirectional audio with `RealtimeVoiceAdapter` and `createVoiceSession`.
Text-to-speech for assistant messages via `SpeechSynthesisAdapter`.
## Programmatic \[#programmatic]
Read and drive runtime state from your own code.
Access threads, messages, composer, and tool state via `useAui` and the runtime scope tree.