📚 node [[agora-plan]]

Agora Plan

I'll use this as a sort of inline project page for the [[agora]] implementation you're likely reading this in now: https://anagora.org.

As you might know by now, an Agora is a beast with multiple legs:

This page is about both, although it's probably going to be [[Agora Server]] heavy as I'm currently focused on developing features for it.


  • On [[2021-01-30]]
  • On [[2020-01-02]] I implemented [[jump]]
    • I said: "I'll implement the action and a 'jump'/ dialog always available in the Agora, perhaps replacing search in the [[toolbar]]."
    • Done!
    • Q: is 'go to' better than jump? I don't think so, and it could be confusing due to go links. But unsure.
  • On [[2020-01-01]] I fixed node titles.
  • On [[2020-12-29]] I pushed a quick patch that upranks all my subnodes, as some top subnodes in relatively popular nodes had formatting issues / were distracting. I intend this to be temporary; better ranking and formatting fixes are coming.
  • On [[2020-12-27]] I released [[agora 0.5.6]] with [[pull]] support, better db code, caching... quite a bit :)
  • On [[2020-12-20]] I worked [[agora 0.5.5]], which adds simple [[hypothes.is]] integration.
    • Fixed the fact that [[back]] [[links]] didn't work in non-existent nodes (even when there are backlinks, that is).
    • Prepared CSS/html for pull, push, forward links.
  • On [[2020-12-04]] I released [[agora 0.5.4]], with some improvements:
    • New data model (digital gardens are not subtree'd in the main [[agora repository]] anymore, stay wholly independent)
    • Index page is now just another node, subnodes can be contributed by users.
  • On [[2020-11-29]] I integrated the first community contribution ever.
  • On [[2020-11-27]] I fixed some bugs, like wikilinks with periods on their names not working.
  • On [[2020-11-22]] implemented count of subnodes in user pages.
  • On [[2020-11-17]] implemented [[latest]].
  • On [[2020-11-16]] I implemented [[agora fuzzy matching]] and full text search, adopted a div based layout, improved the CSS, improved user pages.
  • On [[2020-11-15]] I implemented dark mode (press on 'theme' on the top right corner to switch dark <-> light).
  • On [[2020-11-14]] I released [[agora 0.5.1]].




  • [ ] all http mentions should be auto linked, not only some: https://twitter.com/notverapetrova/status/1346258737204400128
    • Worked around this, but I should probably send an upstream PR to [[bleach]]
  • [ ] try rendering notes with [[marko]], see if it's a bit more forgiving with list indentation and other kinks that seem common.
  • [ ] add support for org mode gardens
  • [ ] I should make node [[0.5.6]] work
  • [ ] graph the whole Agora -- sounds fun!
  • [ ] Implement pull and push.
    • [x] Define divs for 'pulled' and 'pushed' sections
    • Write functions that return [[pull]] and [[push]] entities in each subnode
  • [ ] Make more links default to node instead of subnode.
    • For example those in latest, those in user pages.
    • Might require 'upranking'.
  • [ ] set up [[agora]] hot spare in [[dorcas]], this is an experiment but I already find it very useful so I don't want to not have it available for a while if there's a server failure
  • [ ] add monitoring -- [[munin]] or something more modern? [[prometheus]]?
  • [ ] Implement /node/foo/selector as more resilient/uniform alternative to /subnode.
  • [ ] Implement user upranking/pinning.
    • Perhaps nodes visited from a user scope uprank subnodes by that user?
  • [ ] https://twitter.com/s5bug/status/1334686375275163652?s=09
  • [ ] Provide a link (GET) for the search for '[ ]', useful for [[do]].
  • [ ] Add better backlinks, showing some context.
  • [ ] Make the site header be marked as an actual header (div with a class, etc.); Google seems to think it's part of the site text (it's showing up in results).
  • [ ] Fix markdown list formatting issue with different tab widths.
  • [ ] add footer.
  • Implement preview-on-hover?
  • Implement "around the Agora".
  • [ ] add /latest or some other chronological view
  • [ ] User profiles: perhaps just note [[flancian]] as written by user [[flancian]]? Unsure.
    • [[s5bug]] suggested using [[README]] in gardens for this. Makes sense.
  • [ ] Make the index be just another note [[ding-levery]].
  • [ ] Improve backlinks: show snippets as well as just the link.
  • [ ] Improve pull loop to also support arbitrary hooks, like that needed to implement [[agora go links integration]].
  • [ ] Multi user improvements:
    • Better sorting (right now all my notes show up at the top, doesn't make sense).
    • Ability to "zoom into" a user, to navigate just their garden for a while.
    • [ ] Perhaps ability to "uprank" users, pinning their notes to the top of any sorting order.
    • [ ] Perhaps sort+uprank can be integrated?
    • [ ] usernames could have a 'pin' emoji that upranks all their posts?
  • [ ] Implement search (full text).
  • [ ] Add support for media serving (useful for pictures of [[ocell]]).
    • assets/foo end up at node/assets/foo; just adding a handler for node/assets/ seems like it could be enough.
    • It would conflict with a node named 'assets' though, so perhaps it's not ideal.
    • Perhaps it'd be better to just serve images/media as subnodes?
  • [ ] Add monitoring/alerting.

Some day:

Feature requests


  • [x] fix bug: backlinks should be shown even in yet non-existent nodes, such as [[deceased]].
  • [x] Clean up stale journal pages which don't follow [[iso 8601]].
  • [x] Add config.py file with things such as paths.
  • [x] Add user handler: /u
    • /u/flancian -> all nodes by flancian
    • /node/flancia/u/flancian -> flancia by flancian
    • Also added @flancian. Shorter is better, and it's a common convention.
    • perhaps /g/ for groups later? or /s/ for stoa.
  • [x] Add 'link to this note'.
    • Now called subnode.
    • Subnode rendering is ready, just need to add links.
    • Perhaps I need to fix subnode paths; right now they are the actual filename. It'd be better if there was at least possible to specify the filename base (no extension) and have the right file be resolve, a la nodes.
  • [x] add some search support -- a simple textbox + GET?
  • [x] better css
  • [x] Improve the [[index]].
  • [x] Implement [[agora fuzzy matching]].
    • Done
    • [ ] but backlinks don't work in some cases, like http://dev.anagora.org/node/abstract%20fairy.
    • Probably not worth fixing that right now as it only triggers for nodes that are not canonical, perhaps better to just redirect to a canonical node.
    • [ ] could help with disambiguation and acronym expansion
  • [[push]] [[agora plan]]
    • The [[agora]] should support [[rss]] / [[atom]] feeds in two ways:
      • As a [[consumer]], to easily allow any feed producer to volunteer subnodes in an [[agora]].
      • As a [[producer]], to easily allow users and other systems to consume [[agora]] updates.
📖 stoa (open document) at doc.anagora.org/agora-plan
⥅ related node [[feature-requests]] pulled by user

Feature Requests



[[dan whaley]]

  • Subnodes should show date created, date last updated.


  • Would like to be able to sync [[remnote]] notes.


  • [[foam]] Los títulos de las notas en español deberían usar minúsculas (siguiendo la convención apropiada para el español).

[[vaughn tan]]

  • It would be nice to have a way to export rendered gardens as static html, with data such as calculated backlinks baked in.



  • Got an [[agora]] [[feature request]]: have http://anagora.org detect "dangling links" in gardens, that is, wikilinks that have no target note. Good for people that want to notice and tie up "loose ends" in their garden.


  • Abstract Fairy: I. Agora sequences The main value I find in a book is structure. A well written book shows you how an idea came to be, related ideas, its limitations, and how you can play around with it. I think the Agora should have smth like that. Smth similar to LW sequences. It can be implemented through having a node of links

  • Abstract Fairy: II. Abstracts If possible, I think it would be nice for nodes to have previews / abstracts to make it easy to skim through a large amount fo them for searching. Naturally, I think there should be a word count for this to make it easy to digest

  • Abstract Fairy: III. Twitter and QT as block references. Agora as a social network I think QT is effectively using a block refrence. so, I think the Agora (if modified into a social network) could operate on a similar basis Abstracts would be important to get a quick overview of a node (pls no 20+ tabs like LW)

  • Maybe somewhere down the line, the Agora could work like that. We could have an online editor for people to quickly dump their thoughts into the Agora. And we could have a feed, here are the new nodes your friends made, here are the new blocks they've written / edited significantly

  • I actually really like how everyone's nodes are displayed, it can really put stuff into perspective :)


⥅ related node [[push]] pulled by user
  • An [[action]].
    • It 'means' that a certain context is relevant for the target node and should perhaps be included in it ([[transclusion]]):
    • Here's how you use it: you start a block with the [[push]] action, passing a target node as an argument. Then you attach as many sub blocks (indented list items) to the block; they will be included in the target as a subnode.
    • [[push]] [[agora twitter integration]]
      • Push probably has good interactions with [[twitter]] and the [[fediverse]].
      • If you tell an [[agora]] to [[push]] and you are a [[friend]], it'll push with you.
  • See also: [[pull]].
⥱ context
⥅ related node [[2020 11 14]]
⥅ related node [[2020 11 15]]
⥅ related node [[2020 11 16]]
⥅ related node [[2020 11 17]]
⥅ related node [[2020 11 22]]
⥅ related node [[2020 11 27]]
⥅ related node [[2020 11 29]]
⥅ related node [[2020 12 04]]
⥅ related node [[2020 12 20]]
⥅ related node [[2020 12 27]]
⥅ related node [[2020 12 29]]
⥅ related node [[2021 01 13]]
⥅ related node [[2021 01 22]]
⥅ related node [[2021 01 24]]
⥅ related node [[2021 01 30]]
⥅ related node [[2021 02 08]]
⥅ related node [[2021 02 15]]
⥅ related node [[2021 03 05]]
⥅ related node [[2021 08 28]]
⥅ related node [[agora action]]
⥅ related node [[agora feeds]]
⥅ related node [[agora fuzzy matching]]
⥅ related node [[agora go links integration]]
⥅ related node [[agora hypothesis integration]]
⥅ related node [[agora repository]]
⥅ related node [[agora server]]
⥅ related node [[agora twitter integration]]
⥅ related node [[agora vscode]]
⥅ related node [[agora youtube integration]]
⥅ related node [[arghzero]]
⥅ related node [[armengolaltayo]]
⥅ related node [[athens]]
⥅ related node [[dark mode]]
⥅ related node [[deceased]]
⥅ related node [[digital gardeners]]
⥅ related node [[ding levery]]
⥅ related node [[do]]
⥅ related node [[enki]]
⥅ related node [[enkiv2]]
⥅ related node [[flancian]]
⥅ related node [[fleeky]]
⥅ related node [[foo]]
⥅ related node [[forgefed]]
⥅ related node [[go links]]
⥅ related node [[houshuang]]
⥅ related node [[hypothes.is]]
⥅ related node [[index]]
⥅ related node [[iplumb3r]]
⥅ related node [[iso 8601]]
⥅ related node [[jakeisnt]]
⥅ related node [[jonathan the utopian]]
⥅ related node [[jump]]
⥅ related node [[karlicoss]]
⥅ related node [[latest]]
⥅ related node [[links]]
⥅ related node [[logseq]]
⥅ related node [[luciana]]
⥅ related node [[marko]]
⥅ related node [[mathew lowry]]
⥅ related node [[metasj]]
⥅ related node [[nodes]]
⥅ related node [[ocell]]
⥅ related node [[org mode]]
⥅ related node [[org roam]]
⥅ related node [[orgparse]]
⥅ related node [[pen coded]]
⥅ related node [[person]]
⥅ related node [[prometheus]]
⥅ related node [[pulled]]
⥅ related node [[readme]]
⥅ related node [[roam]]
⥅ related node [[roam2agora]]
⥅ related node [[s5bug]]
⥅ related node [[second brain]]
⥅ related node [[tilda]]
⥅ related node [[toolbar]]
⥅ related node [[tweet]]
⥅ related node [[wikigraph]]
⥅ related node [[wikilinks everywhere]]
⥅ related node [[work in progress]]