Chat and models

Chat is the most complete part of Hoook. It streams responses from Ollama, Claude, or GPT, depending on the model you pick.

Which providers work

ProviderHow models are listedCredentials
Ollama Fetched live from your running Ollama instance None
Anthropic A fixed built-in list ANTHROPIC_API_KEY in the daemon environment
OpenAI A fixed built-in list OPENAI_API_KEY in the daemon environment

Claude and GPT models only appear in the picker if the matching key is present when the daemon starts. If you export a key after the daemon is already running, restart it.

How routing works

Hoook picks a provider from the model name, not from a setting:

  • Names starting with claude or anthropic/ go to Anthropic.
  • Names starting with gpt, o1, o3, o4, or openai/ go to OpenAI.
  • Everything else goes to Ollama.

That last rule is a catch-all, so a typo in a model name does not error. It quietly becomes an Ollama request, which then fails if Ollama is not running. If a chat fails in a way that mentions Ollama when you expected Claude, check the model name first.

Streaming

Responses stream token by token. The UI talks directly to the daemon over HTTP rather than going through the desktop app's IPC layer, which is why chat keeps streaming smoothly while the rest of the app is busy. Stop aborts the request in flight.

Keyboard shortcuts

ShortcutAction
KCommand palette
TNew tab
\Toggle sidebar

Known gaps

  • There is no UI for entering API keys. Keys come from the daemon's environment only.
  • The Attach button in the composer is not wired up yet.
  • Full-text chat search is not implemented.
  • Chats do not currently inherit project instructions. See Projects for what this means in practice.