Skip to content
Conduit

mcp server

fornax

Run open models locally: chat, images, speech, decisions, and an OpenAI-compatible API.

earshot-run/fornaxcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 26, 2026

ci license: MIT latest release

English · 简体中文 · Command reference · Contributing

fornax runs open models on your own computer. Chat with them, make images, video and speech, have them make decisions, and keep everything on your machine.

curl -fsSL https://raw.githubusercontent.com/earshot-run/fornax/main/install.sh | sh
fornax studio

Installs the latest successful main build; no Go toolchain needed.

The studio

fornax studio opens in your browser. Pick a model, type, and it streams back. Drop in a photo if the model can see, or talk to it if it can hear. Your chats are saved.

Image, video and voice work the same way: describe what you want, watch it come in step by step, and find everything later in the gallery. Edit an image by giving it a reference, or clone a voice from a few seconds of audio.

Models

Open Models in the studio. Chat, image, voice and video each list the most-downloaded models of that kind on Hugging Face, plus a few picks that fit your computer, and either downloads with one click. Search finds any other GGUF model and can check its size before you download it. Gated models like Llama need a Hugging Face token; add yours on the same page.

From a terminal it's one line, with any model on Hugging Face or Ollama:

fornax pull hf:Qwen/Qwen3-4B-GGUF
fornax ask hf:Qwen/Qwen3-4B-GGUF "Explain what a GGUF file is in one sentence."

If Hugging Face is slow or unavailable where you live, set HF_ENDPOINT to an HTTPS mirror origin (for example https://hf-mirror.com). Mirrors do not receive your Hugging Face token, so use the official endpoint for gated models. See the download reference.

Decisions

Some models don't chat. They answer typed questions about a piece of text with calibrated probabilities: yes or no, one of a few options, or a level on a scale. That's the job behind routing a support ticket, flagging a risky message or grading an answer, and a local model does it in a fraction of a second, for nothing.

fornax judge kev-4b \
  --state "Customer: I was charged twice this month and nobody has answered my last three emails. If this isn't fixed today, I'm cancelling." \
  --ask 'escalate|noul|Does this need a human today?' \
  --ask 'topic|choice|What is it about?|billing|bug|sales|other' \
  --ask 'mood|score|How upset is the customer?|calm|annoyed|angry'
  escalate noul    0.94  ███████████████████░
  topic    choice  billing
      billing 0.64  █████████████░░░░░░░
      other   0.29  ██████░░░░░░░░░░░░░░
      bug     0.06  █░░░░░░░░░░░░░░░░░░░
      sales   0.01  ░░░░░░░░░░░░░░░░░░░░
  mood     score   1.70 → angry
      angry   0.71  ██████████████░░░░░░
      annoyed 0.28  ██████░░░░░░░░░░░░░░
      calm    0.01  ░░░░░░░░░░░░░░░░░░░░
  179 ms

fornax ships two open families of these: kev, Jev-style models from 0.8B to 27B, and Convai's smaller laya. Both speak TypeSafe's System One API, so fornax run kev-4b gives you a local server the official TypeSafe SDK talks to unchanged.

Not enough GPU?

Run the studio on a bigger machine, a GPU box at home or a rented cloud GPU, and use it from your laptop:

fornax studio -on me@gpu-box

fornax picks the right build for the hardware (Metal, CUDA, Vulkan or plain CPU), and fornax doctor tells you which one it chose and why.

Safe by default

Models only listen on your own machine and need a key that fornax generates for you.

For scripts and agents

Everything above also works from the terminal: ask, see, hear, imagine, say, embed, judge, run and more, plus an MCP server for agents. In Earshot, the fornax plugin hands that server to every agent you run. The full command reference and how it all works is in docs/reference.md.

License

MIT. Model weights keep their own licenses.

↑↓ navigate openesc close