Version 34 (modified by Daniel Kahn Gillmor, 8 years ago) (diff)



cereal is a serial terminal management system. cereal provides a framework to easily set up and maintain automated, timestamped logs of serial lines, while simultaneously allowing end user access to them. This is probably most useful for providing automated, logged access to remote serial consoles.

cereal can control an arbitrary number of independently monitored and logged lines. Direct access to the monitored lines is allowed only to a specific user (who doesn't necessarily otherwise have access to the direct serial line), but logs can be made available to any group. Logs are rotated automatically and their total space can be limited in size.

cereal uses GNU screen as the terminal interface to the serial lines. cereal attaches a screen session to a specified serial terminal, and then monitors the screen session with runit. Any activity on that screen session is written to a log file.

cereal was conceived as a way to manage the monitoring of serial consoles on other machines. Other than network connections, serial lines are the most useful way to interact with a machine. All legitimate BIOS, bootloaders, and operating systems can provide console/terminal access through a serial line. In a high-density environment, such as a rack, all machines can be configured with their consoles on a serial line. A serial console server can then be setup with a high number of serial ports to monitor the serial consoles of all the machines in the rack. Serial monitoring requires less space, and is more flexible and convenient that typical KVM systems. cereal can be used on the serial console server to manage all the serial connections to the machines in the rack.

cereal is available under the GNU General Public License, v3 or later.


  • a "session" connects a "terminal", with screen, to a "host" (serial console) via serial "line"
  • one can "attach" to enabled session
  • one can "follow" enabled session (read logs)


cereal depends on runit and GNU screen.


cereal is particularly useful on machines with large numbers of serial ports, acting as a console server. How can you make it so that your machine has a large number of serial ports for a reasonable price?

  • the Octopus-550, an 8-port PCI card. These work well under linux, and CMRG has lots of experience with them. search around a bit for the best prices. Highly recommended.
  • CableMax USBG-8X-RS232 USB 8-port serial adapter -- uses the Prolific chipset (pl2303), which has robust driver support in Linux. Doesn't require external power or a hub for 8 ports, which is nice. One purchased in early 2009 does indeed use pl2303, and works great with cereal on debian lenny.
  • AUM180 USB 8-port Serial adapter -- also claims to use the prolific chipset. haven't tried it, but looks nice and compact.

Note: If you're using udev and USB, you might have trouble getting the devices to be named consistently. Joey Hess has a good concise writeup of how to do that (assuming you don't swap around your USB cables).


cereal is of course available in Debian. We recommend using debian's repositories unless you are building from source.

Access to the source is available via git:

git clone git://


Please report bugs via the Debian BTS. If you're running debian already, this is as easy as:

reportbug cereal

We have some legacy open issues on this tracker:

coax screen into logging to stdout or stderr
cereal bash completion
create /usr/bin/cereal-shell
cereal attach fails if there are other sessions named similarly
cereal failing to destroy stopped sessions
add ability to change session parameters