{"id":30646247,"url":"https://github.com/tkatter/sericom","last_synced_at":"2025-08-31T04:33:48.846Z","repository":{"id":312121244,"uuid":"1027387243","full_name":"tkatter/sericom","owner":"tkatter","description":"CLI tool for communicating over Serial connections to networking devices like switches and routers.","archived":false,"fork":false,"pushed_at":"2025-08-28T22:00:35.000Z","size":92,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-28T23:28:34.956Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tkatter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2025-07-27T23:17:25.000Z","updated_at":"2025-08-28T22:00:38.000Z","dependencies_parsed_at":"2025-08-28T23:29:23.869Z","dependency_job_id":"189ebe62-5fb3-4e1a-9cf5-d42e8c6f5e57","html_url":"https://github.com/tkatter/sericom","commit_stats":null,"previous_names":["tkatter/sericom"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/tkatter/sericom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkatter%2Fsericom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkatter%2Fsericom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkatter%2Fsericom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkatter%2Fsericom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tkatter","download_url":"https://codeload.github.com/tkatter/sericom/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkatter%2Fsericom/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272940147,"owners_count":25018839,"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","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-08-31T04:33:45.763Z","updated_at":"2025-08-31T04:33:48.829Z","avatar_url":"https://github.com/tkatter.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Crates.io Version](https://img.shields.io/crates/v/sericom?style=for-the-badge\u0026color=green)](https://crates.io/crates/sericom)\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [Keymaps](#keymaps)\n- [Roadmap](#roadmap)\n\n# Sericom\n\nSericom is a CLI tool for communicating with devices over a serial connection.\n\nCurrently, it functions similar to the `screen` CLI tool (when used to communicate\nover a serial connection). It will print the lines received from a device over a\nserial connection to the terminal's screen and send commands to the device as it\nreceives them from stdin.\n\nSericom has the following basic functionality (tested on Windows and Linux):\n\n- Scrolling through a session's history\n- Selecting text via the mouse and copying it to the clipboard\n- Pasting text into stdin (\u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003ev\u003c/kbd\u003e)\n- Writing the lines received to a file\n\nThe goal of Sericom, going forward, is to serve as an automation tool to execute\ntasks on devices via a serial connection. Sericom was originally developed with the\nintention of communicating with networking devices (switches, routers, firewalls, etc),\nand automating the process of tasks like: running tests and saving the results to a file,\nperforming a configuration reset, configuring a device, etc. Even though Sericom was\ninitially developed to be used with networking devices, the intention going forward is to\nbe compatible (from an automation standpoint) with most devices. On that note, if you encounter\nan issue or problem, please open a Github issue.\n\n## Installation\n\n### With Cargo from crates.io\n\nTo install Sericom from crates.io, you will need to have Rust and Rust's package\nmanager Cargo installed (if you have a standard installation of Rust, you should\nalso have Cargo installed).\n\nTo check that Rust and Cargo are installed, run the following commands:\n\n```\nrustc --version\ncargo --version\n```\n\nTo install Sericom from crates.io, run:\n\n```\ncargo install sericom\n```\n\nSericom will be installed in `$HOME/.cargo/bin/`. As long as that directory is\nin your `PATH`, you should be able to start using Sericom!\n\n### Debian/Ubuntu Binary `.deb` File Installation\n\nIf using Debian or a Debian derivative like Ubuntu, Sericom can be installed\nusing a binary `.deb` file provided in [Sericom's releases](https://github.com/tkatter/sericom/releases/).\n\nEither navigate to the [release](https://github.com/tkatter/sericom/releases/) page and download the appropiate file or run:\n\n```\ncurl -LO https://github.com/tkatter/sericom/releases/download/v0.1.0/sericom_0.1.0-1_amd64.deb\n\n# Once downloaded, install with the apt package manager\nsudo apt install ./\u003cpath_to_downloaded_release\u003e.deb\n\n# Verify installation\nsericom --version\n```\n\n### Build From Source\n\nIn order to build from source, you will need to have Rust and Cargo installed\n([Rust's installation instructions](https://www.rust-lang.org/tools/install)).\n\nClone the repository and build with Cargo in the main branch:\n\n```\ngit clone https://github.com/tkatter/sericom.git\ncd sericom\ncargo build --release\n```\n\nCargo will build the binary and put it in `sericom/target/release/sericom`.\n\n## Usage\n\n### Basic usage\n\n- To open a connection to a serial port (uses a default baud rate of 9600):\n\n```\n# Syntax\nsericom \u003cPORT\u003e\n\n# Windows\nsericom.exe COM4\n\n# Linux\nsericom /dev/ttyUSB0\n```\n\n- To open a connection and write everything received to a file:\n\n```\n# Syntax\nsericom -f \u003cPATH_TO_FILE\u003e \u003cPORT\u003e\n```\n\n- To get a list of all the valid baud rates:\n\n```\nsericom list-bauds\n```\n\n- To see all of the available serial ports:\n\n```\nsericom list-ports\n```\n\n### Keymaps\n\n- Scroll to the top of the session's history: \u003ckbd\u003eF1\u003c/kbd\u003e\n- Scroll to the bottom of the session's history: \u003ckbd\u003eF2\u003c/kbd\u003e\n- Copy text: simply select the text with your mouse; upon releasing the mouse button, the selected text will be automatically copied to your clipboard\n- Paste text: \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003ev\u003c/kbd\u003e\n- Clear the screen and clear the session's history: \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003el\u003c/kbd\u003e\n- Quit: \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eq\u003c/kbd\u003e\n\n## Roadmap\n\n- Allow users to write a TOML configuration file. The file should allow the configuration of the following:\n  - Appearance settings (color of text/background)\n  - The maximum number of lines that are stored in the program's history\n  - Default directory for files to be written to\n  - Keymaps\n- Create a simple scripting language for users to write scripts (similar to expect scripts). Purposes of the scripts:\n  - Send commands to the device\n  - Scan for specific information to use elsewhere.\n  - Expect some output, and based on the output do something (send command, close connection, write ouput to file, etc.)\n  - Pseudo-example:\n  ```\n  send! \"show inventory\"\n  grep! first! \"SN:\"\n    |\u003e get! word! \"SN: $1\"\n    |\u003e set! SN=$1\n    |\u003e writef_ln! \"Serial number: '$SN'\"\n  ```\n- Allow users to create config files that describe specific devices/software/operating systems. Purposes of the config files:\n  - Define a device (name, model, brand, operating system)\n  - Define a software version (Cisco IOS, NX-OS, Dell OS9, etc.)\n  - Definitions of devices/software versions would include lines/identifiers that Sericom can scan for as lines are received from the serial connection.\n  - These definitions would serve to identify a device and then perform user-defined tasks/scripts. Examples could be to configure a switch, reset a device, run tests and write the results to a file.\n\n## Linux Setup\n\nNeed to add user to the correct group to avoid getting `Permission Denied` errors.  \nUse `ls -l /dev/tty*` to check the group of the serial ports - in my case it was `dialout`.  \nAdd user to the `dialout` group with `sudo usermod -a -G dialout $USER`.\n\n## License\n\nThis program, Sericom, is licensed under the [GNU GPL v3.0](https://github.com/tkatter/sericom/blob/main/LICENSE).\n\nThis program, Sericom, is free software: you can redistribute it and/or modify\nit under the terms of the **GNU General Public License as published by\nthe Free Software Foundation, or (at your option) any later version.**\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\n---\n\n**Note:** The author reserves the right to offer this software under a separate\ncommercial license at a future date for those who wish to use it outside\nthe terms of the GPLv3.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftkatter%2Fsericom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftkatter%2Fsericom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftkatter%2Fsericom/lists"}