Reference implementation for connecting to the Yggdrasil Network from Android devices
Find a file
Revertron 1b921b313d
Release v0.5.13 (#92)
* Updated Yggdrasil-go submodule and improved readme.
* Added peer validation on input.
* Version increment and short notes for f-droid.
* Updated CI.
2026-03-13 15:31:23 +01:00
.github/workflows Release v0.5.13 (#92) 2026-03-13 15:31:23 +01:00
app Release v0.5.13 (#92) 2026-03-13 15:31:23 +01:00
fastlane/metadata/android Release v0.5.13 (#92) 2026-03-13 15:31:23 +01:00
gradle/wrapper Updated graddle and some deps. (#54) 2023-11-29 21:42:06 +01:00
libs Release v0.5.13 (#92) 2026-03-13 15:31:23 +01:00
.gitignore CI 2022-10-29 23:26:14 +01:00
.gitmodules Returned the yggdrasil-go submodule. (#63) 2024-08-19 00:07:45 +02:00
build.gradle Prepare for release 0.5.9 (#68) 2024-10-23 18:10:01 +02:00
gradle.properties Updated graddle and some deps. (#54) 2023-11-29 21:42:06 +01:00
gradlew Initial commit 2021-06-16 19:21:09 +01:00
gradlew.bat Initial commit 2021-06-16 19:21:09 +01:00
LICENSE MIT License 2022-10-30 22:14:13 +00:00
readme.md Release v0.5.13 (#92) 2026-03-13 15:31:23 +01:00
settings.gradle Initial commit 2021-06-16 19:21:09 +01:00

Yggdrasil Android

Yggdrasil is an early-stage implementation of a fully end-to-end encrypted IPv6 network. It is lightweight, self-arranging, supported on multiple platforms and allows pretty much any IPv6-capable application to communicate securely with other Yggdrasil nodes. Yggdrasil does not require you to have IPv6 Internet connectivity - it also works over IPv4.

This app allows you to connect to Yggdrasil Network and use any service located in this network. It works as VPN service, but all your usual traffic will go trough your provider, not through Yggdrasil Network.

Also, it is not a goal of the Yggdrasil project to provide anonymity. Direct peers over the Internet will be able to see your IP address and may be able to use this information to determine your location or identity. Multicast-discovered peerings on the same network will typically expose your device MAC address. Other nodes on the network may be able to discern some information about which nodes you are peered with.

All traffic sent across the Yggdrasil network is encrypted end-to-end. Assuming that our crypto is solid, it cannot be decrypted or read by any intermediate nodes, and can only be decrypted by the recipient for which it was intended. However, please note that Yggdrasil has not been officially externally audited.

Download

Get it on F-Droid

Or get the APK from the Releases Section.

Build Instructions

  • install gomobile
go install golang.org/x/mobile/cmd/gomobile@latest
  • clone yggdrasil-android and initialize the yggdrasil-go submodule
git clone https://github.com/yggdrasil-network/yggdrasil-android /tmp/yggdrasil-android
cd /tmp/yggdrasil-android
git submodule update --init
  • build yggdrasil-go for android and copy over the built library
cd libs/yggdrasil-go
./contrib/mobile/build -a
cp yggdrasil.aar ../../app/libs/
cd ../..
  • build yggdrasil-android
./gradlew assembleRelease

Updating yggdrasil-go to the Latest Release

The yggdrasil-go library is pinned as a git submodule in libs/yggdrasil-go. To update it to the latest release and rebuild:

cd libs/yggdrasil-go
git fetch --tags
git checkout $(git describe --tags $(git rev-list --tags --max-count=1))

Then rebuild the library and copy it:

./contrib/mobile/build -a
cp yggdrasil.aar ../../app/libs/
cd ../..

Finally, commit the submodule update:

git add libs/yggdrasil-go
git commit -m "Update yggdrasil-go to $(cd libs/yggdrasil-go && git describe --tags)"

note: you will need to use jdk-11 as jdk-16 "doesn't work" ™

on debian/ubuntu you can set which jdk used with the JAVA_HOME env var:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/