The Rust engine behind Unison, a native Discord client: protocol, state, rules, voice, and the unison-ffi surface that thin native shells call. GPL-3.0-or-later. Every release of Unison is one tag of this repository (vX.Y.Z), so you can build on the engine and take new releases with one line.
| Crate | What |
|---|---|
unison-core |
Protocol (REST, gateway, voice), store, cache, sessions, every rule |
unison-ffi |
The one surface a shell calls (UniFFI: Swift, Kotlin, Python bindings) |
unison-etf, unison-markdown |
Discord's term format, message markdown |
Follow the latest release. main always points at the newest tag:
[dependencies]
unison-ffi = { git = "https://github.com/woflydev/unison-engine", branch = "main" }
unison-core = { git = "https://github.com/woflydev/unison-engine", branch = "main" }Run cargo update -p unison-core -p unison-ffi to take a new release.
Need a build that never changes? Pin a tag instead (tags never move, so a pinned build is reproducible), and bump it when you want a newer release:
unison-ffi = { git = "https://github.com/woflydev/unison-engine", tag = "vX.Y.Z" }Every release also has a zip of its source at https://github.com/woflydev/unison-engine/archive/refs/tags/vX.Y.Z.zip.
Read docs/ARCHITECTURE.md first (what belongs in the engine and what in a shell), then docs/PORTING.md. The releases page carries a devkit zip with prebuilt libraries, generated bindings and a guide written for coding agents.
Never send a message, ring a call, join a server or change account state from automation or tests; every state-changing call needs a real user gesture. Never log or print tokens. Test with a throwaway account or offline.