District Core for Rust
The shared Rust core of the District AI apps for Linux and Windows: the data types, the HTTP client, sign-in, live updates, the application state and the call engine, as seven crates with no user interface toolkit in any of them. An app renders the state the core hands it and forwards what the user does; the core decides the rest.
Used by
Seven crates, one workspace
One core for the desktop apps
Tested without a desktop
No crate depends on a user interface toolkit or on one operating system, so every test runs without a display, a keyring or a network, on Linux and on Windows. The tests must reach every line of every crate's default build, or continuous integration fails.
Held to the service's own answers
The repository carries responses recorded from the District AI service, and its tests decode every one with unknown fields refused, so a field the server renames or adds fails here rather than in an app. The endpoint table is checked against the Android app's every week.
A change reaches an app as a version
A release is a version tag that never moves. Each app pins it by tag and exact version, so Cargo refuses a tag that does not hold that version, and moves to a new release in a pull request of its own.
- Licence
- Apache-2.0
- Built with
- Rust, Cargo
- Used by
- District AI for Linux and District AI for Windows
What is open source, and what is not
What is open source
These crates, under Apache-2.0: you can read them, build them, change them and use them. The District AI and Distronode names, logos and app icons are trademarks, so an app you distribute with these crates uses its own name, icon and identifier.
The crates report no crashes: no crash-reporting library is among their dependencies, and nothing in them logs or prints.
What is not
The District AI service the crates talk to. Signing in needs a District AI account; without one you can still build the crates and run every test.
Without an account with us
Today the apps need a District AI account to sign in. We want them to work without an account with us too. We have not worked out what that looks like or whether it can work, and the answer depends on what people would use them with, so we are asking before we build anything.
Get involved
Issues and pull requests are welcome on GitHub. Report a vulnerability privately, as the security policy describes, and not in a public issue.
- Contributing guide
- CONTRIBUTING.md
- Security policy
- SECURITY.md
- Changelog
- CHANGELOG.md

