1# agora
2
3> Plaza pública. Identidad federada y un grafo de confianza que no administra nadie.
4
5
6
7`agora` es la capa de identidad del monorepo. Cada identidad — persona, comunidad, alianza, institución — es una clave pública ed25519. Cada afirmación sobre ella es un `Claim`. Cada respaldo es una `Attestation`: un claim firmado por un atestador. La verdad del ágora no la dicta un servidor: emerge de quién atestigua qué, pesado por una `TrustPolicy` que cada lector negocia para sí.
8
9No hay registro maestro, no hay algoritmo de moderación, no hay feed. La misma forma — pubkey + atestaciones firmadas — cubre desde una persona hasta una institución, pasando por comunidades y alianzas.
10
11## Instalación
12
13```sh
14cargo run --release -p agora-app
15```
16
17## Compatibilidad
18
19- **Linux / macOS / Windows / Wawa** — todos los crates son puro Rust.
20- Persistencia local; convergencia opcional con peers de la malla `minga`.
21
22## Crates
23
24| Crate | Rol |
25|---|---|
26| [`agora-core`](agora-core/LEEME.md) | Identidades, claims, atestaciones firmadas ed25519. |
27| [`agora-graph`](agora-graph/LEEME.md) | TrustGraph: atestaciones verificadas + corroboración + política negociada. |
28| [`agora-store`](agora-store/LEEME.md) | Persistencia JSON atómica con re-verificación al cargar. |
29| [`agora-keystore`](agora-keystore/LEEME.md) | Almacén cifrado de seeds privadas (Argon2 + ChaCha20-Poly1305). |
30| [`agora-gossip`](agora-gossip/LEEME.md) | Protocolo anti-entropy transport-agnóstico sobre atestaciones firmadas. |
31| [`agora-net-brahman`](agora-net-brahman/LEEME.md) | Puente libp2p: registra `/agora/gossip/1.0.0` sobre `BrahmanNet` (compartido con minga). |
32| [`agora-channel`](agora-channel/LEEME.md) | Adapter de firma al contrato `format::Canal` de wawa: raíces/releases firmados, verificación del historial de un canal, concesiones de capacidad por hash de bytecode (§14.1.3). |
33| [`agora-cli`](agora-cli/LEEME.md) | CLI de shell: identidades (rotar/revocar), atestaciones, exportar/importar, canales y las ceremonias `wawa` (publicar / concesion / anunciar / revocar). |
34| [`agora-app`](agora-app/LEEME.md) | UI Llimphi: identidades, atestaciones, compositor, política, tiles de control wawa (capacidad/release). |
35| [`agora-dispositivo`](agora-dispositivo/) | Binding device→persona por atestación firmada: una persona, una identidad, muchas máquinas. |
36| [`agora-petnames`](agora-petnames/) | Nombres memorables locales más presentaciones firmadas — petnames en vez de un espacio de nombres global. |
37| [`agora-confianza`](agora-confianza/) | Reconcilia los dos planos de confianza de agora en **una sola opinión por-lector**. |
38| [`agora-ayllu`](agora-ayllu/) | La comunidad como autora: el mundo andino nunca tuvo al individuo como unidad — la unidad era el **ayllu**. Este crate le da identidad firmante. |
39
40## Consideraciones
41
42- **Identidad por clave pública**, nunca email ni teléfono.
43- El grafo guarda sólo **evidencia comprobable**: una atestación con firma rota se rechaza al ingresar.
44- El veredicto sobre un claim no es una propiedad del grafo — la `TrustPolicy` se **negocia** por lector, y dos lectores pueden discrepar legítimamente sobre la misma evidencia.
45- La auto-atestación se preserva pero queda marcada aparte del respaldo de terceros.
46- Compatible con `minga`: cuando ambos están activos, ágora viaja sobre el mismo nodo `BrahmanNet` (un PeerId, una tabla Kademlia, dos sub-protocolos de stream).
LEEME.md
agora
Plaza pública. Identidad federada y un grafo de confianza que no administra nadie.

agora es la capa de identidad del monorepo. Cada identidad — persona, comunidad, alianza, institución — es una clave pública ed25519. Cada afirmación sobre ella es un Claim. Cada respaldo es una Attestation: un claim firmado por un atestador. La verdad del ágora no la dicta un servidor: emerge de quién atestigua qué, pesado por una TrustPolicy que cada lector negocia para sí.
No hay registro maestro, no hay algoritmo de moderación, no hay feed. La misma forma — pubkey + atestaciones firmadas — cubre desde una persona hasta una institución, pasando por comunidades y alianzas.
Instalación
cargo run --release -p agora-app
Compatibilidad
- Linux / macOS / Windows / Wawa — todos los crates son puro Rust.
- Persistencia local; convergencia opcional con peers de la malla
minga.
Crates
| Crate | Rol |
agora-core | Identidades, claims, atestaciones firmadas ed25519. |
agora-graph | TrustGraph: atestaciones verificadas + corroboración + política negociada. |
agora-store | Persistencia JSON atómica con re-verificación al cargar. |
agora-keystore | Almacén cifrado de seeds privadas (Argon2 + ChaCha20-Poly1305). |
agora-gossip | Protocolo anti-entropy transport-agnóstico sobre atestaciones firmadas. |
agora-net-brahman | Puente libp2p: registra /agora/gossip/1.0.0 sobre BrahmanNet (compartido con minga). |
agora-channel | Adapter de firma al contrato format::Canal de wawa: raíces/releases firmados, verificación del historial de un canal, concesiones de capacidad por hash de bytecode (§14.1.3). |
agora-cli | CLI de shell: identidades (rotar/revocar), atestaciones, exportar/importar, canales y las ceremonias wawa (publicar / concesion / anunciar / revocar). |
agora-app | UI Llimphi: identidades, atestaciones, compositor, política, tiles de control wawa (capacidad/release). |
agora-dispositivo | Binding device→persona por atestación firmada: una persona, una identidad, muchas máquinas. |
agora-petnames | Nombres memorables locales más presentaciones firmadas — petnames en vez de un espacio de nombres global. |
agora-confianza | Reconcilia los dos planos de confianza de agora en una sola opinión por-lector. |
agora-ayllu | La comunidad como autora: el mundo andino nunca tuvo al individuo como unidad — la unidad era el ayllu. Este crate le da identidad firmante. |
Consideraciones
- Identidad por clave pública, nunca email ni teléfono.
- El grafo guarda sólo evidencia comprobable: una atestación con firma rota se rechaza al ingresar.
- El veredicto sobre un claim no es una propiedad del grafo — la
TrustPolicy se negocia por lector, y dos lectores pueden discrepar legítimamente sobre la misma evidencia.
- La auto-atestación se preserva pero queda marcada aparte del respaldo de terceros.
- Compatible con
minga: cuando ambos están activos, ágora viaja sobre el mismo nodo BrahmanNet (un PeerId, una tabla Kademlia, dos sub-protocolos de stream).