Columba 2.3.2-beta
Installation
Pick a backend, then download the APK matching your device's CPU architecture.
- Python backend, RECOMMENDED — ships Mark Qvist's official python reference implementations of Reticulum and LXMF via Chaquopy.
- Kotlin backend — ships Torlando's EXPERIMENTAL, AI-GENERATED native reticulum-kt / lxmf-kt / lxst-kt stack.
The python version is highly recommended. The kotlin version is a work in progress, and is not yet verified to be completely safe.
The kotlin version may yield better battery life depending on your device, and comes in a smaller apk due to not requiring a python runtime.
Python backend (official-rns-py)
| APK | Architecture | Devices |
|---|---|---|
columba-2.3.2-beta-official-rns-py-armeabi-v7a.apk
| armeabi-v7a | Older 32-bit ARM phones & tablets |
columba-2.3.2-beta-official-rns-py-arm64-v8a.apk
| arm64-v8a | Most modern Android phones & tablets |
columba-2.3.2-beta-official-rns-py-x86_64.apk
| x86_64 | Chromebooks, emulators, some tablets |
columba-2.3.2-beta-official-rns-py-universal.apk
| All | Universal fallback (larger download) |
Kotlin backend (EXPERIMENTAL-reticulum-kt)
| APK | Architecture | Devices |
|---|---|---|
columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-armeabi-v7a.apk
| armeabi-v7a | Older 32-bit ARM phones & tablets |
columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-arm64-v8a.apk
| arm64-v8a | Most modern Android phones & tablets |
columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-x86_64.apk
| x86_64 | Chromebooks, emulators, some tablets |
columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-universal.apk
| All | Universal fallback (larger download) |
Telemetry variants:
Each APK above also has a -no-sentry variant without crash reporting for maximum privacy — append -no-sentry to any download link above (e.g. the most common builds: Python arm64-v8a no-sentry · Kotlin arm64-v8a no-sentry). Sentry collects stack traces when Columba encounters errors
and provides helpful information to the developer to improve Columba, but is hosted at sentry.io, and is thus not the maximum privacy option.
Not sure which to pick? Most Android phones use arm64-v8a. If unsure, use the universal APK.
Verification
See SECURITY.md for verification instructions.
Signing Certificate Fingerprints:
SHA-256: 02:2B:12:20:48:63:A3:1F:BF:07:5B:C9:F9:34:1E:33:52:78:80:2E:80:C9:27:A4:75:46:E4:7E:2F:4A:0C:5F
SHA-1: 0A:6B:AE:58:4E:D7:B5:D0:35:8B:3C:7B:65:11:D6:3A:81:21:0D:CE
SHA256 Checksums:
56cd1727765bac514ed39e0778927f98b60d3993a27daa74a4cc6012145bdd80 columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-arm64-v8a-no-sentry.apk
85e00de504838403df03921f5c3d04f5a8319343e3a525af767284d4a7c7647f columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-arm64-v8a.apk
2f94cce0c7eac90264b9c4880cd16f349662edfefac5bf407fffce0208fcfb67 columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-armeabi-v7a-no-sentry.apk
5c7585a0dc76bdcac32787e5e5b5eb1d0cbaf00aa38dd9e1a3d6115e770ba876 columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-armeabi-v7a.apk
2b05d88eb66958298571f1f530f139184bae18f7e16fac13adaa15cca0d5e067 columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-universal-no-sentry.apk
7b4873898d1ad14f5466c8fe5073e933fc303f66604cb9302eb90fe2d291ee2e columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-universal.apk
825b9339896e7d48b152ba8ae3864bbfd8ae0e9899f3d7bfab15d1fe25d076c2 columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-x86_64-no-sentry.apk
03627ed5fc73e93c8aeb38d1244e0a4ad9f838cb1d8d6f64e8a44849f811b8fe columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-x86_64.apk
0f7d64709f82746b3b5cceb1d704eb0b9a2ad85698943a3b41c670983acb26e6 columba-2.3.2-beta-official-rns-py-arm64-v8a-no-sentry.apk
35775fb3f4ca7aefe4f8f7755978d3ef6af28d08641b422b124202a482091154 columba-2.3.2-beta-official-rns-py-arm64-v8a.apk
a17cea8c158154a58d51b027aa8cae8c90a9bc1f5c1d99ea353df4df928949cd columba-2.3.2-beta-official-rns-py-armeabi-v7a-no-sentry.apk
84d31347690453e4a594132cd8b2697f9003abc8b901f2fd3e8cfa1383de0471 columba-2.3.2-beta-official-rns-py-armeabi-v7a.apk
de1f064b454e05879b215f95329fb82814efac4287ea4c62f9aa272a1b9eb60e columba-2.3.2-beta-official-rns-py-universal-no-sentry.apk
16513738a218703754e1418a25eb002ea93df7ead97b2501a20b141d46de8f03 columba-2.3.2-beta-official-rns-py-universal.apk
80e190bc243344676ea7342beeb763718abac898df154acd6b39dd56f85749ab columba-2.3.2-beta-official-rns-py-x86_64-no-sentry.apk
20843f9172505a293f5641996174e17136315dbb109f891fc58ab10a03011b99 columba-2.3.2-beta-official-rns-py-x86_64.apk
Reticulum / LXMF / LXST updates
This release picks up the following library updates:
reticulum-kt updated: v0.0.22 → v0.0.24
See torlando-tech/reticulum-kt@v0.0.22...v0.0.24
- fix(local): drop redundant withContext(Dispatchers.IO) in readLoop (
4ce120b) - fix(tcp): match Python reconnect cadence (
37b6b8b) - fix(tcp): preserve rapid reconnect handoff (
471c761) - fix(cli): forward TCP reconnect limit (
924ed42) - fix(tcp): preserve reconnect requests during handoff (
b2f7ecd) - fix(cli): validate TCP reconnect limit (
3897747) - fix(resource): order start callback before transfer (
cdff18f) - fix(resource): stop terminal watchdog restarts (
afd646a) - fix(resource): atomically cancel watchdog (
400397a) - fix(rns-android): route RoomIdentityStore write-through ops through submitWriteThrough (
b66f9ab) - fix(rns-android): retry transient SQLite lock on durable identity/ratchet writes (
c7fdf1a) - fix(rns-android): reconcile retry-exhausted durable writes on next success instead of dropping (
2d11645) - fix(rns-android): scope durable-write reconciliation per executor, coalesce same-key latest-write-wins, and bound each flush turn (
420a4c4) - fix(rns-android): scope durable-write reconciliation per store with an explicit dispose lifecycle, release it on service teardown (
2220675) - fix: close four reticulum-kt security divergences from reference audit (
256a74d) - fix: complete split in-memory resource transfers (F3.1 parity) (
e4ac977) - fix: address F3.1 segment-handoff and metadata-budget edge cases (
407a8ba) - fix(transport): drop registered interfaces when Reticulum stops (
a4c48ee) - fix(link): stop reporting a link request as sent when it was not (
b7cf00d) - fix(transport): count a throwing interface send as not-sent (
8188f8d) - fix: only report reused_raw when the cached frame is actually injected (
ecc9d34) - fix(local): register Transport before starting spawned-child read loop (
87a1efb) - fix(transport): registerDestination filters to IN destinations only (Closes #85) (
35aacbf) - Fix shared instance startup race: register interface before start() (
fdcd450) - fix(resource): sender watchdog recovery actions + atomic failed callback (
72a18f5) - fix(reticulum): deregister the client when a shared-instance start() fails (
21b9641) - fix(interfaces): boundPort returns 0, not -1, for an unbound serverSocket (
edcf0d9) - fix(resource): make the AWAITING_PROOF recovery actually work (python parity) (
1e34123) - fix(transport): schedule the in-memory packet-cache sweep (python parity) (
3b4cdb2) - feat(conformance-bridge): expose resource proof-cache lookup (
8e6b2c0) - perf(conformance-bridge): single proof-cache lookup instead of a poll loop (
7b2a059) - feat(conformance-bridge): observe whether the proof packet carries a link reference (
087bf81) - fix(resource): bind the proof packet to the transfer's link (
7c9891e) - fix(local): only track spawned children in clients after Transport registration (
ba58747) - fix(local): coordinate handleNewClient registration with detach shutdown (
6a5870c) - feat(rns-core): port wire protocol to RNS 1.5.5 parity (
5d1ea28) - fix(link): gate resource request-adv on the receiving-side destination (
724b673) - feat(transport): add INTERNAL interface mode (RNS 1.3.6+) (
cf03a28) - fix(transport): hoist Gate 1 (announces_from_internal) before the mode switch (
eca5f34)
What's Changed
- rns-backend-py: bump ble-reticulum to #49 main head (ed164a8) by @torlando-tech in #1174
- Hot-reload RNS interfaces on the Python backend via RNS 1.5.5 by @torlando-tech in #1175
- chore: bump ble-reticulum pin to v0.2.3 release tag (63557ac) by @torlando-tech in #1179
- ci: bump gradle/actions from 6.3.0 to 6.4.0 by @dependabot[bot] in #1180
- ui(network-status): remove Reticulum Information card by @torlando-tech in #1187
- fix(android-ble): prevent ANR by moving blocking Bluetooth calls off main thread by @sentry[bot] in #1186
- fix(migration): stream export manifest into zip to bound memory (COLUMBA-DS) by @torlando-tech in #1189
- Wire interface mode into reticulum-kt interfaces (Kotlin backend) by @torlando-tech in #1188
- feat: preferred propagation nodes (COLUMBA-1146) by @torlando-tech in #1190
- feat(calls): manual destination entry with recent peer chips by @torlando-tech in #1194
- deps(deps): Bump androidx.datastore:datastore-preferences from 1.1.1 to 1.2.1 by @dependabot[bot] in #824
- Fix two startup failures: Kotlin initialize race, Python AutoInterface port crash by @idan2025 in #1176
- deps(deps): bump org.jlleitschuh.gradle.ktlint from 12.1.1 to 14.2.0 by @dependabot[bot] in #753
- deps(toolchain): bump Kotlin to 2.4.21 with KSP 2.3.12 and Hilt 2.60.1 by @torlando-tech in #1199
- fix(nomadnet): only send partial-declared form fields by @torlando-tech in #674
- fix: run attachment field serialization on injectable dispatcher (fixes shard-3 flake) by @torlando-tech in #1205
- feat: warn user on inbound LXMF messages with unverified signatures by @torlando-tech in #876
- fix(ui): sample composer image preview to avoid Canvas draw crash by @torlando-tech in #1210
- fix(data): replace Formatter-based hex conversion that OOM-crashed (COLUMBA-EE) by @torlando-tech in #1208
- fix: received large images show 'not available' (array-format extraction corruption) by @torlando-tech in #1211
- feat(telemetry): audit Sentry data and add safe memory diagnostics by @torlando-tech in #1213
- deps(deps): bump the testing group with 2 updates by @dependabot[bot] in #1201
New Contributors
Full Changelog: v2.3.1-beta...v2.3.2-beta