owl

module
v0.0.0-...-1704659 Latest Latest
Warning

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

Go to latest
Published: Jun 3, 2023 License: GPL-3.0

README

Owl Messenger

Owl is a fully distributed peer-to-peer messenger, built with INET256 and SQLite.

Documentation

Why Owl?

  • Fully distributed/peer-to-peer. Owl doesn't need a central server for messages. It relies on INET256 to connect to other instances.
  • No phone number or email address required.
  • Multi-device support. Synchronized contact and channel lists
  • Well understood formats. All the state for an instance is stored in one SQLite database JSON is used whereever possible.
  • Owl thinks of distributed messaging as a purely distributed systems problem. As much of the cryptography as possible is offloaded to the transport layer. INET256 provides secure message passing between nodes, and that is all Owl needs. There are no fancy cryptographic protocols anywhere in Owl.

Goals

  • Stable upward facing API, so that GUIs and other client applications can depend on it.
  • Slack style channels with threads, reactions, and replies.
  • Synchronized channel and contact lists.
  • Shared channel directories analagous to Slack or Discord servers.
  • Easy to export your data, you can always dump contacts and message history to JSON files.
  • Avoid cryptography. Let INET256 take care of that. So far it looks like Owl will only need to use signatures and hashes.
  • Identity is defined as a set of keys managed with humans in the loop.

Non-Goals

  • Format or protocol specifications or interoperability with other implementations. This is the only implementation and it can be embedded or called into by clients.
  • Blockchain, DHT or other public global state. Owl will only ever exchange messages directly with known peers using INET256.
  • Any concept of identity without humans in the loop. If Alice says that Bob is addresses x, y, and z, then that's who Bob is to her. There will be no global namespace, ledger or other authority to tell her otherwise. Messages from those addresses will appear as coming from Bob, and her Owl instance will sync channels with those addresses.

Not-Yet Goals

  • Voice/Video calling. INET256 provides secure, unordered, and unreliable delivery, which is ideal for real time applications.
  • A reasonable solution to xkcd.com/949

Getting Started

Owl is written in Go. The entrypoint is in cmd/owl. You can run it with go run ./cmd/owl, install with go install ./cmd/owl/.

Read the CLI Docs to learn more about how to use the owl command.

Read the API Docs to learn how to interact with a running owl instance.

More

Support and discussion happen in the INET256 discord

Jump to

Keyboard shortcuts

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