Join the Agent Deck Discord Server!
Discord에서 Agent Deck 커뮤니티 확인, 357명과 자유 음성·텍스트 채팅 이용
Usenet, unseen: a decentralized, encrypted discussion network over Tor onion services, specified as RFCs
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Pre-alpha. Nothing is stable yet, and Unseenet has not had a security review. Do not rely on it to protect anyone yet.
📖 Documentation: unseenet.org
In the old days, you connected to your news server. Your server exchanged articles with other servers, and before long your post had travelled around the world. Nobody owned Usenet. Anyone could run a server. You could read it with any newsreader.
Unseenet brings that model back, with what we have learned since:
How it all fits together, in plain prose: How it works, and what is hidden from whom: the threat model.
The protocol is defined in the UN-RFC series, in rfc/ and on
unseenet.org/spec. The documents are the
authority; this code is one implementation. To change the protocol or build
something compatible, start with UN-RFC 0000 and
0001. All are drafts while Unseenet is pre-alpha, and each
says in its header what is already built (Implemented:).
| Area | UN-RFCs |
|---|---|
| The basis - how the network is built, what a post is, keys, the wire, postage, the vault | 0000 Process · 0001 Architecture · 0002 Article format · 0003 Identities and crypto · 0005 ONNTP transport · 0006 Proof-of-work postage · 0007 Data at rest |
| Groups - owned by a key, their charters, hierarchies, inboxes | 0004 Groups · 0013 Removing groups · 0014 Group charters · 0015 Ownership transfer · 0018 Hierarchies · 0029 Key-bound groups · 0040 Key-bound groups at scale · · |
The heart of Unseenet: the protocol and the code every other part builds on.
| Where | What | |
|---|---|---|
| The specification | rfc/ | The UN-RFCs above. |
| The core | src/unseenet/core/, client/ | The library: articles, signing and keys, the vault, postage and key ripening, groups, profiles, pages, files; Session, which every client, bot and gateway is built on; the local client API (client/localapi/). On PyPI as unseenet. |
| The node | src/unseenet/node/, deploy/, docker/ | unseenet-node, which stores groups and peers with other nodes over Tor; its installer, systemd units and Docker image; unseenet-monitor, the operator's view; unseenet-registrar for names. |
| The command-line client | src/unseenet/cli/ | unseenet: everything the core can do, from a shell or a script. |
| The project | tools/project/, |
The build tools are in their own repositories: unseenet-portable for the portable builds, unseenet-bootable for the bootable images.
| Use Unseenet | The terminal client or the graphical client, portable with Tor inside, bootable from a stick, or in a browser through a web entrance. Start here: Getting started. |
| Run a node | curl -fsSL https://raw.githubusercontent.com/unseenet/unseenet/main/deploy/install-node.sh | sudo bash on Debian or Ubuntu, or Docker. Guide |
| The core and the CLI | pipx install unseenet (Python 3.11+ and tor), then unseenet --help; unseenet[language] adds a larger language model for telling what a text is written in. Build on it: Write a client. |
| Other newsreaders | Read the open groups with tin, Thunderbird and friends: Other newsreaders. |
The project's own groups, unseenet, unseenet.help and
unseenet.announce (all @ph5fc5hop5232qsz), are on the project's nodes; the
clients subscribe you on first start.
A client keeps its keys in an encrypted vault and talks to a node over Tor (ONNTP, UN-RFC 0005). It signs every article and pays its postage; the node checks both, stores the article and passes it to the nodes it peers with, without knowing who wrote it or where it came in. Groups are owned by a key whose signed manifest says who may post and how the group is shown; closed groups and inboxes carry only ciphertext. Everything else - chats, feeds, sites, reactions, profiles - is articles in groups too. So are spam reports and content labels: signed statements in their issuers' channels, which a client applies only for the people who chose to follow them.
Read it chapter by chapter: How it works.
pip install -e ".[dev]"
pytest -q # nodes on localhost, no Tor
tools/docs_check.sh serve # this repository's docs pages
Protocol changes go through the UN-RFC process (an issue first, then a draft); code changes through ordinary pull requests. See Development for the architecture and the design decisions, the milestones for what comes next, and the issues for everything else.
Semantic versioning, pre-1.0: a minor version (0.5 → 0.6) may change the
protocol, and nodes are updated first. Tags vX.Y.Z on main; the release
workflow checks the tag against __version__ and CHANGELOG.md,
publishes to PyPI and announces the
release in unseenet.announce. The newest minor version gets security and bug
fixes until the next (SECURITY.md). Clients and services
number their own releases and say which core they need.
| Repository | What it is |
|---|---|
| unseenet | The protocol (UN-RFCs), the core library, the node and the command-line client |
| unseenet-tui | The terminal client |
| unseenet-gui | The graphical client - in a window, booted, or in a browser |
| unseenet-portable | Builds the portable clients, Terminal and Graphical, with Tor inside |
| unseenet-bootable | Builds the bootable images, Terminal and Graphical |
| unseenet-docs | The site unseenet.org |
| unseenet-entrance | Web entrances: the graphical client in an ordinary browser |
| unseenet-gateway | Gateways to other networks: Usenet, Nostr, Matrix |
| unseenet-bots | Bots that keep channels filled with current content |
| unseenet-helpbot | The bot that answers questions in unseenet.help |
| unseenet-watchman |
rfc/) and logo (assets/):
CC BY 4.0 - copy, quote and implement freely, with creditAnyone may implement the protocol; no license is needed for that.
| What people write - posts and chats, files, Markdown, feeds, sites, reactions | 0008 Chat and low latency · 0027 Attachments · 0028 Chats and posts · 0030 Comments in channels · 0031 Markdown and emoji · 0032 Mention notices · 0033 Pinned posts · 0034 Feeds and following · 0035 Pages and sites · 0042 Editing posts · 0048 Reactions · 0049 Imported posts · 0052 Tags and languages |
| People and keys - names, profiles, key ripening, standing, your state | 0009 Inbox and local groups · 0019 Names for identities · 0022 Profiles · 0025 Key ripening · 0036 Attestations · 0044 Your state in the network · 0050 Copying an identity, recovery words · 0054 Councils and the registrar |
| What you see - your own rules, reports and labels you choose to follow | 0045 Spam reports · 0051 Your own rules · 0053 Content labels |
| Nodes - finding them, peering, keeping, the project's lists | 0010 Known nodes · 0011 Node information · 0012 Retention and archives · 0016 Peer keys · 0017 Catch-up by pull · 0020 Lists from inside the network · 0021 Listed nodes must be connected |
| The way out - gateways to other networks, web entrances | 0023 Gateways · 0024 Usenet gateways · 0026 Nostr gateways · 0037 Matrix gateways · 0038 Gateway cooperation · 0043 Web entrances |
| Clients - the API every front end is built on | 0046 The local client API |
src/unseenet/*.json| The owner's scripts (no secrets), the known-node, entrance and hierarchy lists, the network health checks. |
| Docs | docs/ | The pages about the node, the CLI, the local API and the developers' reference, gathered into unseenet.org by unseenet-docs. |
| Automatic spam reports and content labels that readers may choose to follow |
| unseenet-stats | Statistics for the network |
| unseenet-mcp | An MCP server, so a language model can read and post as you (planning) |
| unseenet-import | Bring your posts and profile from other networks, with their original dates |
| unseenet-demo | Demo people, feeds and sites, made with the command-line client |