berty

module
v2.343.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 13, 2022 License: Apache-2.0, MIT

README

Berty

Berty is an open, secure, offline-first, peer-to-peer and zero trust messaging app

berty.tech discord github twitter

GoDoc GitHub release CodeFactor


TLDR : Install it!

Mobile

To compile and run the mobile application on your device, see js/README.md.

CLI

You can go run or go install the CLI tool located in go/cmd/berty. The two main command line utilities are:

  • berty mini: a CLI messaging app using the Berty Protocol.
  • berty daemon: a full node manageable through the Berty Protocol API.

Introduction

Warning: Berty is still under active development and should not yet be used to exchange sensitive data.

Berty is a privacy-first messaging application built on top of the Berty Protocol.

  • Secure and private :
    • Messages are end-to-end encrypted by default
    • Metadata is kept to a minimum
    • No phone number or email address is required to create an account
    • Built to retain its properties even when used on adversarial networks
  • Censorship-resilient
    • Decentralized, distributed, peer-to-peer and serverless
    • No internet connection is required, thanks to BLE technology and mDNS.
  • Open :
    • Free forever and open-source

Berty is designed to be used as an everyday messaging application. Nonetheless, it was built to primarily serve the following use cases:

  • When you need to share sensitive information over untrusted networks, for instance while traveling
  • If you want to communicate anonymously
  • If you want full control over your data and thus don't want to rely on third-party servers
  • In countries that actively monitor and temper with their network, restricting its use and censoring some of its contents
  • In areas with weak or no connection at all

Berty is currently developed by Berty Technologies, a French nonprofit organization.

Note: this project is led by a small team made of humans, who make mistakes. Please do not hesitate to point out bugs or missing features. See the contribute section below.

We cannot promise we will offer you the best application, but we dedicate ourselves to doing our best to create a great one.

The philosophy behind Berty

We want to contribute to a world where free and secure communications are common and fear of censorship or surveillance are not.

We believe that open-source is more secure, as anyone can examine the code and improve it: this is why we rely on and build open and free software.

As the founding team, our ultimate goal is to progressively relinquish control over Berty and to make it become a truly global community project.

More info on berty/community.

Development Status

The current Berty implementation is using the Berty Protocol, which means the encryption technique is safe, and it works as a peer-to-peer app!

Alas, Berty has not yet been hardened, so please avoid using it on devices with weak sandboxes, such as unpatchable devices that use old Android versions.

The current Berty Protocol is partially implemented.

The API will continue to evolve in the near future. As such, we cannot yet guarantee none-breaking changes, or any kind of API stability. Be prepared for a rough ride if you start rolling the Berty Protocol in your application.

We will have an open beta for the different packages and applications soon, so anyone will be able to give it a try. Subscribe to our newsletter if you wish to be notified.

Note: The repositories are being opened progressively, and there will be additional modifications and updates soon.

Under the hood

Berty Protocol

go.dev reference Code coverage

The Berty Protocol comes with a generic, but full-featured SDK allowing developers to write peer-to-peer applications. You can just focus on high-level features for your app, we will take care of the rest (encryption, identities, network routing, group management, account management, device management, application lifecycle).

The main concept of the Berty Protocol is called the "group", a virtual place where multiple devices can share messages and metadata using OrbitDB, which itself relies on the InterPlanetary File System (IPFS)

Get it:

git clone https://github.com/berty/berty

The Berty Messenger

Code coverage

The Berty Messenger, or simply Berty, is a messaging application written in React Native, that uses the Berty Protocol through gomobile-ipfs, which, in turns, is using gomobile.

Main items in the repo

  • ./go: Where all the Golang code lies.
  • ./js: Where all the Javascript/Typescript code lies:
    • The Berty Messenger application, written in React Native.
  • ./docs: Mostly auto-generated documentation.

Contributing

Contribute to Berty

