seldon lets you interact with Apple's on-device LLM Foundation models on macOS. It's a minimal native macOS chat app built with SwiftUI as a Swift Package. It has a UI, terminal REPL and single shot command mode as well as supporting tool calling.
Save money and privacy by using a local model, and save resources by using a built-in LLM without requiring third party applications.
By @singe
swift build -c releaseBuild artifacts with make:
make binary # dist/seldon-macos-<arch>
make bundle # dist/seldon-macos-<arch>-with-tools.tar.gz
make app # dist/Seldon-macos-<arch>.app.zip
make release-assetsRun the .app or run the binary.
seldonThis launches a native window (Seldon Chat).
Interactive terminal mode:
seldon --cli--cli streams the model output as it is generated.
Single-shot headless mode (for scripts):
seldon --prompt "What is psychohistory?"--prompt prints a single final response (no streaming), then exits.
Optional sampling temperature for CLI modes (0.0 to 2.0):
seldon --cli --temperature 0.2
seldon --prompt "Tell me where to find the second foundation" --temperature=0.7The same --temperature value is also applied to GUI mode if you launch seldon with that flag.
Pass a tools YAML file to enable Foundation Models tool calling:
seldon --tools tools.example.yaml
seldon --cli --tools tools.example.yaml
seldon --prompt "search the web for hari seldon and describe the top result" --tools tools.example.yamlExample config is included at tools.example.yaml with three basic tools:
web_searchimplemented bytools/web_search.pyfetch_urlimplemented bytools/fetch_url.pycalculatorimplemented bytools/calculator.py
Change the system prompt passed to the LLM with --system:
seldon --system "you are Hari Seldon"This will work for the GUI, cli or prompt mode.
- The app uses Apple's on-device Foundation Models API when available.
- In this environment,
LanguageModelSessionis available onmacOS 26.0+. - On older macOS versions (or SDKs without
FoundationModels), the UI still runs and shows a clear unsupported message when you send a prompt.