/v1/chat/completions protocol works as a provider: Ollama, llama.cpp, LM Studio, or Xynthis’s own on-device model. Chat then runs entirely on your machine, and since all memory already lives locally under ~/.xynthis/, nothing leaves it.
An Ollama preset ships in the default config (http://localhost:11434/v1, model llama3.3); if Ollama is running, xynthis models set ollama is all it takes. A capable local model like that runs the full agent loop, tools included. The rest of this page covers the other case: a small model that needs lite mode.
Worked example: apfel
apfel is a CLI that exposes Apple Intelligence (the Mac’s built-in foundation model) as an OpenAI-compatible server. Theapfel provider ships as a built-in preset, so on a Mac you only need to install the CLI and select it:
apfel --serve --port 8091 on demand and greys the entry in the picker until its port answers. The equivalent block, if you ever want to define it by hand for a different port, is:
lite = true: Apple’s on-device model has a small context window and no reliable tool calling. Lite mode keeps it usable (next section).launch_commanduses the absolute binary path. The app runs this command through/bin/sh -c, and GUI apps on macOS get a minimalPATHthat does not include Homebrew’s directories, so a bareapfelwould fail with “command not found”. Runwhich apfelin a terminal and use that path.
curl http://127.0.0.1:8091/v1/models shows the exact name to put in default_model.
What lite mode does
The full agentic prompt is large: the tool specifications alone (roughly 70 tools) make up most of a ~24k-token system prompt. A small local model can’t tool-call anyway, and on a RAM-tight Mac the resulting KV cache spikes memory hard. When the active provider haslite = true, the agent runs as plain chat instead:
- No tool schemas are sent. The model cannot edit files, browse, run commands, or search memory.
- The system prompt shrinks to a short one.
- Pre-turn memory injection is skipped entirely: no brain recall, no skill patterns. Remembered facts do not surface in lite conversations.
xynthis models set anthropic, or one tap in the app’s model picker. Your memory is untouched either way; the brain keeps running and storing regardless of which chat model is active.
Auto-start from the app
When you pick a local provider in the app’s model picker and its server isn’t answering on its port, the app runs the provider’slaunch_command, waits for the port to come up, then switches. Providers without a launch_command just show as unavailable until you start the server yourself. The CLI does not auto-start servers; run the server first, or put it under your own process manager.