Andrés J. Díaz


Latest stable relases:


Show all releases
Github page



████████╗██╗███╗   ███╗███████╗██╗     ██╗███╗   ██╗███████╗
╚══██╔══╝██║████╗ ████║██╔════╝██║     ██║████╗  ██║██╔════╝
   ██║   ██║██╔████╔██║█████╗  ██║     ██║██╔██╗ ██║█████╗
   ██║   ██║██║╚██╔╝██║██╔══╝  ██║     ██║██║╚██╗██║██╔══╝
   ██║   ██║██║ ╚═╝ ██║███████╗███████╗██║██║ ╚████║███████╗
   ╚═╝   ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝╚═╝╚═╝  ╚═══╝╚══════╝

Timeline is a plain-text based distributed social network build on top of
git configuration manager. Timeline is:

- Distributed / Descentralized
- Secure / Solid / Spam aware
- GPL3 licensed
- Fun!

----- Installation ------------------------------------------------------------

Just curl for it:

  curl -sSLo ./tl \ && \
    chmod 755 ./tl

And don't forget to verify it:

  curl -sSLo - \ | \
    gpg --verify - tl

----- Getting started ---------------------------------------------------------

  # create new account (i.e. git repo) and sync with remote one.
  ./tl account create name ssh://user@host/therepo.git http://myrepopublicurl
  #                   ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^
  #                   name url to push                 url to public pull

  # add some people to follow
  ./tl follow myfriend
  #           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^
  #           url to pull from            optional alias for this repo

  # done! check your timeline
  ./tl timeline refresh

  # Or if you are lazy, you can use alias
  ./tl tr

  # And you can filter your results by tags
  ./tl tr tag:Timeline

----- Use common tags ---------------------------------------------------------

Though you can tag any post/reply/tag with any tag that you want, there are
some common used tags with special meanings that you may want to known.
Please note that this is a convention, but there are no technical meaning of
use that.

spam: means that the tagged object is SPAM, and should be ignored
news: means that the tagged object is a breaking news and probable should be

timeline: means that this is a timeline related news or fact, usually is
          used by timeline developers to notify changes.

A General rule: use lowercase and the largest tag, for example tag
"politics" is preferred instead of "Politics" or "POL". Please note that
tags are social, which means that everyone can see what tags you publish,
adn how are you tagging other contents. If you mark a spam with "news" tag,
does not means anything, because your tag "news" can be tagged as "spam"

----- Using scores ------------------------------------------------------------

Since version 1.1 you can use scores to filter even more your timeline.
Scores are a numerical value for a post. When someone score a post give to
the post one point, or even substract one point. Only one scored is taken in
consideration for each user, so if the same user add two scores, only one is

Score is presented in the timeline and you can use "score-min:<value>" or
"score-max:<value>" as filter to filter your timeline using scores. Also,
setting configuration variable timeline.filter-show and timeline.filter-hide
you can use scores to filter timeline by default.

----- Understanding timeline --------------------------------------------------

Timeline works linking different user's accounts, which are actually git
repositories. The people you follows are submodules of your account
repository, so it's easy to update and parse using a common format for

To discover new people just use the `network refresh` command, which follows
your followings in order to discover all people connected with you.

Followings only works in one way, that means that even if you publish some
content, only people who follows you can read that messages in their

You can create your repository public or private, if it's private, then
security is delegated to the git client (usually uses HTTPS or SSH).

----- Public directories ------------------------------------------------------

Since version 1.8 timeline support public directory listings. A public
directory is an URL which points to a plain text file with the form:

<name> <url> <tags...>

And allows to discover new timeline accounts around the globe. Please keep in
mind that directories are designed to discover new accounts that can be
interesting for you (usually you want to discover by tags), but the aim of
the timeline is still to follow only trusted people.

You can create your own directory, just server a file like that, and add to
timeline via command: `tl dir add dirname dirurl`. Timeline has a
default directory which points to If you wish to
inscribe your timeline account to this directory just send a mail to
timeline-dir (at)

----- Some advantages ---------------------------------------------------------

1. Is a decentralized network. No one controls the network, and no one can
   close it.
2. Each follower has a reduced copy of your repo, so even if you repository
   is deleted, each follower of you can upload a copy of your repository,
   keeping your message online.
3. There are no tracks, no one spy you if you don't want to.
4. You can manage multiple copies of your repo, so if for some reason one is
   deleted, you can still using others.
5. There are no spam, because only people who follows can publish to you
   (i.e. you only see messages from people who follows).
6. There are no indiscriminated following. Well, there could be, but makes
   no sense, because you do not realized that who is following you, so
   following you to achive more followers for a third account doesn't work

------ Get involved -----------------------------------------------------------

This is a basic implementation of timeline protocol, but any other
implementation is welcome too. If you found a bug or want any enhancement,
please open a issue.

Happy hacking!


The source code of the project is managed by git, you can clone it in the usual way:

git clone

A mirror in github is also available, but keep in mind that could be out of date.

If you find any error in the code or incorrect behaviour, please do not hesitate to report it in the devel mailing list:

Please note that you need to subscribe to the list prior to post to avoid spam, just send an empty email to with the text subscribe timeline-devel in the subject.

Please submit the patches via mailing list. You can read how to in this email + git guide

Any suggestion, discussion or improvement are welcome, just mail to the list!


    Copyright (C) 2016 Andrés J. Díaz

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <>.

Andrés J. Díaz <ajdiaz at>.
GPG Key: 4D851F4ECDCFD81EF6AB2FC6021D2DCF8575C18B. GPG Key Signing Policy.
Gopher server