{"id":22916381,"url":"https://github.com/ringtailsoftware/commy","last_synced_at":"2025-04-15T12:30:31.513Z","repository":{"id":268013351,"uuid":"902966097","full_name":"ringtailsoftware/commy","owner":"ringtailsoftware","description":"A serial monitor for Mac, Linux and Windows","archived":false,"fork":false,"pushed_at":"2025-01-01T23:16:48.000Z","size":3158,"stargazers_count":39,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T22:40:50.094Z","etag":null,"topics":["serial","serial-communication","serialmonitor","uart","zig","zig-package"],"latest_commit_sha":null,"homepage":"","language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ringtailsoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-13T16:31:33.000Z","updated_at":"2025-03-20T21:51:17.000Z","dependencies_parsed_at":"2024-12-13T20:18:04.989Z","dependency_job_id":"475cd0bc-c8e7-409a-8969-8d97ecfbfdb3","html_url":"https://github.com/ringtailsoftware/commy","commit_stats":null,"previous_names":["ringtailsoftware/commy"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringtailsoftware%2Fcommy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringtailsoftware%2Fcommy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringtailsoftware%2Fcommy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringtailsoftware%2Fcommy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ringtailsoftware","download_url":"https://codeload.github.com/ringtailsoftware/commy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249071902,"owners_count":21208081,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["serial","serial-communication","serialmonitor","uart","zig","zig-package"],"created_at":"2024-12-14T06:12:37.666Z","updated_at":"2025-04-15T12:30:31.490Z","avatar_url":"https://github.com/ringtailsoftware.png","language":"Zig","readme":"# Commy, a serial monitor\n\nCommy is a small console utility for communicating with tty, UART or COM port devices. It runs on Mac, Linux and Windows. Windows support is experimental (bug reports appreciated).\n\nDoes (some of) the same things as [tio](https://github.com/tio/tio), [minicom](https://en.wikipedia.org/wiki/Minicom), [screen](https://www.gnu.org/software/screen/), [miniterm.py](https://github.com/pyserial/pyserial/blob/master/serial/tools/miniterm.py), [zcom](https://github.com/ZigEmbeddedGroup/zcom), [PuTTY](https://www.putty.org/), etc.\n\nCommy incorporates a VT220/xterm/ECMA-48 terminal emulator for consistency whether running in [Windows Terminal](https://github.com/microsoft/terminal), [XTerm](https://en.wikipedia.org/wiki/Xterm) or [Terminal.app](https://en.wikipedia.org/wiki/Terminal_(macOS)).\n\n![Mac, Windows, Linux](https://github.com/ringtailsoftware/commy/actions/workflows/build.yml/badge.svg)\n\n![](demo.gif)\n\n# Build from source\n\nUse zig 0.14.0\n\n```shell\nzig build\nzig-out/bin/commy -h\n```\n\nThe binary is:\n\n```shell\nzig-out/bin/commy\n```\n\nCopy it to a directory in your path for easy access:\n\n```shell\nsudo cp zig-out/bin/commy /usr/local/bin\n```\n\nOr if you prefer, let zig install it in your home directory (assuming `~/.local/bin` is in your `$PATH`):\n\n```shell\nzig build -Doptimize=ReleaseSafe --prefix ~/.local\n```\n\n`commy` is a single statically linked binary. No further runtime files are required.\nYou may install it on another system by simply copying the binary. It can be cross compiled using zig's `-Dtarget`\n\n```shell\nzig build -Dtarget=x86_64-windows\n```\n\n# Typical use\n\nList available serial ports\n\n```shell\ncommy -l\n\n/dev/cu.usbmodem1124101\n/dev/cu.usbmodem1124203\n```\n\nConnect to a port\n\n```shell\ncommy /dev/cu.usbmodem1124203 115200\n```\n\nCommy will try to find available ports which match so connecting to `/dev/ttyUSB0` can be written as:\n\n```shell\ncommy USB0 115200\n```\n\nThe status bar at the top shows keyboard shortcuts. Press `ctrl-a` then `q`, `\\` or `x` to quit.\n\nLog data received from a device (only received data will be logged, unless local echo is enabled):\n\n```shell\ncommy /dev/cu.usbmodem1124203 115200 -o log.txt\n```\n\nEnable local echo of sent data, used for devices which do not echo back characters they receive:\n\n```shell\ncommy /dev/cu.usbmodem1124203 115200 -e\n```\n\n# Scrollback\n\nCommy supports moving back and forwards in terminal history. However, unlike some serial monitors, it stores screen updates rather than lines of incoming text. This means that a terminal UI can be rewound and replayed in time visually. To enter scrollback, press `ctrl-a`, then use up/down/pageup/pagedown to move through terminal history.\n\nTo run commy with a longer scrollback history, use a larger `-b \u003cvalue\u003e`.\n\n![](scrollback.gif)\n\n# Why use Commy?\n\nIt tells you how to quit.\n\nCommy does what I use GNU `screen` for, but it's better in two important respects. First, it is slightly smaller; and secondly it has the words \"ctrl-a and quit\" inscribed in large friendly letters on its cover.\n\n# Help text\n\n    Usage: commy [ARGS] [OPTIONS]\n\n    Args:\n        port                                          serial port file\n        speed                                         baudrate\n\n    Options:\n        -v, --version                                 Version\n        -l, --list                                    List available serial ports\n        -e, --echo                                    Enable local echo\n        -o, --output=\u003coutput\u003e                         Log to file\n        -p, --parity=\u003cparity\u003e                         Parity\n                                                        values: { none, even, odd, mark, space }\n        -w, --wordsize=\u003cwordsize\u003e                     wordsize\n                                                        values: { five, six, seven, eight }\n        -s, --stop=\u003cstop\u003e                             stop\n                                                        values: { one, two }\n        -f, --flow=\u003cflow\u003e                             flow\n                                                        values: { none, software, hardware }\n        -b, --buffer=\u003cbuffer\u003e                         Scrollback buffer size\n        -h, --help                                    Print this help and exit\n\n# Testing\n\nIf no serial device is available, commy can connect to a Linux serial terminal inside docker. From here, any standard linux terminal software can be used.\n\n```shell\ncd linux-test\n./lincommy.sh\n```\n\nThis will build commy, then build a docker container and start it. Inside the container `socat` will create a virtual serial port and bind it to `bash`. commy will then connect to the virtual serial port. Quitting commy will close down the docker container.\n\n","funding_links":[],"categories":["Data \u0026 Science"],"sub_categories":["Sensor and Communication Interface"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fringtailsoftware%2Fcommy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fringtailsoftware%2Fcommy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fringtailsoftware%2Fcommy/lists"}