This document outlines the key goals and progress for the Agora project in December 2025.
Goal: Allow users to join the Agora (add their digital garden) immediately via the web interface, removing the need for manual email processing.
agora-bridge): POST /sources to trigger an immediate synchronous git clone.agora-server):overlay.html).settings.ts to submit data via fetch.POST /api/join endpoint in agora.py to proxy requests to the Bridge API.git clone in Bridge to a background task (Celery/RQ) to prevent timeouts on large repos.pull.py picks up the new source for future updates (currently requires Bridge restart).Goal: Provide a "Host me" option for users who don’t have a Git repository. We will provision a new garden for them on a federated Forgejo instance (git.anagora.org or similar).
agora-server):agora-bridge):/api/provision_garden) to creating users/repos on Forgejo.sources.yaml.Goal: Make anagora.org a full Fediverse participant. Users should be able to follow Agora users/nodes and receive updates when new content is published.
agora-server/app/federation.py contains initial ActivityPub logic (WebFinger, Actor generation).Inbox and Outbox routes exist.Inbox handling for Follow activities. (Partially done in user_inbox)followers table). (Done)Accept activity response. (Done in user_inbox via send_accept thread)federate_latest_loop background thread.git_utils.get_latest_changes_per_repo() every 5 minutes (10s in debug).Create activities for new subnodes to followers.federated_subnodes table.Like activity.federate_create to broadcast Like to @agora followers.subprocess timeouts to prevent server hangs (moved to Python native timeout + select for output limiting).util.py.API_BASE in DevelopmentConfig to use public URL, fixing browser security warnings.