Docs/Development

Development

Build the component you need, run the affected checks, and contribute a focused change.


Dieter is MIT-licensed and developed in the open on GitHub . Contributor documentation lives in the repository, next to the code it describes.

Get started

git clone https://github.com/dbpprt/dieter.git
cd dieter
mise trust
just setup          # pinned tools and the harness runtime
just build          # bin/dieter and bin/dieter-gateway
just test

Tools are pinned in mise.toml; platform SDKs (Xcode, the Android SDK) are installed separately and only for the component you change. The building guide covers prerequisites, every component, a local-only daemon, a local gateway and forking.

You want to…Read
Send a changeCONTRIBUTING.md
Find your way aroundArchitecture
Know the rules every change keepsInvariants
Pick and run testsTesting
Understand the security boundariesThreat model
Work on the Kotlin core or Android appapps/kotlin
Work on the Mac or iOS appapps/apple
Write device flowstests/maestro
Edit this websitesite
Cut a releaseReleasing

Repository map

DirectoryContents
cmd, internalDaemon, CLI, gateway, storage, transports, harness integration (Go)
api/protoThe authoritative RPC schema
apps/kotlinShared Kotlin client core, the Android/iOS Compose UI, the Android app
apps/appleShared Swift package, the macOS app, the iOS app
nativeDaemon-side screen capture, input and privacy helpers
third_partyVendored packages with their patches
deployGateway deployment bundle and the Linux installer
testsMaestro device flows and cross-language fixtures
toolsIdentity generator, fixture gateway, CLI reference generator, brand check
fastlaneNative app builds, signing and distribution
siteThis website
docsContributor documentation and design records
assets/brandThe brand source: logo, icons, font, colors

Check your change

just check-changed --dry-run    # what would run, and why
just check-changed              # run the affected checks
just lint

The selection includes uncommitted changes; add --base origin/main for a whole branch. Device flows are listed separately; run the relevant one with just e2e <android|ios|mac>. Pull requests need the ci-ok check.

Never stop, restart or install over a daemon or app that is already running on your machine to test a change. Use a temporary DIETER_HOME, a free loopback port and the fixture gateway, as the building guide shows.

Change an operation

A native-client operation is declared in api/proto, implemented by a domain handler in internal/api, and exposed by a CLI command with offline help in internal/cli, in the same change. Contract tests fail when one of those is missing. Run just generate after schema changes and regenerate the CLI reference after help changes.

Improve this page on GitHub ↗

Type to find a guide.