Repository navigation
End-to-end encryption between your devices. This release starts the 0.6 line
and is a clean break: nothing migrates, and every machine and app pairs again
after the upgrade.
Upgrading
0.5 and 0.6 cannot talk to each other, so update everything in one go:
- Gateway. Deploy the 0.6 gateway. Its minimum client and daemon releases
are0.6.0-dev.0, so it rejects 0.5 apps and daemons. - First machine. Update the daemon on the host itself (
brew upgrade dieter
on macOS;dieter machine update --confirm UPDATEorinstall.shon
Linux), then rundieter setup. It starts your account's device roster and
prints a recovery key once. Store it offline. - Other machines. Update each one the same way and run
dieter setup. It
prints a one-time code; approve it on the first machine with
dieter device approve CODE. - Apps. Update each app and open it. It shows a one-time code; type it on a
trusted device:dieter device approve CODEon a machine, or
Devices → Add a device in an app that is already trusted.
Security
- Every remote call now runs mutually authenticated TLS 1.3 between the calling
device and the daemon, on every route: direct TLS, WebRTC and the gateway
relay. The relay is an opaque tunnel, so the gateway forwards bytes it can
neither read nor change: chats, terminals, files, executions, Git, vault
content, peer records and screen signaling. It still sees metadata (devices,
presence, routes, tunnel timing and sizes, provider quota snapshots) and can
deny service. - Every machine and app has its own key in the account's device roster, an
append-only list in which every change is signed by a trusted device. The
gateway stores the list but cannot add a device or remove one. A new device
shows a one-time code; typing it on a trusted device adds it. Only type a code
you see on your own new device. - App keys live in the Secure Enclave (Mac, iPhone, iPad) or the Android
Keystore and cannot be exported. The Mac app keeps its key in its user-only
data folder, never in the Keychain. - Gateway tokens are bound to the calling device, so a session or token without
the device key reaches no machine. The gateway's daemon CA now only
authenticates daemons to the gateway; clients pin keys from the roster.
Changed
- New
dieter devicecommands:status,roster,sync,init,requests,
approve,revokeandrecover.initandrecoverrun only on the
machine itself, and agent turns cannot change device trust. dieter setupstarts the device roster on an account's first machine, or
prints the code that a new machine waits with.dieter daemon unenrollalso removes the machine from the trusted devices and
deletes its key. Enrolling it again creates a new machine that a trusted
device approves.- The apps show a pairing screen until the device is trusted, and a Devices
screen (Tools › Devices on Android, iPhone and iPad; Settings › Devices
on Mac) to add, list and remove devices. - Vault commands that return decrypted content now work over the gateway relay
too, and the vault audit records which device asked. - Claude Code, Codex and OMP now run at the latest versions Dieter ships with
instead of the versions the AI SDK adapters pin: Claude Code 2.1.296 (Claude
Agent SDK 0.3.296), Codex 0.162.1 and OMP 18.10.1. Updates follow each release. - Release daemons no longer need npm. The prebuilt harness runtime now includes
the Claude Code, Codex and OMP command-line tools, and an agent's first turn
links them instead of installing them with npm. Only the DeepSeek Harness
(DSH) still installs from npm, and daemons built from source still install
their runtime with npm. The runtime download grows accordingly, to about
600 MB on macOS and about 1 GB on Linux. - OMP and DSH conversations started before this update cannot continue: the
updated agent adapter no longer accepts their saved session. Start a new
conversation for them.
Fixed
- The iOS app no longer crashes when it opens a conversation that contains a
fenced Markdown code block. Only optimized release builds were affected.