daimon 0.2.0
Added:
-
Model backends are a registry:
--model <backend>:<name>names a local runtime by scheme,daimon modelslists every backend's models with their declared capabilities, and a backend this build lacks
is a clear error. Ollama now reports each model's real capabilities from its/api/show, so an
embedding model is refused for tool use before generation rather than failing during it. -
--no-toolson the CLI andtools: []over MCP open a text-only conversation, which any model can
run; a request that needs tool calling on a model that does not declare it is refused with a hint. -
The audit log records
model.resolvedwhen a conversation opens: backend, model, asset, declared
capabilities and who declared them, and the tools in use. -
Core AI:
--model coreai:<bundle>runs a model exported to Apple's Core AI format, in daimon's own
process, through the bridge fromapple/coreai-models. Bundles live under<home>/models/coreai
(config.jsoncoreai.modelsDirectory) or are named by path;daimon modelslists them with kind,
compression, source, and size; a missing bundle is refused with where daimon looked and the export
command. Capabilities come from the bundle. Seedocs/backends.md. -
inspect, a read-only tool the model can call to see daimon's effective config, this conversation's
status, the standing approvals, or recent audit events, bounded to 4 KiB. -
MCP resources
daimon://config,daimon://status,daimon://approvals,daimon://audit, and the
templatedaimon://audit/{session}for one thread's events, so a calling harness can read daimon's
state without a model turn. -
daimon configprints the effective configuration as JSON. -
MLX Swift:
--model mlx:<directory>runs a model in MLX or Hugging Face safetensors layout in
daimon's process throughmlx-swift-lm's bridge, in builds made with--traits MLX(the release
is); a build without the trait refusesmlx:models with the reason. Capabilities are declared by the
operator per model inconfig.json'smlx.models; an undeclared model is text only. Verified with
mlx-community/Qwen3-1.7B-4bit: text replies in 2.5 s including load, and the tool loop 3 of 3 with
toolCallingdeclared. The Homebrew release does not include MLX, because it needs a Metal library
bundle beside the binary; build with--traits MLXyourself. Seedocs/backends.md. -
approval.classifierchooses what judges commands beside the rules:rules,system-model(the
default, unchanged), orcoreml, a Core ML text classifier you train from atext,labelCSV with
scripts/train-risk-classifier. The model must follow a versioned contract or it is rejected; every
failure or low-confidence verdict ismoderatewith the reason; the audit records the model's
identity, version, label, and confidence. Measured on 2026-09-20: a model trained on the 45-command
eval set scores 45/45 on it (its own training data, so no evidence of judgement); trained on the 35
non-held-out commands it got 5 of the 10 held-out ones right, and two dangerous commands it called
safewere kept offsafeonly by the confidence guard. Not fit to judge alone; measure your own
withDAIMON_COREML_MODEL=<path> scripts/check evalbefore relying on it.
Changed:
- The
run_commandsandbox also allows writes under the per-user cache directory
(getconf DARWIN_USER_CACHE_DIR), where Clang keeps its module cache; a build that compiles a C
module inside the sandbox (SwiftPM compiling a dependency's manifest, say) used to fail with "could
not build Objective-C module 'Darwin'". daimonwith no prompt on a terminal prints its help instead of waiting silently for stdin; a piped
stdin is still read.
Install or upgrade with Homebrew: brew install pidster/tap/daimon. Downloading the tarball directly leaves it quarantined; use Homebrew.