Augur

AI for desktop programs, without each one talking to AI providers.

Augur is a session service. A program asks it over D-Bus; Augur knows the providers, the keys, which model to use, and how to get a well-formed answer out of each.

What it does

OpenAI, Anthropic, OpenRouter, Cloudflare AI Gateway, Ollama, and anything that speaks OpenAI's API.

One place for keys

Providers and keys are set up once, for every program. Keys come from a command or your keyring, never from each app's settings.

Answers that hold

Give a JSON Schema and get JSON that matches it, from whatever the provider supports, checked and asked for again if it doesn't.

Tools

Offer the model tools; their calls come to your program as signals, already checked, and Augur carries the conversation to an answer.

Questions with probabilities

Ask which of these, yes or no, or how much, and get calibrated probabilities from a classifier like Jev, or a chat model's answer.

What it costs

Every request's tokens and cost are logged, never the text. augur usage adds them up by program, model or day.

One switch

Programs ask whether AI is on and show or hide their AI features to match. Turn it off and they all follow.

Install

Debian and Ubuntu

Debian 12 and 13 and Ubuntu 24.04, on amd64 and arm64, from Augur's signed apt repository; apt upgrade keeps it up to date:

$ sudo install -d /etc/apt/keyrings
$ curl -fsSL https://pkg.gemwm.org/augur/debian/augur.gpg | sudo tee /etc/apt/keyrings/augur.gpg >/dev/null
$ echo "deb [signed-by=/etc/apt/keyrings/augur.gpg] https://pkg.gemwm.org/augur/debian $(. /etc/os-release && echo $VERSION_CODENAME) main" \
    | sudo tee /etc/apt/sources.list.d/augur.list
$ sudo apt update && sudo apt install augur-dbus

The package is augur-dbus, because Debian has an unrelated augur; the commands are augur and augurd. The key's fingerprint is 366F B0D8 A9D4 5D41 411A DA87 71CC 996F 42B6 F689. Each release has the .debs too.

Arch Linux

From the AUR, as augur-dbus:

$ paru -S augur-dbus

FreeBSD

FreeBSD 14 and 15 on amd64, from Augur's signed package repository. As root:

# mkdir -p /usr/local/etc/pkg/repos /usr/local/etc/pkg/keys
# fetch -o /usr/local/etc/pkg/keys/augur.pub https://pkg.gemwm.org/augur/freebsd/augur.pub
# cat > /usr/local/etc/pkg/repos/augur.conf <<'EOF'
augur: {
  url: "https://pkg.gemwm.org/augur/freebsd/${ABI}",
  signature_type: "pubkey",
  pubkey: "/usr/local/etc/pkg/keys/augur.pub",
  enabled: yes
}
EOF
# pkg update && pkg install augur

The key's SHA-256 is 7235ada6…3712f1c1; the whole of it is in the README, and the key is in the source as build-aux/freebsd/augur.pub.

From source

GLib 2.74 or later, json-glib, libsoup 3 and meson:

$ meson setup build && ninja -C build
$ sudo ninja -C build install

Get started

Nothing runs until something asks: D-Bus starts augurd then, and it leaves after a minute with nothing to do. Give it a profile, a provider and how to get its key, in ~/.config/augur/config:

[profile openrouter]
provider = openrouter
api-key-command = pass show openrouter
model = deepseek/deepseek-v4-flash

Then ask it something from the shell:

$ augur status
$ augur ask "Why is the sky blue?"
$ augur usage

From your program

Augur is org.gemwm.Augur on the session bus. The simplest call waits for the whole answer; Complete streams it, and Classify answers questions with probabilities.

$ gdbus call --session --dest org.gemwm.Augur \
    --object-path /org/gemwm/Augur --method org.gemwm.Augur1.Ask \
    "{'app-id': <'org.example.App'>,
      'messages': <[{'role': <'user'>, 'content': <'Say hello'>}]>}"

The whole interface, the configuration, and the command line are in the README.