tawasuyu

tawasuyu/agora

> Public square. Federated identity and a trust graph that no one runs.

Rust 76Markdown 49TOML 211529 Definiciones

⎇ main README.md Markdown · 51 líneas · 3.8 KB Historia crudo

feat: agora standalone — front-door de identidad federada y grafo de confianza d0638350b · Sergio ·

1# agora
2
3> Public square. Federated identity and a trust graph that no one runs.
4
5![agora-app: seven tiles over the same TrustGraph — identities with real Ed25519 keys, signed and verified attestations, a 2-of-2 multisig and wawa's control-plane envelopes](https://tawasuyu.net/03_ukupacha/agora/pantallazo.png)
6
7Each identity — person, community, alliance, institution — is an Ed25519 public key. Each assertion about it is a `Claim`; each endorsement is an `Attestation`: a claim signed by an attester. The truth of the agora is not dictated by a server — it emerges from who attests to what, weighted by a `TrustPolicy` that **every reader negotiates for themselves**. No central registry, no moderation algorithm, no feed.
8
9## Run
10
11```sh
12cargo run --release -p agora-app       # Llimphi UI: identities, attestations, composer, policy
13cargo run --release -p agora-cli -- --help
14```
15
16## Crates
17
18| Crate | Role |
19|---|---|
20| [`agora-core`](03_ukupacha/agora/agora-core/) | Identities, claims, Ed25519-signed attestations, multisig, lifecycle. |
21| [`agora-graph`](03_ukupacha/agora/agora-graph/) | TrustGraph: verified attestations + corroboration + negotiated policy. |
22| [`agora-store`](03_ukupacha/agora/agora-store/) | Atomic JSON persistence with re-verification on load. |
23| [`agora-keystore`](03_ukupacha/agora/agora-keystore/) | Encrypted private-seed storage (Argon2 + ChaCha20-Poly1305). |
24| [`agora-gossip`](03_ukupacha/agora/agora-gossip/) | Transport-agnostic anti-entropy protocol over signed attestations. |
25| [`agora-net-brahman`](03_ukupacha/agora/agora-net-brahman/) | libp2p bridge: `/agora/gossip/1.0.0` over `BrahmanNet` (shared with minga). |
26| [`agora-channel`](03_ukupacha/agora/agora-channel/) | Signed roots/releases, channel-history verification, capability grants by bytecode hash. |
27| [`agora-cli`](03_ukupacha/agora/agora-cli/) | Shell CLI: identities (rotate/revoke), attestations, export/import, channels. |
28| [`agora-app`](03_ukupacha/agora/agora-app/) | Llimphi UI with tiles (identities, attestations, composer, policy, capability, release). |
29| [`agora-dispositivo`](03_ukupacha/agora/agora-dispositivo/) | device→person binding by signed attestation: one person, one identity, many machines. |
30| [`agora-petnames`](03_ukupacha/agora/agora-petnames/) | Memorable local names plus signed introductions — petnames instead of a global namespace. |
31| [`agora-confianza`](03_ukupacha/agora/agora-confianza/) | Reconciles agora's two planes of trust into a single per-reader opinion. |
32| [`agora-ayllu`](03_ukupacha/agora/agora-ayllu/) | The community as author: the unit is the *ayllu*, and it gets a signing identity. |
33
34## How dependencies work
35
36This is a clean front-door repo: it holds **only agora's own crates**. Everything else is a git dependency on the [`tawasuyu`](https://git.tawasuyu.net/tawasuyu/tawasuyu) monorepo (the suite's source of truth), pinned to a tag — including the Llimphi UI framework. No vendoring, no duplication; the first build clones that repo and caches it.
37
38The directory layout mirrors the monorepo (`03_ukupacha/agora/…`) on purpose: the repo is regenerated from it with `scripts/actualizar-standalone.py`, so paths stay comparable between the two.
39
40## Considerations
41
42- **Pubkey identity**, never email or phone.
43- The graph stores only **verifiable** evidence: an attestation with a broken signature is rejected at ingest.
44- The verdict on a claim is not a property of the graph — `TrustPolicy` is negotiated per reader, and two readers may legitimately disagree on the same evidence.
45- Self-attestation is preserved but flagged separately from third-party endorsement.
46- Plays well with `minga`: when both are active, agora rides the same `BrahmanNet` node (one PeerId, one Kademlia, two stream protocols).
47- Pure Rust on Linux / macOS / Windows / Wawa.
48
49## License
50
51MIT — see [LICENSE](LICENSE).

README.md

agora

Public square. Federated identity and a trust graph that no one runs.

agora-app: seven tiles over the same TrustGraph — identities with real Ed25519 keys, signed and verified attestations, a 2-of-2 multisig and wawa's control-plane envelopes

Each identity — person, community, alliance, institution — is an Ed25519 public key. Each assertion about it is a Claim; each endorsement is an Attestation: a claim signed by an attester. The truth of the agora is not dictated by a server — it emerges from who attests to what, weighted by a TrustPolicy that every reader negotiates for themselves. No central registry, no moderation algorithm, no feed.

Run

cargo run --release -p agora-app       # Llimphi UI: identities, attestations, composer, policy
cargo run --release -p agora-cli -- --help

Crates

CrateRole
agora-coreIdentities, claims, Ed25519-signed attestations, multisig, lifecycle.
agora-graphTrustGraph: verified attestations + corroboration + negotiated policy.
agora-storeAtomic JSON persistence with re-verification on load.
agora-keystoreEncrypted private-seed storage (Argon2 + ChaCha20-Poly1305).
agora-gossipTransport-agnostic anti-entropy protocol over signed attestations.
agora-net-brahmanlibp2p bridge: /agora/gossip/1.0.0 over BrahmanNet (shared with minga).
agora-channelSigned roots/releases, channel-history verification, capability grants by bytecode hash.
agora-cliShell CLI: identities (rotate/revoke), attestations, export/import, channels.
agora-appLlimphi UI with tiles (identities, attestations, composer, policy, capability, release).
agora-dispositivodevice→person binding by signed attestation: one person, one identity, many machines.
agora-petnamesMemorable local names plus signed introductions — petnames instead of a global namespace.
agora-confianzaReconciles agora's two planes of trust into a single per-reader opinion.
agora-aylluThe community as author: the unit is the ayllu, and it gets a signing identity.

How dependencies work

This is a clean front-door repo: it holds only agora's own crates. Everything else is a git dependency on the tawasuyu monorepo (the suite's source of truth), pinned to a tag — including the Llimphi UI framework. No vendoring, no duplication; the first build clones that repo and caches it.

The directory layout mirrors the monorepo (03_ukupacha/agora/…) on purpose: the repo is regenerated from it with scripts/actualizar-standalone.py, so paths stay comparable between the two.

Considerations

License

MIT — see LICENSE.