The Agora is not a single monolithic application. It is composed of three distinct, independently deployable repositories that together form a functioning Agora instance. Understanding how they fit together helps you decide which parts you need, how to run your own Agora, and where to contribute.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/flancian/garden/llms.txt
Use this file to discover all available pages before exploring further.
The three components
The Agora
Root configuration:
gardens.yaml (the source list) and CONTRACT.md (the public commitment). No code — just config and contract.Agora Server
Read-only Python/Flask web frontend. Renders the distributed graph as navigable HTML. This is what you use when you visit anagora.org.
Agora Bridge
Ingestion hub and write layer. Pulls content from Git, Federated Wiki, Mastodon, and Twitter. Also runs the platform bots.
You technically only need Agora Server to run an immutable, read-only Agora. Agora Bridge is required if you want live ingestion from external sources or bot integrations.
How data flows
gardens.yaml. Agora Server reads the assembled content at request time and renders it. The Agora root repository is the shared source of truth for which gardens belong to the instance.
The Agora root repository
The root repository contains no running code. Its two key files are:gardens.yaml— the list of all content sources for this Agora instance. Think of it as the filesystem table (fstab) for the Agora: each entry points to a garden (a Git repository, a wiki, or another source) that Agora Bridge will pull from.CONTRACT.md— the system account’s public commitment to the ecosystem. If you modify the CONTRACT when running your own Agora, your instance may become incompatible with the Agora you forked from. Conflict resolution is part of Agora Protocol but is not yet fully specified.
gardens.yaml to define which gardens your instance will serve.
Agora Server
Agora Server is a Python 3 / Flask application with a TypeScript frontend (no framework). It is the read-only web interface to the assembled graph — what you interact with when you browse anagora.org.Clone and configure
/home/<user>/<repo> paths, edit app/config.py to point to the correct locations.Agora Bridge
Agora Bridge is the write layer and integration hub. It is written in Python with YAML configuration, and also includes TypeScript components for certain integrations. It handles:- Git ingestion — the default input bridge; pulls from all sources in
gardens.yamlon a loop - Mastodon integration — bot at @agora@botsin.space
- Twitter/X integration — bot at @an_agora
- Federated wiki ingestion
- Output bridges — writes assembled content to a filesystem via
git pull
bridges.yaml, which can be passed to the service as a parameter. Each bridge is typed as input, output, or bidirectional (read/write/read-write).
Configure optional bots
See the
bots/ directory and the Agora Bridge install docs for instructions on enabling the Mastodon and Twitter bots.Deployment summary
| Component | Language | Role | Runs as |
|---|---|---|---|
| Agora root | — | Config only | — |
| Agora Server | Python 3 / Flask + TypeScript | Read-only web frontend | Systemd + UWSGI + nginx |
| Agora Bridge | Python + YAML + TypeScript | Ingestion and bots | Systemd loop |