> For the complete documentation index, see [llms.txt](https://djthorpe.gitbook.io/go-llm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://djthorpe.gitbook.io/go-llm/features.md).

# Features

## Using it

* **Web UI:** chat, with replies streamed and files attached; browse models and tools; add providers, connectors and agents. Every page follows changes as they happen.
* **Command line:** a command for each operation, and a chat in the terminal, which follows other clients of the same conversation.
* **REST API,** described with OpenAPI, with server-sent events for streaming.
* **Go packages,** which work on their own, without the application.

## Conversations

* **Chat** in conversations go-llm keeps, with their model, system prompt, tools and options.
* **Tool calls:** the model calls tools until it replies.
* **Memory window:** long conversations are shortened, and summarized, to fit the model's context.
* **Switching models,** such as from Claude to Gemini and back, in the same conversation.
* **Everyone sees the same conversation:** every client of a conversation sees new messages, and who's typing.
* **Dictation** in the web UI, with the browser's speech recognition.

## Models

* **Many providers,** added, changed and removed while go-llm runs.
* **By name:** a model is referred to by its name, or by its provider and name, such as `ollama:llama3.2:latest`.
* **Capabilities:** list models by what they can do, such as `speech_output` or `ocr`.
* **Local models:** download, load, unload and delete them, where the provider stores them, such as Ollama, LM Studio and go-whisper.

## What models do

* **Embed:** vectors for text and media.
* **OCR:** a document's text, as Markdown.
* **Speak** in a chosen voice, by its name, such as Matilda.
* **Illustrate:** images, with Gemini's Nano Banana models.
* **Transcribe and translate** speech, with speakers, or as subtitles.

## Assistant

* **Tools:** weather, news, Home Assistant, web search, and any remote MCP server, through connectors.
* **Agents:** prompts with their own model, tools and schemas, which models call as tools.
* **Memory:** facts about the person and the assistant, and memories with versions.
* **Tasks:** prompts which run on a schedule, such as reminders or a morning briefing.
* **Messaging:** talk to your assistant on Telegram, by text or voice.
* **Files:** uploaded, or made by tools, kept once, and read a part at a time.

## Operations

* **Events:** a stream of changes to providers, models, conversations, memory, tasks and connectors.
* **OpenTelemetry:** traces through the registry, providers and tools.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://djthorpe.gitbook.io/go-llm/features.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
