Contiki is a compact, open-source operating system created for deeply resource-constrained computers and embedded devices. It targets small microcontrollers and early 8-bit platforms as well as modern low-power Internet of Things (IoT) hardware. A typical Contiki installation requires only a few tens of kilobytes of memory, and the system can provide basic services such as multitasking, networking, and a lightweight graphical or web-based interface on suitably equipped platforms.

Key characteristics

At the core of Contiki is an event-driven kernel that combines low memory use with cooperative multitasking. The project introduced the idea of "protothreads," a programming abstraction that offers the simplicity of threads with the memory efficiency of event-driven code. Contiki is modular: network stacks, device drivers and application programs are components that can be included or omitted to match a platform's resources.

  • Very small footprint — often tens of kilobytes of RAM and ROM.
  • Event-driven kernel with optional lightweight threads (protothreads).
  • Built-in networking: small TCP/IP stack (uIP), support for IPv6/6LoWPAN and low-power radio stacks.
  • Support for dynamic code loading and simple GUIs or web servers on capable hardware.

History and development

Contiki was developed by Adam Dunkels while working with the Networked Embedded Systems group at the Swedish Institute of Computer Science. The name was inspired by Thor Heyerdahl's Kon-Tiki expedition, reflecting a small platform capable of long journeys. Over time Contiki has been maintained and extended by an active community and has influenced a number of follow-on projects and research efforts addressing low-power wireless networking and small-footprint IP implementations.

Uses and examples

Contiki is widely used in academic research, prototyping and in some commercial embedded products where memory and energy are limited. Typical applications include wireless sensor networks, smart-metering nodes, environmental monitors and other IoT end points. Common example applications that ship with Contiki distributions include a tiny web server, networked sensors, routing protocol implementations and remote debugging shells.

Contiki differs from other embedded operating systems in its combination of an event-driven kernel with protothreads and a focus on network protocol implementation for constrained devices. It is often compared to TinyOS (which uses a component-based event model) and to small real-time kernels such as FreeRTOS (which provide preemptive scheduling). In recent years, a successor effort known as Contiki-NG has sought to modernize and extend the original codebase for contemporary IoT requirements.

For further technical details, documentation and source code, see the project site and the kernel documentation: Contiki project page and Contiki kernel resources.