Skip to content
/ ceptr Public

(a recomposable medium for distributed social computing) || (semantic self-describing protocol stacks)


Notifications You must be signed in to change notification settings


Repository files navigation

Ceptr: The fabric of the new crypto-semantic Internet

Ceptr provides a new computing stack for semantic self-describing data and protocols, which enables a new kind recomposable medium for distributed social computing.

Project Status

It may look like the Ceptr project is on hiatus, but it is alive and well. We pulled out a small part of Ceptr (synchronization for multi-instance receptors) and are going head-to-head with blockchain as an alternative approach to building distributed sytems. That portion of of Ceptr is called Holochain and is quite active with new distributed applications being developed for it regularly.

We will return to integrating the other parts of Ceptr (like low-level semantics and self-describing protocols for easy interoperability) soon. However, we may scrap this codebase in C and rebuild it Go. Holochain is getting a lot more traction in Go, than Ceptr got written in C.


There are currently no dependencies, so just clone this repo.

Then cd into the root directory of the repo and type:

make ceptr

This will build a ceptr node running the command-line receptor, which is currently very primitive, with just four commands "time" (which returns a Tick semantic tree) "receptors" (which lists the currently active receptors) "debug" (which toggles debug mode) and "quit". more coming soon!

For some guidance on getting the code-base to compile on Windows using Eclipse see: (Note: this hasn't been tested recently and is no longer in sync with the c codebase...)



Also, see "Testing" below.


You can read the code and API documentation here:

Or watch a brief overview webinar/video here:


For a broad overview of the project see [the Ceptr Revelation] (

Or check out this prezi:

Or this longer presentation of that prezi:


To compile and run all the tests simply cd into the root directory and type:

make test

This runs all of the tests, which live in the specs sub-directory.

The tests also produce a bunch of semantic trees dumped out to json for visualization in a testing web-app. To be able to see these, you need to place the contents of the "web" sub-directory into a web server somewhere, and then just point your browser to that directory. Please note that this isn't a comprehensive testing environment, just a space we've used for creating visuals for presentation purposes.


Join the dev chat at In Progress

We welcome participation. Check our our waffle for Roadmap & kanban or if you prefer you can just use github's issue tracking.

If you have any dev questions pop them into our dev gitter.

Finally, zippy314 does some livecoding..

Contributor Guidelines


  • We use test driven development. Adding a new function or feature, should mean you've added a new test in the spec/ directory. Our [testing framework] ( provides a bunch of C macros that test an expectation with a result, and nicely print broken tests when they fail. Check out any file in the spec directory to see how it's done.
  • We use [Doxygen] (http:/ to generate our API documentation. Contributors are asked to use doxygen commenting blocks so that we can automatically generate documentation. Additionally we have the practice of using the @snippet command to include portions of our specs as examples in the API. We try to make our test cases meaningful so they can be so used and make good examples.
  • Elements of Style: no tabs indentation (4 spaces). Note: if you are using emacs with prelude it specifically sets indent-tabs-mode to 't' in modules/prelude-c.el for c-mode so you have to fix that there.


  • Protocols for Inclusion.

We recognize the need to actively foster vibrant thriving community, which means among other things, building a culture that breaks cycles of marginalization and dominance behavior. To that end many open source communities adopt Codes of Conduct like this one. We are in the process of addressing the goals of such codes in what we feel is a more general way, by establishing meta requirements for each membrane within our social organism to describe its Protocols for Inclusion. Until we have done so please operate using the above referenced code as a general protocol for inclusion.


Copyright (C) 2013-2016, The MetaCurrency Project (Eric Harris-Braun, Arthur Brock, et. al.)

This program is free software: you can redistribute it and/or modify it under the terms of the license provided in the LICENSE file (GPLv3).

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



(a recomposable medium for distributed social computing) || (semantic self-describing protocol stacks)







No packages published