kari v0.16.0
kari v0.16.0 — built from 9ca8ba4.
One subscription can now be kept for its own work while another is spent. The
automation switch used to cover every machine or a single one; each quota row
carries one of its own, and it sets the machines signed in to that account.
TL;DR
- Let the automatic behaviour be set for one account
What changed
Let the automatic behaviour be set for one account
Quota belongs to a Claude Code login, not to a machine, and a user with two
logins usually wants different things from them: keep one subscription for the
work it is paid for, and spend the other. The automation switch could not say
that. It sets every machine that answers, or the one machine a filter names,
and a subscription is usually neither of those.
Each quota row now carries the same Off / Ask / Auto switch, and it writes to
the machines signed in to that account. The row already names them, so the
control sits beside the meter it protects. mixed in place of a selected mode
means those machines do not agree, which one click puts right.
The account is the scope of the write, not a second place the mode is kept.
The hub resolves the account key to nodes and writes each node's own settings,
because the planner that reads the mode runs on that node and must still
answer with no hub and no network. Two things follow, and both are the honest
answer rather than a limitation to work around:
- A machine that is asleep is out of scope rather than a failure. There is no
queue for a setting, and it keeps the mode it was last given. - A machine that joins the account later starts at its own mode, and the row
then reportsmixed.
NodeStatus gains account_key, the key its quota row groups under, so the
hub can resolve an account to machines and the switch can read what they
agree on. It is the same key board() already groups the meters with, and the
demo board that takes the screenshots now carries it too, so those images show
the control taking the path it takes in the app rather than the fallback meant
for a hub that predates the field.
The write is one call rather than one call per machine, so a half-applied
switch names the machines that refused, as the every-node switch does. The
route is POST /kari/v1/hub/accounts/automation, with the key in the body:
a machine whose account kari cannot read is keyed node:<id>, and a path
segment with a colon in it is one more thing to encode correctly at both ends.
SplitHub asks both halves, because one login is usually signed in on this
machine and on hosts that only the server knows.
The switch on the phone is unchanged, and still sets a node or every node.
Install
Download the .dmg for your Mac: aarch64 for Apple silicon, x64 for Intel.
The app is not signed. After you copy it to Applications, run:
xattr -dr com.apple.quarantine /Applications/kari.app
On Windows, run kari_0.16.0_x64-setup.exe. It installs for the current user,
because kari reads the Claude Code state of whoever is logged in. That installer is
not signed either, so SmartScreen asks once: More info, then Run anyway.
An installed kari updates itself to this release: it checks on start and every six hours,
writes the new version beside the running one and offers a restart. Settings, Updates has the switch.
Every host runs the headless node, so that its sessions stay on the board while no window is open.
A Mac takes kari-node-v0.16.0-aarch64-apple-darwin (or the x86_64 one),
a Linux host kari-node-v0.16.0-x86_64-unknown-linux-gnu.tar.gz,
a Windows host kari-node-v0.16.0-x86_64-pc-windows-msvc.zip.
Run kari-node service install to keep it running at login. One engine runs on a host at a time:
open the app and the node steps down, quit the app and it takes the host back.
A node updates itself only when asked: kari-node update, or serve --auto-update.
An Android phone installs kari-latest.apk. Add this repository to Obtainium: the asset name never
carries the version and the signing key never changes, so an update installs over the previous build.
The phone reaches the nodes over a private network, such as a VPN, and pairs with the code from
Settings, Nodes on the desktop. See TOUR.md.
See the README for requirements and setup.