tracker(1) - a cybermapping tool


like it says on the tin, tracker is about keeping an eye on stuff. interact with all kinds of information and media in one place including feddy frens, peertube channels, rss, maybe nntpchan, using an eventually native client written in elm.

S-expressions were originally intended only for data to be manipulated by M-expressions, but the first implementation of Lisp was an interpreter of S-expression encodings of M-expressions, and Lisp programmers soon became accustomed to using S-expressions for both code and data.

— https://en.wikipedia.org/wiki/S-expression#Use_in_Lisp

elm seems like a nice m-expression lang to build on top of chicken scheme. i kinda wanted to make a scheme dialect, but i don't think that will help scheme particularly. rather i would like to try taking the M-expression route and see where it takes us.

this will make adoption easier, while allowing use to develop the majority application in portable elm. in the future we can write in an elm compiler in chicken scheme and attach a selection of runtime libraries that can be used to run tracker clients natively on small computers. hopefully this will also give us a chance to drag a bunch of web data off the web and onto the mesh as well.

sorry friends, but v1 will be web-based.

  • https://elm-lang.org/


tracker is an elm application. web is just a stepping stone to bigger and better things.

tracker is available as a progressive electron and mobile app. long term we plan to migrate these to more efficient native platforms. check the relevent platform repo for install instructions.

platform repo download link
ios/android xj9/g/tracker-cordova -
electron (linux/macos/windows) xj9/g/tracker-electron -
linux/illumos xj9/g/tracker-native -



non-trivial patches must be accompanied by a digital signature indicating that you accept the terms of the WAIVER file in this project repo. a gpg signature or ssb message is acceptable.

gpg --no-version --armor --sign WAIVER



tracker is an elm application. web is just a stepping stone to bigger and better things.


questions? ideas? problems?


tracker is designed around a subjective identity model. users can associate various identities to their passport which is stored in an encrypted blob. this passport allows seamless interactions with many networks at once.

  • https://scuttlebutt.nz/docs/principles/


tracker is designed to work with many storage systems. in this proof of concept application we are using pouchdb to store and query a simple graph database. pouchdb can easily replicate with couchdb servers over http and other tracker clients over webrtc. there are many relay servers that can be used to enable webrtc connectivity and desktop users can install an overlay network and/or a couchdb server to communicate over an encrypted mesh and improve performance.

  • https://pouchdb.com/api.html
  • https://github.com/scottmtp/pouch-replicate-webrtc
  • https://couchdb.apache.org/


  • https://github.com/creationix/js-git

bit torrent

binary objects and other datasets are stored in bit torrent. web browsers normally cannot communicate with normal bit torrent clients. the only way around this in v1 is to use electron and cordova builds OR run tracker-hypergate on your own infrastructure to provide indirect access to native peers.

  • https://webtorrent.io/docs
  • https://github.com/webtorrent/webtorrent-hybrid
  • https://github.com/feross/chrome-net


named data networking

this will eventually become the standard networking system for tracker clients, but bridges will always be an important part of the tracker network. after all, the real goal here is to organize and share information in a way that is completely independent of any fixed infrastructure.

  • https://github.com/named-data/ndn-js


  • http://rtc.io/module-rtc-switchboard.html


there are many options for interfacing with peers over the internet and other networks. we plan to officially support the following overlays:


  • https://loki.network/


  • https://www.torproject.org/


  • https://yggdrasil-network.github.io/

see also

  • https://github.com/cjdelisle/cjdns/
  • https://walkaway.wiki/Tomo/
  • https://walkaway.wiki/Tracker/
  • https://walkaway.wiki/walkaway.meshlocal/