We welcome contributions! Your input is deeply appreciated and extremely valuable to us. We thank you in advance for it.

There is no small feat: everyone is encouraged to do what they can to help, based on their ability and interest.

There are plenty of ways to get involved and to help our community, which can roughly be divided in two distinct parts: everything that is related to the code and everything that is not.

To put it simply:

  • Code-related = GitHub
  • Not code-related = Open a task

Everything about contribution is summed up here: CONTRIBUTING.MD

Stargazers over time

Stargazers over time

Other resources

Contact

For a direct contact, see our contact page of our website. Alternatively, take a look at our community repository.

Licensing

© 2018-2021 Berty Technologies

Licensed under the Apache License, Version 2.0 (LICENSE-APACHE) or the MIT license (LICENSE-MIT), at your discretion. See the COPYRIGHT file for more details.

Directories

Path Synopsis
go
cmd/berty
Berty is the main CLI entrypoint to manage the Berty ecosystem (client, server, relay, dev).
Berty is the main CLI entrypoint to manage the Berty ecosystem (client, server, relay, dev).
cmd/berty/mini
Package mini contains main helpers to start a term-based Berty mini client.
Package mini contains main helpers to start a term-based Berty mini client.
cmd/rdvp
rdvp is a service to hold Berty's rendezvous point for faster peer discovery.
rdvp is a service to hold Berty's rendezvous point for faster peer discovery.
framework/bertybridge
Package bertybridge is the main gomobile entrypoint, used to generate iOS and Android frameworks.
Package bertybridge is the main gomobile entrypoint, used to generate iOS and Android frameworks.
internal/config
file generated.
file generated.
internal/cryptoutil
Package cryptoutil contains generic & stateless crypto helpers.
Package cryptoutil contains generic & stateless crypto helpers.
internal/discordlog
discordlog is an unsafe package used during development to log info directly on the Berty's Discord server.
discordlog is an unsafe package used during development to log info directly on the Berty's Discord server.
internal/grpcutil
Package grpcutil contains gRPC lazy codecs, messages and a buf-based listener.
Package grpcutil contains gRPC lazy codecs, messages and a buf-based listener.
internal/handshake
Package handshake implements a capability-based handshake.
Package handshake implements a capability-based handshake.
internal/ipfsutil
Package ipfsutil contains helpers around IPFS (logging, datastore, networking, core API, ...).
Package ipfsutil contains helpers around IPFS (logging, datastore, networking, core API, ...).
internal/testutil
Package testutil contains testing helpers (logging, slow skipping).
Package testutil contains testing helpers (logging, slow skipping).
internal/tinder
Package tinder is a multi-driver service backed by a cache.
Package tinder is a multi-driver service backed by a cache.
internal/tools
Package tools ensures that `go mod` detect some required dependencies.
Package tools ensures that `go mod` detect some required dependencies.
pkg/banner
Package banner generates ASCII picture of the Berty logo with a message.
Package banner generates ASCII picture of the Berty logo with a message.
pkg/bertymessenger
Package bertymessenger contains the top-level API that uses the Berty Protocol to implement the Berty Messenger specific logic.
Package bertymessenger contains the top-level API that uses the Berty Protocol to implement the Berty Messenger specific logic.
pkg/bertyprotocol
Package bertyprotocol contains code for integrating the Berty protocol in your project.
Package bertyprotocol contains code for integrating the Berty protocol in your project.
pkg/errcode
Package errcode contains the list of Berty error codes.
Package errcode contains the list of Berty error codes.
pkg/messengertypes
Package messengertypes is a reverse proxy.
Package messengertypes is a reverse proxy.
pkg/protocoltypes
This package is generated with Protobuf.
This package is generated with Protobuf.
pkg/pushtypes
Package pushtypes is a reverse proxy.
Package pushtypes is a reverse proxy.
pkg/replicationtypes
Package replicationtypes is a reverse proxy.
Package replicationtypes is a reverse proxy.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL