Grimvane

Hearth

Your fire, your conversation

A conversation that runs on your own machine, in a desktop app, a terminal, or against a local HTTP API. Point it at your documents and every answer comes back cited to the file it came from. No account, no key, nothing leaving the room.

Architecture

Conversation and computation are separate jobs

The surface you happen to be using handles sessions and rendering. A grate handles tokens. The memory layer grounds answers in your documents when you attach an index. Because the grate sits behind everything, the desktop app, the terminal, and the API all run the same inference path, and switching models does not end the conversation.

LAYER HANDLES Surface (desktop / terminal / API) Sessions, rendering, input Grate (inference) MLX, llama.cpp, Crucible Memory (retrieval) Ingest, chunk, index, ground Storage (persistence) Sessions, indices, sources

Capabilities

What Hearth does

Conversational AI without the subscription.

Model switching

Mid-conversation

Start on something fast, move to something larger when the question gets harder. /model swaps the model without ending the session.

Hot-swapOne session

Session persistence

Pick up where you left off

Every conversation is written to disk as plain JSON, one file per session. Resume any of them by id, or list what you have.

Plain JSONResume

Hardware detection

Automatic backend

Hearth looks at the machine it is on and picks the grate to match. Apple Silicon gets MLX, NVIDIA and AMD get llama.cpp, and CPU-only still works.

MLXllama.cppCPU

One inference path

Any engine, any surface

MLX, llama.cpp, or Crucible, chosen automatically or pinned with --grate. Plain chat and grounded answering both run through it, so there is no second path to keep honest.

MLXllama.cppCrucible

System prompts

Set the voice

Give a session its own system prompt, in chat with /system or per request through the API. It travels with the session rather than living in your shell history.

Per sessionAPI field

Grounded memory

Answers from your documents

Index notes, documents, or a codebase and ask against them, with each claim cited to its file. Vector search runs on Camellia where it is available and falls back to keyword matching, and info tells you which one you have.

RetrievalCitationsOpt-in

Nothing leaves

No cloud in the loop

No account, no API key, no telemetry. Attach no index and Hearth is plain chat. Attach one and your documents stay exactly where they are.

PrivateLocal-only

Surfaces

Three ways in, one Hearth underneath

Pick whichever suits the moment. They share sessions, indices, and the same grate, so a conversation started in one is waiting in the others.

Terminal

Where the work already is

The original surface, and still the fastest way to index a directory and start asking about it. Slash commands cover models, system prompts, saving, and loading without leaving the conversation.

  • Startpython hearth.py
  • Groundindex, ask, chat
  • In chat/model, /system, /save

HTTP API

For everything else

A local FastAPI service over the same grates, which is what the desktop app talks to. Point your own tooling at it and you get chat, sessions, indices, and grate control without reimplementing any of it.

  • ChatPOST /api/chat
  • Sessions/api/sessions
  • Indices/api/indices

Download

Builds are not out yet

Hearth 0.2.0 packages for Windows and macOS, and the desktop app runs today from a local build. Signed installers are not published yet, so rather than hand you a dead link, here is exactly what is coming and how to run it in the meantime.

Windows MSI or NSIS installer
Not published
macOS DMG, Apple Silicon and Intel
Not published
Python package Terminal and API, any platform
Not published

Until then the documentation covers running Hearth from source, and building the desktop app and its sidecar yourself.