Thrift Eventbased Comunication System. An easy communication middleware for Java, Python, Ruby, C++ and C# which provides easy use of publish-subscribe, message-passing, remote-procedure-calls and service discovery in cyber-physical environments.

Name Last Update
examples Loading commit data...
img Loading commit data...
libtecs Loading commit data...
scripts Loading commit data...
tecs-server Loading commit data...
tecs-watchdog Loading commit data...
.gitignore Loading commit data...
CC-BY-NC4.0.pdf Loading commit data...
CHANGELOG Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE Loading commit data...
README.md Loading commit data...
basetypes.thrift Loading commit data...
logo.png Loading commit data...

TECS - Thrift Event Communication Service

TECS is a communication middleware for Java, C#, C++, Ruby and Python. It is used for rapid prototyping in research scenarios - especially in Cyber Physical Enviroments - which envolves different programming languages and operating systems. We offer communication via publish-subscribe (PS), message-passing (MP) and Thrift's RPC. Additionally UDP multicast or broadcast is used to find services in a network. TECS uses Apache Thrift which was originally developed by Facebook as an Interface Definition Language (IDL).

TECS is developed by DFKI GmbH under CC-BY-NC-4.0

  • Christian Bürckert - Christian.Buerckert@dfki.de
  • Yannick Körber - Yannick.Koerber@dfki.de
  • Magdalena Kaiser - Magdalena.Kaiser@dfki.de

Used in Projects

Used in Teaching


Development State

  • Java: Released - waiting for Bugs
  • C++: Released - waiting for Bugs
  • C#: Released - waiting for Bugs
  • Python:
    • PS Released - waiting for Bugs
    • MP Released - waiting for Bugs
    • RPC extensions - Planned - Thrift works
    • Discovery Released - waiting for Bugs
  • Ruby:
    • PS Released - waiting for Bugs
    • MP Unplanned
    • RPC Unplanned
    • Dis Unplanned

TECS - Specs


  • Available For: C++, Java, Python, C#, Ruby
  • Easy Communication Description (Thrift)
  • Up to 1 Gbit/s !!

Minimum Requires:

  • Thrift-Compiler 0.9.3 and 'libthrift'
  • For C++: C11 and boost155
  • For Java: jdk1.7 (1.8 prefered) and slf4j-api
  • For Python: 2.7
  • For C#: .NET 4.0
  • For Ruby: 2.0

Version Guide

TECS uses semantic versioning (see http://semver.org/)

Given a version number MAJOR.MINOR.PATCH, increment the:

  • MAJOR version when you make incompatible API changes,
  • MINOR version when you add functionality in a backwards-compatible manner, and
  • PATCH version when you make backwards-compatible bug fixes.

We create a git tag for each released version number.


  • major3.0 - next major version 3.0
  • minor2.1 - next minor version 2.1
  • patch2.0 - merged stable patches for version 2.0.x
  • patch1.0 - merged stable patches for version 1.0.x
  • issueX - solution for tracked issue X in our bugtracker

Directory Structure

  • /scripts: Developer scripts.

  • /examples: Contains a minimal example for all programming languages based on the same communication file. It also gives an example on how to structure a tecs project. All projects only needs to share the same (or at least a compatible) thrift file.

  • /examples/types Contains the thrift files needed for all examples.

  • /tecs-server Contains a the source and install scripts for a tecs-server which is needed for publish subscribe communication. You can simply install it on the computer which should be used as centralized server in your project.

  • /tecs-watchdog Contains a the source and install scripts for a tecs-watchdog.

  • /libtecs The libraries for the different programming languages.

  • /img Contains important image sources (i.e. for the tecs logo).

  • /docs Contains important files which help understanding TECS.