Open chud

Documentation

Chat

Models and how they are chosen, answer modes, attachments, when it searches the web.

The model tiers#

ModelContextLive thinkingLowest plan
Claude Haiku 4.5200KNoFree
Claude Sonnet 5 (default)1MYesStudent
Claude Opus 51MYesPro
GPT-5.4400KNoPro
Grok 4.6500KNoPro

Grok 4.6 has the largest context window here. It is also the one model whose price changes with context: every rate doubles above a 200K prompt, so the back half of that window costs twice the front half. Its live-thinking column says No because the backend does not stream reasoning frames for it — that is a statement about our wiring, not about the model.

The free tier is not running Claude right now

A time-limited promotion routes free-tier chat to OpenAI's GPT-4o mini instead of Claude Haiku. The model row in the app is relabelled to name the engine that actually answers, because one flag drives both the routing and the label. Paid tiers are unaffected. When the promotion ends the free tier returns to Haiku and the label follows it.

Auto#

Auto is a router, not a model. It scores your message locally — word count, presence of maths or code, and a small list of hard and easy keywords — into easy, medium or hard, maps that to Haiku, Sonnet or Opus, and then clamps the result to the models your plan allows. No model call is made to make that decision, so choosing Auto costs nothing extra and adds no latency.

Auto only ever picks between the three Claude tiers. It will never route you to GPT-5.4 or Grok 4.6 — those are always an explicit choice you make, never one made for you.

Answer modes#

Normal
Ordinary chat. Clean, direct replies. This is the default and the pill stays a ghost while it is selected.
Solve
Produces the worked answer to the problem in front of it.
Understand
Teaches the concept step by step instead of handing over the result.
CHUD Mode
Fully unfiltered — blunt, crude, no corporate padding. 18+. It is the only mode with a consequence, so it is the only one the scroll-to-cycle shortcut skips; it must be chosen deliberately.

Attachments#

  • Up to 10 files on a single message.
  • 100 MB per file, and 25 MB for an image — an image over 25 MB is rejected outright with an error, not resized for you.
  • Images: JPEG, PNG, GIF, WebP, HEIC/HEIF, BMP, TIFF, SVG.
  • Documents: PDF, TXT, Markdown, RTF, DOC and DOCX, ODT, XLS and XLSX, ODS, PPT and PPTX, ODP, EPUB.
  • Data: CSV, TSV, JSON, XML, YAML, TOML, INI, logs. These reach the model as native text document blocks with citations enabled, so it can quote your file rather than paraphrase it.
  • Source code: around fifty extensions — JS and TS, Python, Go, Rust, Java, Swift, C and C++, SQL, HTML and CSS, and more. Code files are read natively, and they are accepted even when your browser reports no MIME type for them.
  • Subtitles: SRT and VTT. Audio: MP3, WAV, OGG, WebM, M4A, FLAC.

Not everything is read the same way

Images, PDFs, plain text, data and code become native blocks the model reads directly. Office documents, spreadsheets, slides, eBooks and audio go through a compatibility path that extracts text — formatting and detail can be lost. The attachment chip tells you which path a file took rather than implying they are equivalent.

When chat searches the web#

Chat is deliberately conservative about going online. A message triggers a search only when it looks like it needs live information: prices, scores, standings, weather, news, market data, release dates, rankings such as top 10, questions about a person right now, or an explicit instruction to look something up.

Explanations, maths, coding and essay feedback do not normally search. If it guesses wrong, telling it to look it up is itself one of the triggers.

Three more triggers are worth knowing, because they fire on messages that otherwise look like ordinary homework:

  • Asking for evidence. Cite this, with sources, fact-check, is that true, verify, link me — if you ask for sources, it goes and gets real ones rather than answering from memory.
  • Student-life facts that go stale. Acceptance rates, application and test dates, tuition, financial aid, scholarships, program requirements, transfer rules. These change every year, and answering them from training data is how you get handed a confident number that is two years old.
  • A link, or a year. Pasting a URL searches, and so does mentioning a year from 2024 onward — which means a history question about a recent year will search even though most history questions do not.

A web search is a second charged turn

When chat searches, that search is its own metered call on top of the reply it feeds. Your allowance is debited for both, and the figure shown on the message adds them together rather than reporting half of what was taken. It is the one case where a single message you sent costs two turns, so it is written here rather than left for you to infer from the meter.

Where source chips come from

Every source shown under an answer comes from a real citation returned by the search and fetch tools, carrying the real page URL and the snippet that was actually cited. The model is never asked to report its own sources, because a model asked for its sources will invent plausible ones.

Thinking#

Sonnet 5 and Opus 5 stream a summary of their reasoning above the answer. The panel collapses when you dismiss it rather than unmounting, so reopening it shows the same content instead of an empty box. Haiku and GPT-5.4 do not produce a thinking stream, so no panel appears for them.

Written from the code that implements it. Verify against src/lib/m/models.js, src/lib/m/webSearch.js, src/lib/m/fileValidation.js.