Skip to content
Loki Messenger - Onion routing based messenger
Branch: clearnet
Clone or download
Pull request Compare This branch is 1009 commits ahead, 103 commits behind signalapp:development.
BeaudanBrown Merge pull request #344 from BeaudanBrown/close-polling
Start attempt at closing long polling connections when offline event is triggered
Latest commit 3a04bab Jul 19, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Merge branch 'development' into fix-friend-request-logic May 28, 2019
.tx Transifex config specific to electron, updated translations (signalap… Sep 15, 2017
_locales Loki changes Apr 24, 2019
app Fix password error Jul 5, 2019
build Added loki icon. Jan 16, 2019
components Partial Merge commit 'bf904ddd129ceba8fa363ccf6d10ecd256c65f63' into … Apr 17, 2019
config Choose a random seed node from a list for bootstrapping Jul 3, 2019
fixtures Ensure that multi-video lightbox scrolling changes video Nov 28, 2018
fonts Add fonts so we don't have to hit googlefonts Feb 12, 2015
images Left pane changes. Apr 17, 2019
js Comment explaining stopPollingPromise Jul 15, 2019
libloki Run lint and check for ip or address when removing unreachable nodes Jul 4, 2019
libtextsecure Start attempt at closing long polling connections when offline event … Jul 15, 2019
mnemonic_languages Moved mnemonic to node side. Added sc_reduce32 (asm) to generate priv… Oct 24, 2018
mockup_servers Linting and other housekeeping stuff Nov 1, 2018
protos send "unreachable" ping to allow half-p2p Jun 28, 2019
stylesheets Loki changes Apr 24, 2019
test Convert profile field in data message to use LokiProfile instead of s… May 28, 2019
ts Comment out the show all media button Jun 14, 2019
.aptly.conf Setup publishing to s3 Sep 14, 2017
.editorconfig Use 2 spaces for indentation May 4, 2018
.eslintignore Merge signal-1.24.0 Apr 18, 2019
.eslintrc.js Line break rule fix for windows. Jan 17, 2019
.gitattributes Stop git from defaulting to changing line endings Feb 14, 2019
.gitignore
.gitlab-ci.yml Set the windows cd to look in the release folder instead of dist Feb 21, 2019
.nvmrc Upgrade to node 10.13.0; update chokidar, its dep upath fails Nov 26, 2018
.prettierignore Merge signal-1.24.0 Apr 18, 2019
.prettierrc.js Add `.prettierrc.js` Apr 30, 2018
.travis.yml Remove travis windows. Apr 30, 2019
.yarnclean node-sqlcipher update: always build, statically link openssl Aug 3, 2018
CONTRIBUTING.md linting May 24, 2019
Gruntfile.js Show commit hash in About window for beta builds Mar 1, 2019
LICENSE Add GPLv3 LICENSE file (signalapp#1309) Oct 20, 2017
LOKI-NOTES.md Linting and other housekeeping stuff Nov 1, 2018
README.md Updated whitepaper link May 3, 2019
about.html Show commit hash in About window for beta builds Mar 1, 2019
about_preload.js Show commit hash in About window for beta builds Mar 1, 2019
appveyor.yml Removed testing windows release on AppVeyor Apr 30, 2019
aptly.sh Remove unused aptly target Mar 29, 2019
background.html Loki changes Apr 24, 2019
bower.json Replaced more references to signal with loki and updated CONTRIBUTING.md Apr 11, 2019
debug_log.html Replaced more references to signal with loki and updated CONTRIBUTING.md Apr 11, 2019
debug_log_preload.js Update the user agent for debug log requests Jul 19, 2018
dev-app-update.yml.sample Show dialog box when there's an update for download Sep 14, 2017
find_broken_perms.sh Add two scripts to handle broken permissions in release dir Sep 14, 2017
fix_broken_perms.sh Replaced more references to signal with loki and updated CONTRIBUTING.md Apr 11, 2019
index.html Merge branch 'textsecure/master' into merge_1_21_0 Feb 6, 2019
main.js Fix release notes link Jul 7, 2019
metrics.html add TTL variation in pow metrics Jan 14, 2019
metrics_app.js Linted files Jan 16, 2019
package.json Update to beta 2 Jul 5, 2019
password.html Added db resetting. Jan 29, 2019
password_preload.js Fix password error Jul 5, 2019
permissions_popup.html New media permission, show dialog when not enabled for voice msg Jul 3, 2018
permissions_popup_preload.js Fix permissions popup; add needed function on window (signalapp#2554) Jul 20, 2018
preload.js Run lint and check for ip or address when removing unreachable nodes Jul 4, 2019
prepare_beta_build.js win & osx builds on gitlab Dec 14, 2018
prepare_import_build.js Use window.log in browser context, turn on console eslint rule Jul 21, 2018
settings.html Merge signal-1.24.0 Apr 18, 2019
settings_preload.js Left pane changes. Apr 17, 2019
styleguide.config.js
travis.sh Simplify testing and linting Apr 11, 2018
tsconfig.json Move left pane entirely to React Mar 13, 2019
tslint.json Download and install updates without the help of electron-updater Apr 6, 2019
yarn.lock Clearnet p2p with https (no verification yet) Jun 28, 2019

README.md

Loki Messenger

Build Status

Loki Messenger allows for truly decentralized and end to end and private encrypted chats, Loki Messenger is built to handle both online and fully Asynchronous offline messages , Loki messenger implements the Signal protocol for message encryption, Our Client interface is a fork of Signal Messenger. All communication that passes through Loki messenger is routed through Lokinet.

Summary

Loki messenger integrates directly with Loki Service Nodes, which are a set of distributed, decentralized and Sybil resistant nodes. Service Nodes act as both federated servers which store messages offline, and a set of nodes which allow for onion routing functionality obfuscating users IP Addresses. For a full understanding of how Loki messenger works, read the Loki whitepaper

Online Messages

If Alice and Bob are both online they can simply resolve each others public keys, to introduction sets, this functionality is handled by interfacing with Lokinet. With the appropriate introduction sets Alice and Bob can create a path and using onion routing pass messages through the Loki network without giving away personally identifiable information like their IP address.

Offline messages

Offline messaging uses Swarms, given any users public key the user can resolve a public key to a specific grouping of Service Nodes (AKA Swarm) each user in Loki Messenger belongs to a Swarm. When routing a message offline the user selects a Service node in the destination users Swarm, when the user comes online they query any node in their Swarm, if the Swarm is holding any messages for the user they disseminate those messages to the user.

Swarm Messaging

Spam protections for Loki Messenger are based on a Proof of Work which is attached to any message that exceeds a default size or Time To Live, this process is discussed further in the Loki whitepaper.

Want to Contribute? Found a Bug or Have a feature request?

Please search for any existing issues that describe your bugs in order to avoid duplicate submissions. Submissions can be made by making a pull request to our development branch, if you don't know where to start contributing , try reading the Github issues page for ideas.

Build instruction

build instructions can be found in CONTRIBUTING.md

License

Copyright 2018- Current, Loki Foundation Copyright 2014-2018, Open Whisper Systems Licensed under the GPLv3: http://www.gnu.org/licenses/gpl-3.0.html

You can’t perform that action at this time.