Repository navigation
Releases: dbpprt/dieter
Release list
Dieter 0.6.411
Development build 0.6.411 from b734f1c. Qualified by https://github.com/dbpprt/dieter/actions/runs/38530405492.
Verify SHA256SUMS with cosign verify-blob --bundle SHA256SUMS.sigstore.json --certificate-identity https://github.com/dbpprt/dieter/.github/workflows/release.yml@refs/heads/main --certificate-oidc-issuer https://token.actions.githubusercontent.com SHA256SUMS.
Full Changelog: v0.6.410...v0.6.411
Dieter 0.6.410
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.
Dieter 0.5.409
Development build 0.5.409 from 6d60cae.
Verify SHA256SUMS with cosign verify-blob --bundle SHA256SUMS.sigstore.json --certificate-identity https://github.com/dbpprt/dieter/.github/workflows/release.yml@refs/heads/main --certificate-oidc-issuer https://token.actions.githubusercontent.com SHA256SUMS.
What's Changed
Other changes
- Fix Release iOS crashes rendering Markdown code fences by @MichaelErmer in #142
Full Changelog: v0.5.408...v0.5.409
Dieter 0.5.408
Development build 0.5.408 from 21e5c9a.
Verify SHA256SUMS with cosign verify-blob --bundle SHA256SUMS.sigstore.json --certificate-identity https://github.com/dbpprt/dieter/.github/workflows/release.yml@refs/heads/main --certificate-oidc-issuer https://token.actions.githubusercontent.com SHA256SUMS.
Full Changelog: v0.5.407...v0.5.408
Dieter 0.5.406
Development build 0.5.406 from e499aa1. Qualified by https://github.com/dbpprt/dieter/actions/runs/38229402928.
Verify SHA256SUMS with cosign verify-blob --bundle SHA256SUMS.sigstore.json --certificate-identity https://github.com/dbpprt/dieter/.github/workflows/release.yml@refs/heads/main --certificate-oidc-issuer https://token.actions.githubusercontent.com SHA256SUMS.
Full Changelog: v0.5.405...v0.5.406
Dieter 0.5.405
Changed
- Release daemons no longer install their harness runtime with npm. Each release
publishes a prebuilt runtime per daemon platform
(dieter-harness-runtime-<os>-<arch>.tar.gz); the daemon downloads the one
whose SHA-256 its binary pins on first use and during updates, and verifies
it before installing. Hosts still need Node.js 22.19+, npm (for agent provider
bridges) and Git. Daemons built from source keep installing with npm. - The daemon's storage (
internal/store) is split into one package per
aggregate (projects and cards, conversations, schedules, workspaces, the peer
replica, …) with a lint-enforced dependency order. Files on disk do not
change.
Fixed
brew uninstall --zap dieter-appremoves the Mac app's data under its
current identifier,com.getdieter.mac.
Dieter 0.5.404
The open-source foundation release. It is a clean break: reinstall the daemon
and apps; nothing migrates from 0.4.
Upgrading
0.4 and 0.5 cannot talk to each other, so update everything in one go:
-
Gateway. Deploy the 0.5.404 gateway bundle. Its signature now comes from
.github/workflows/release.yml, so a deployment controller that pins signer
workflows must trust that identity first. The new gateway rejects 0.4 apps
and daemons. -
Daemons.
- macOS: run
brew upgrade dieter, thendieter setupto register the
service and privacy helper under the new identifiers. - Linux: run
dieter machine updateon the host, or reinstall with
install.sh.
- macOS: run
-
Apps.
- macOS:
brew install --cask dbpprt/tap/dieter-app, or download
Dieter-macOS-arm64.zip. - iOS: the TestFlight build.
- Android: install
Dieter-Android.apk. It is a new app
(com.getdieter.android), so remove the old one.
Sign in again on every app.
- macOS:
Breaking
-
Identifiers. Every app and helper moves to
com.getdieter.*:com.getdieter.mac,com.getdieter.iosandcom.getdieter.android;com.getdieter.daemon,com.getdieter.captureandcom.getdieter.privacy.
Android and macOS installs are new apps. Sign in again on every device, and
re-register the macOS privacy helper (dieter setup). -
Apple team. Signed binaries, the privacy helper and the installer trust
only teamFNGU8JFNPL. -
iOS sign-in uses the
dieter-ios://callback. The gateway must allow it
(the deployment renders it). -
Daemon API.
dieter.v1is one service per domain (CardService,
ConversationService,ScreenService, …) instead of oneDieterService.- RPC paths change, so clients, daemons and gateways below 0.5 cannot talk to
0.5. - The gateway's minimum client and daemon version is
0.5.0-dev.0.
- RPC paths change, so clients, daemons and gateways below 0.5 cannot talk to
-
Release signing. Checksums and the gateway deployment bundle are signed
only by.github/workflows/release.yml@refs/heads/main. -
Removed. The private OMP/Pi model routes (Tailscale GLM, Box Qwen) are
gone from the default catalog.
Changed
- Repository layout.
apps/kotlinis one Gradle build: core, Compose UI and the Android app.apps/appleholdsDieterKit, the Mac app and the iOS app.native/macosis a SwiftPM package for the daemon helpers.- Vendored code moved to
third_party/, the website tosite/, and the
gateway deployment files todeploy/.
- Daemon. The startup wiring moved out of the CLI into
internal/daemon,
with one configuration loader and per-domain API handlers.- Unknown server errors are reported as
Internal, so clients retry them
instead of dropping the command.
- Unknown server errors are reported as
- Schemas. All
.protofiles live inapi/proto.just generateruns buf
for Go and Swift and fails CI on drift; Kotlin generates from the same files. - Builds.
- Fastlane builds, signs and distributes using its built-in actions.
- The Mac app now has an Xcode project, built with
build_mac_app. - Plain
go,gradlewandswiftcommands work without Fastlane.
- CI.
- Pull requests run only the affected checks, behind one required
ci-ok
check. - Failures show as annotations, every job writes a summary, and every test
runner reports JUnit. - Dev releases are cut nightly, not on every push.
- Pull requests run only the affected checks, behind one required
Fixed
- Installer. It verified the old Apple team, so it rejected current
releases. - Privacy helper. It authorized clients signed by the old team only.
- Local daemon on a random port.
dieter serve --addr 127.0.0.1:0now
records the port it actually bound, so the CLI can reach it. - Fixture gateways. They no longer reinstall the harness runtime for every
test fixture.
Dieter 0.4.399
Development build from 1d64a4f. All required component candidates passed their release gates.
TestFlight delivery is tracked in the retained distribution receipts.
Dieter 0.4.398 · dev
Development build from 8e8bd6d. All required component candidates passed their release gates.
TestFlight delivery is tracked in the retained distribution receipts.
Dieter 0.4.397
Development build from 44abdf7. All required component candidates passed their release gates.
TestFlight delivery is tracked in the retained distribution receipts.