Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,5 @@ Pushes to `main` are built and deployed automatically to docs.pombo.cc by the Gi
## Links

- App: [app.pombo.cc](https://app.pombo.cc)
- Source: [github.com/Ocnrb/Pombo](https://github.com/Ocnrb/Pombo)
- Source: [github.com/Pombo-app/Pombo](https://github.com/Pombo-app/Pombo)
- X: [@app_Pombo](https://x.com/app_Pombo)
2 changes: 1 addition & 1 deletion docs/concepts/gated-and-paid-channels.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,6 @@ Closed channels are never listed, whatever the owner picks. The general rules fo
## Honest limits

- **Revocation is not instant.** Encryption keys rotate on a weekly cadence, so someone who sells the gate asset or lets a subscription lapse can still read new messages until the next rotation — and rotations happen only while the channel's admin is online. The contract cuts them off immediately for everything the *contract* controls; the key layer catches up afterwards.
- **The contracts have not been audited.** They are open source (see [pombo-contracts](https://github.com/Ocnrb/pombo-contracts)) and deliberately small, but no third party has reviewed them.
- **The contracts have not been audited.** They are open source (see [pombo-contracts](https://github.com/Pombo-app/pombo-contracts)) and deliberately small, but no third party has reviewed them.
- **Paying is public.** Subscriptions, memberships and bans are contract state on a public blockchain: anyone can see which address pays for which channel, and when.
- **Authorship is not hidden.** The contract is the publisher on the wire, but your account's signature travels beside it in the clear, and it is what the network checks — so it cannot be encrypted, and anyone can recover who wrote what. Content stays private to members; participation does not. The reasoning is in the [privacy model](privacy-model.md#contract-backed-channels).
12 changes: 7 additions & 5 deletions docs/getting-started/first-steps.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ description: Join a channel, send your first message, and DM someone.

Channels are Pombo's group spaces. You can find them two ways:

- **Explore** — the in-app discovery view listing public channels.
- **Direct link** — any channel can be shared as a URL. Opening the link takes you straight there. Try the official Pombo channel: [app.pombo.cc/#/channel/…](https://app.pombo.cc/#/channel/0xae340e799e8151f6a4999d245e466197aa217667/9862eb7bd898f338-1)
- **Explore**, the in-app discovery view listing public channels.
- **Direct link**: any channel can be shared as a URL. Opening the link takes you straight there. Try the official Pombo channel: [app.pombo.cc/#/channel/…](https://app.pombo.cc/#/channel/0xae340e799e8151f6a4999d245e466197aa217667/9862eb7bd898f338-1)

There are five kinds of channels; the app shows which is which:

Expand All @@ -27,17 +27,19 @@ More detail in [Channels and ownership](../concepts/channels-and-ownership.md),

## Send a message

Type and send — messages propagate peer-to-peer over the Streamr Network and are persisted by storage nodes so people who join later (or come back online) can read the history. Reactions, edits, deletes, and replies work as you'd expect.
Type and send. Messages propagate peer-to-peer over the Streamr Network and are persisted by storage nodes so people who join later (or come back online) can read the history. Reactions, edits, deletes, and replies work as you'd expect.

## Direct messages

You can DM **anyone who has created their inbox** — enter their address (or ENS name) and write. They don't need to be online, and you don't need to be "friends" first. The one requirement is that the recipient has set up their DM inbox — an explicit one-time step (it registers streams on-chain, so it costs a small POL fee). The same applies to you: create your inbox to receive DMs and replies.
Start by creating your **DM inbox**. It is what lets you receive messages and replies, and what keeps your devices in sync. Setting it up registers streams on-chain, so it costs a small POL fee: once, and never again.

With that done, you can write to anyone who has an inbox of their own. Enter their address or ENS name and send. They don't need to be online, and there is no friend request to accept first.

DMs are end-to-end encrypted with sealed sender: only the recipient can read the message, and only the recipient learns who sent it. See [Encryption](../concepts/encryption.md).

## Create your own channel

Creating a channel registers streams on Polygon PoS, which costs a small network fee in POL — one of the handful of on-chain actions that do (the [FAQ](../help/faq.md#is-pombo-free) has the full list). See [Managing channels](../guides/managing-channels.md).
Creating a channel registers streams on Polygon PoS, which costs a small network fee in POL, one of the handful of on-chain actions that do (the [FAQ](../help/faq.md#is-pombo-free) has the full list). See [Managing channels](../guides/managing-channels.md).

## Before you go further

Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Installing gives you an app icon, a full-screen UI, and — on iOS — the abili

## Android app

An Android app — a native Kotlin/Jetpack Compose UI running the same protocol stack as the web app — is available from the [GitHub repository](https://github.com/Ocnrb/Pombo-Android). It is wire-compatible with the web app — same account format, same channels, same encryption — and uses Firebase Cloud Messaging for push notifications.
An Android app — a native Kotlin/Jetpack Compose UI running the same protocol stack as the web app — is available from the [GitHub repository](https://github.com/Pombo-app/Pombo-Android). It is wire-compatible with the web app — same account format, same channels, same encryption — and uses Firebase Cloud Messaging for push notifications.

Requirements: Android 8.0 (API 26) or newer.

Expand Down
2 changes: 1 addition & 1 deletion docs/operators/run-a-relay.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ That's Raspberry Pi territory. A home PC, a free-tier cloud VM, or the cheapest
## Setup

```bash
git clone https://github.com/Ocnrb/Pombo-push
git clone https://github.com/Pombo-app/Pombo-push
cd Pombo-push
npm install
cp .env.example .env
Expand Down
57 changes: 41 additions & 16 deletions docs/welcome.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,63 @@
id: welcome
title: What is Pombo?
slug: /
description: Pombo is an open-source gateway to decentralized communications — group channels, communities, and private direct messages with no central servers.
description: "Pombo is an open-source, permissionless messaging and social media app: peer-to-peer, with no accounts to approve, no servers in the middle, and channels whose creators keep everything they charge."
---

# What is Pombo?

**Pombo is an open-source gateway to decentralized communications** — group chats, communities, and private direct messages. No central servers, no sign-ups, no one reading your data.
**Pombo is an open-source messaging and social media app**: group channels and private direct messages, running without a company in the middle of any of it.

Your conversations belong to *you*:
What follows is a consequence of how it is built, not a policy anyone maintains.

- **No permissions needed.** Your account is a cryptographic keypair generated locally in your browser. No email, no phone number, no sign-up form.
- **No central servers.** Messages travel over the [Streamr Network](https://streamr.network), a peer-to-peer pub/sub network. There is no Pombo backend that could go down or be seized.
- **You own your channels.** Channel ownership and permissions live on [Polygon PoS](https://polygon.technology) as on-chain records. If the Pombo interface disappeared tomorrow, your channels would still exist on the network.
- **No middlemen.** Pombo is fully open source. Encryption happens on your device, before anything touches the network.
- **No hidden costs.** Pombo takes no cut of anything and has no premium tier. A small network fee (paid in POL) applies only to on-chain actions such as creating a channel. Creators can put their own channel behind a token or a subscription, and that money is theirs — but open channels stay free to join and use.
## Nobody has to let you in

Your account is a cryptographic keypair generated on your device the first time you open the app. There is no email, no phone number, no form, and no approval step. Because no record of you is created anywhere, there is no account to suspend, rate-limit or lock out.

Creating a channel is the same: you register it and it is yours. It becomes your property. Accounts are free and instant, so keeping separate identities for separate parts of your life costs nothing.

## No servers in the middle

Messages travel peer-to-peer across the [Streamr Network](https://streamr.network). There is no Pombo backend they pass through, so there is nothing to hack, subpoena or switch off.

History is kept by storage nodes. Pombo runs a default cluster, but a channel's owner can point it at a different node, and [anyone can run one](operators/run-a-storage-node.md). The same is true of the [relay](operators/run-a-relay.md) that delivers push notifications.

## Your channels outlive the app

Channel ownership and access rules are records on [Polygon PoS](https://polygon.technology), registered to your address. Nobody, Pombo included, can take a channel from you or change who may read it.

That also makes this interface replaceable. Any client speaking the same protocol reads the same channels, so if Pombo disappeared tomorrow, what you built would still be on the network.

## Encrypted before it leaves your device

All cryptography runs locally, on web and Android alike, before anything is published. Direct messages are end-to-end encrypted and sealed, so only the recipient learns who wrote. In public and password channels you publish under a throwaway key rather than your account, so the network sees traffic, not a person.

None of that is absolute, and the [threat model](security/threat-model.md) says exactly where it stops.

## Creators keep the whole price

A channel can charge for entry: a token or NFT to hold, or a subscription at a price and period its owner sets. Each subscription goes straight to the owner. No fee, no revenue share, no Pombo account in between. The payment function is a single transfer to the owner's address, and anyone can read it.

Everything else is free. Joining a public channel, chatting, DMs and file sharing cost nothing, and Pombo has no premium tier and no ads. Actions that write to the blockchain, such as creating a channel, cost a few cents in POL paid to the network.

## Where to start

| I want to… | Go to |
| | |
|---|---|
| Install Pombo and create an account | [Getting Started → Install](getting-started/install.md) |
| Understand how it works under the hood | [Core Concepts → Architecture](concepts/architecture.md) |
| Understand exactly what is (and isn't) private | [Security → Threat model](security/threat-model.md) |
| Run infrastructure for the network | [Node Operators → Run a push relay](operators/run-a-relay.md) |
| **Try it** | [Install Pombo](getting-started/install.md), then [first steps](getting-started/first-steps.md) |
| **Run a channel** | [Managing channels](guides/managing-channels.md) · [Gated and paid channels](concepts/gated-and-paid-channels.md) |
| **Understand it** | [Architecture](concepts/architecture.md) · [Encryption](concepts/encryption.md) · [Privacy model](concepts/privacy-model.md) |
| **Check our claims** | [Threat model](security/threat-model.md) |
| **Run infrastructure** | [Push relay](operators/run-a-relay.md) · [Storage node](operators/run-a-storage-node.md) |

## Platforms

- **Web app (PWA)** — [app.pombo.cc](https://app.pombo.cc). Works in any modern browser and can be installed as an app.
- **Android** — a native Kotlin/Compose UI over the same protocol stack as the web app, wire-compatible. See [Install](getting-started/install.md).
- **Web (PWA)** at [app.pombo.cc](https://app.pombo.cc), installable from any modern browser.
- **Android**, a native app speaking the same protocol, so the two interoperate exactly.

## Links

- Website: [pombo.cc](https://pombo.cc)
- App: [app.pombo.cc](https://app.pombo.cc)
- Source code: [github.com/Ocnrb/Pombo](https://github.com/Ocnrb/Pombo)
- Source code: [github.com/Pombo-app/Pombo](https://github.com/Pombo-app/Pombo)
- X: [@app_Pombo](https://x.com/app_Pombo)
6 changes: 3 additions & 3 deletions docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const config = {
baseUrl: '/',

// GitHub pages deployment config.
organizationName: 'Ocnrb',
organizationName: 'Pombo-app',
projectName: 'pombo-docs',

onBrokenLinks: 'throw',
Expand Down Expand Up @@ -87,7 +87,7 @@ const config = {
position: 'right',
},
{
href: 'https://github.com/Ocnrb/Pombo',
href: 'https://github.com/Pombo-app/Pombo',
label: 'GitHub',
position: 'right',
},
Expand All @@ -106,7 +106,7 @@ const config = {
{
title: 'Community',
items: [
{label: 'GitHub', href: 'https://github.com/Ocnrb/Pombo'},
{label: 'GitHub', href: 'https://github.com/Pombo-app/Pombo'},
{label: 'X', href: 'https://x.com/app_Pombo'},
],
},
Expand Down