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

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
| Crate | Role |
|---|---|
agora-core | Identities, claims, Ed25519-signed attestations, multisig, lifecycle. |
agora-graph | TrustGraph: verified attestations + corroboration + negotiated policy. |
agora-store | Atomic JSON persistence with re-verification on load. |
agora-keystore | Encrypted private-seed storage (Argon2 + ChaCha20-Poly1305). |
agora-gossip | Transport-agnostic anti-entropy protocol over signed attestations. |
agora-net-brahman | libp2p bridge: /agora/gossip/1.0.0 over BrahmanNet (shared with minga). |
agora-channel | Signed roots/releases, channel-history verification, capability grants by bytecode hash. |
agora-cli | Shell CLI: identities (rotate/revoke), attestations, export/import, channels. |
agora-app | Llimphi UI with tiles (identities, attestations, composer, policy, capability, release). |
agora-dispositivo | device→person binding by signed attestation: one person, one identity, many machines. |
agora-petnames | Memorable local names plus signed introductions — petnames instead of a global namespace. |
agora-confianza | Reconciles agora's two planes of trust into a single per-reader opinion. |
agora-ayllu | The 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
- Pubkey identity, never email or phone.
- The graph stores only verifiable evidence: an attestation with a broken signature is rejected at ingest.
- The verdict on a claim is not a property of the graph —
TrustPolicyis negotiated per reader, and two readers may legitimately disagree on the same evidence. - Self-attestation is preserved but flagged separately from third-party endorsement.
- Plays well with
minga: when both are active, agora rides the sameBrahmanNetnode (one PeerId, one Kademlia, two stream protocols). - Pure Rust on Linux / macOS / Windows / Wawa.
License
MIT — see LICENSE.