A webserver that graphs the spread of ideas.
Minor edits.
Slight modification to text on a button.


browse  log 



You can also use your local clone with git send-email.

#Prototype/Demo for FlowKarma.Live

This is a demonstration of what I'm calling a "provenance server". The idea is to record a public graph of the spread of an idea or meme (as represented by an URL.)

The whole point of the network is to publicly record the provenance of ideas or memes, the graph of who-told-whom.

Once you have joined (see below) you send and receive URLs from your contacts.

It's expected that users have a fairly stable set of direct contacts, that will typically be between 12 to 25 people.

The network overall should be a directed acyclic graph without redundant paths. There is no explicit graph, instead each URL that is transmitted between users establishes a new graph.

The first function of the server is just to provide a stable a mapping from identifier URLs to opaque tags. Any user can register any URL and get a "Share" URL for it. (I am contemplating filtering URLs to exclude objectionable content. I am loathe to do it, but I am loathe to transmit "bad thought" as well. Cloudflare offers a "family friendly" DNS service, it wouldn't be hard to check that first before returning tags for URLs, eh? Ah, the world we live in today.)

When you click on a "Share" URL an event is logged in the public log recording the connection between the sender and yourself in re: the subject URL.

From there, the default action would be to forward your custom "Share" URL (at the bottom of the page) to your contacts.

However, if you don't want to forward the thing to your contacts for any reason, you don't have to. You can tell the person you sent it to you, or not. You can make your own blog post or something in reply and send it back out to your contacts instead, or just to the person who sent it to you.

The thing is, don't forward spam. Or hate. Or lousy jokes. Eh? You are the moderator.

The third thing you can do is click the "Engage" button. This will redirect you to the same URL (the one being shared) but first it will record another event in the public log. This is to show everyone public approval for (or at least "engagement" with) the underlying idea or meme.

The exact interpretation of the "engage" event is up to the users of the system, and it doesn't have to have the same meaning for every URL or person.

Originally, when I came up with this idea years ago, I thought that affiliate networks would take the economy by storm, and this was a simple way for people to track and reward affiliates. That never happened.

Now I think the value is in establishing a kind of reputation, or honor: because share and engage events are logged publicly users build up a rep for, uh, whatever they spread.

The function of the server is to log the origination, propagation, and engagement with "memes" (in general, not just the funny captioned images) represented as URLs.

This data is public.

One way to think of this is that we're trying to make a neural network with humans as the neurons, a General AI that's self-aware because the sub-units are self-aware, that's accountable because the sub-units are accountable, and it thinks in public.


Step 1. You hear about FK.L from a friend who gives you a "join" URL that looks like:


But with the nnnnnnnnnnnnnnnnnnnnnnnnnn replaced by a code.

(Note that it's on the publicly accessible subdomain pub.flowkarma.live. That's so you can reach it without having a certificate in your browser.)

Follow it and you should see a page that looks like this:

Join Page.

Be careful, this is a "self-destructing" URL, after you use it once it stops working.

Step 2. Record that passphrase!

  • Without it the certificate is useless.
  • We do not have it and cannot recover it.
  • Once you close this page it's gone, so record it carefully and safely!

Step 3. Download the *.pfx file.

  • Click the button to download the certificate file.
  • Save it somewhere secure.
  • It cannot be used (installed into a web browser) without the passphrase.

Step 4. Install the certificate into your web browser.

  • Watch this video.
  • I only use Firefox, but the other browsers have similar functionality.
  • TODO: find and link to Firefox's and other browsers' methods.

Now when you visit https://flowkarma.live/ your browser and our server will negotiate a secure authenticated connection automatically. There is no need to login or logout. You should see something like this:

Home Page.

#About You

This is your profile. Only your contacts will ever see it, so it should identify you to them. Typically just your name or handle should suffice. Keep in mind that this is all the information we have about you, other than what you might post to the mailing list and your activity in the log.

#Share an URL

Here's where you can get a "Share" url to, uh, share with your contacts. It should begin with http: or https:, other protocols are rejected for now. (Not for any particular reason.)

#Invite New Members

You can get "Join" URLs to give to your contacts by clicking on this button. Be aware that each one is unique and cannot be reused, so don't waste them. By default there is a limit of 256 "Join" URLs per user.


When you click the Share an URL button you'll get an URL that looks like:


It will have that character in it and a long code instead of nnnnnnnnnnnnnnnnnnnnnnnnnnnn. This is the URL that you send to your contacts to propagate an idea or meme though the FK.L network.

When you visit such an URL you'll see a page like this:

Share Page.


This displays the profile information of the user who sent you the "Share" URL.


This is the URL that is being shared. You can click on it directly to check it out, or use the Engage button to record an engage event in the public log.


This is a new "Share" URL with a new code that identifies you as the sender. (In the screenshot above you might notice that the URL in the address bar is the same as the "Share" URL, that's because I'm visiting my own "Share" URL to get the screenshot, so it's the same code.)

This is the URL to forward to your contacts (except for the one who sent it to you, of course.)

#User IDs

For user IDs there is an open-ended text-based key that encodes the lineage of a user.

The first user is user "0". The first user you invite is N + "-1" where N is your ID, the second is N + "-2" and so on.

So "4-7-1-3" is the user ID of the third person invited by the first person invited by the seventh person invited by the fourth member.

Got it?