kiki is an experimental social network.
How is kiki different from other social networks? The main difference is that the social network exists on your computer, all the time. This means kiki will work offline, and nobody will ever track you.
In kiki, you are part of the cloud. When you use kiki to post a private message to a friend, everyone in the network will store that message for you. Secure end-to-end encryption ensures that only your friend can read it, even though everyone has the message.
Note: This software is experimental at the moment. It uses end-to-end encryption so it should be secure, but the codebase has not been audited so do not post your bank statement.

Widespread centralized social networks are becoming increasingly odious: Twitter abandoned "Do Not Track", LinkedIn ignores user settings and dissallows people accessing public content, while Facebook has become increasingly hostile towards insulating your internet. All these centralized networks use your information and track your activities for their profit. As a remedy, there has been a resurgence of privacy-aware open-source decentralized social networks, like Diaspora, Mastodon, and Patchwork. kiki is heavily inspired by Patchwork, but aims to improve some facets such as: simple federation, multi-computer logins, add in post editing/deletion and even profile deletion.
sqlite3 db).The easiest way to get started is to download the latest release.
Or, you could use the latest Docker images:
docker pull schollz/kiki
mkdir /tmp/kiki # make a directory to hold data
docker run --user `id -u` --rm -it -p 8003:8003 -v /tmp/kiki:/data -t schollz/kiki
Or, if you have Go installed you can build from the source:
go get -u github.com/jteeuwen/go-bindata/...
go get github.com/schollz/kiki
cd $GOPATH/src/github.com/schollz/kiki
go-bindata static/... templates/...
go install -v
and then run:
kiki
This will start your local server instance and open up a browser to localhost:8003 so that you can interact with the network. Right now, to sync you can add another open server (currently the only available one is https://kiki.network, but you can make your own).
You will be able to understand the design and usage of kiki by reading the following 35 precepts.
{
"to":["recipient1"],
"purpose":"share-text",
"content":"<p>hello, world</p>",
"reply_to":"",
"first_id":""
}
{
"id": "495Q65YF6MJzPv7HA22hoEwHz1RCmuFTsWMEgccvGS4x",
"timestamp": "2018-01-27T13:09:24.392807371Z",
"sender": {
"public": "6Awitgp9ZwkyeZ5g6fdDkENEm82issg..."
},
"signature": "AzB7YZaoqUQ3ZXinea4SbRvBVS...",
"sealed_letter": "RTJ2Q0smLntqv9DmOMgQIeruNnQ...",
"sealed_recipients": ["2Lw2JuwedqeYBCRetciKU9r7Ei..."],
}
The API for posting to kiki is very simple, making it easily extensible to other applications. Submiting a letter is a simple POST to localhost:8003/letter with the following JSON:
{
"content":"Hello, world",
"purpose":"share-text",
"to":["public"]
}
For posting to yourself, just omit to, and for posting to friends you can change "public" to "friends". The server will convert the to to the public keys and add in the first_id.
Its easy to make a new profile. Each kiki instance is stored in a folder, (default: $HOME/.kiki/default). For a new profile, just add the -alias some-profile flag:
kiki -alias some-profile
which will create a new profile in the $HOME/.kiki/some-profile folder. Just use the same command to reload it when you stop the program.
Currently the only public syncing up is https://kiki.network. To make your own, just start up a new instance of kiki and reverse proxy to the external port (port 8004 by default). Other instances will be able to exchange with this server but will not be able to modify the user data (which is only accessible via the private port, 8003 by default).
Since everything on kiki is stored in a cloud, you can use kiki on multiple computers by just transfering your key file - kiki.json to another computer (by default at $HOME/.kiki/default/kiki.json). Once you re-connect to a hub, it will download and parse your entire feed and recapitulate everything you had before!
Since letters are bagged (and not appended to a log) you can have multiple instances out-of-sync without causing any problems.
By federating, you will have your network of kiki instances which can only communicate among themselves. Only people that have been given the region keys will be able to join this federated system.
To federate your own system simple run:
kiki -generate-region
This will generate a unique public-private keypair for you to use and a way to start kiki to utilize this region instead of the default, e.g.:
kiki -region-public 'X' -region-private 'Y'
kiki is in alpha status. You can use it, but breaking changes might still occur. kiki has rough edges, and is not yet suitable for non-technical users.
Please contribute! Try kiki out, ask questions, submit PRs. Anything is welcome.
Please report issues through our issue tracker.
We use kiki for development and questions. For development, check out #kikidev and for general help checkout #kikihelp.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
This project is under the MIT license.
The kiki mascot is Copyright 2018 Jessie Doyle and Cloud Supernova. All Rights Reserved.
Content type
Image
Digest
Size
213.2 MB
Last updated
over 8 years ago
docker pull schollz/kiki