KAROS offers a heterogeneous object model with two kind of objects: ActiveObjects and DataObjects. ActiveObjects are logical units of distribution; they are uniquely referenced and their references may be known and passed to other ActiveObjects in the system. Each ActiveObject state consists of a set of references to other ActiveObjects and of local DataObjects.
The ActiveObjects method may terminate either succesfully (possibly replying to a request) or by an explicit failure, aborting the current action. ActiveObjects communicate by passing data values and references through three kind of asynchronous message passing: Apply, Call, and Send, constituting the ACS protocol.