{"id":15758012,"url":"https://github.com/ahmadnassri/parakeet","last_synced_at":"2025-10-19T00:07:41.655Z","repository":{"id":57318791,"uuid":"52579309","full_name":"ahmadnassri/parakeet","owner":"ahmadnassri","description":"Echo server for TCP/UDP/HTTP","archived":false,"fork":false,"pushed_at":"2019-03-04T02:48:51.000Z","size":189,"stargazers_count":5,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-26T20:23:15.107Z","etag":null,"topics":["cli"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/ahmadnassri.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}},"created_at":"2016-02-26T04:46:31.000Z","updated_at":"2023-10-19T09:57:31.000Z","dependencies_parsed_at":"2022-08-25T22:42:29.761Z","dependency_job_id":null,"html_url":"https://github.com/ahmadnassri/parakeet","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmadnassri%2Fparakeet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmadnassri%2Fparakeet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmadnassri%2Fparakeet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmadnassri%2Fparakeet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ahmadnassri","download_url":"https://codeload.github.com/ahmadnassri/parakeet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243448354,"owners_count":20292594,"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":["cli"],"created_at":"2024-10-04T09:41:39.246Z","updated_at":"2025-10-19T00:07:36.619Z","avatar_url":"https://github.com/ahmadnassri.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Parakeet\n\n[![License][license-image]][license-url] [![version][npm-image]][npm-url] [![Build Status][circle-image]][circle-url]\n\n\u003e Echo server for TCP/UDP/HTTP\n\n![screenshot](screenshot.png)\n\nWatch the screencast [here](https://asciinema.org/a/37456)\n\n## About\n\n\u003e The common parakeet (Melopsittacus undulatus), is a popular talking-bird species because of their potential for large vocabularies, ease of care and well-socialized demeanor.\n\u003e [https://en.wikipedia.org/wiki/Parakeet](https://en.wikipedia.org/wiki/Parakeet)\n\n![parakeet](parakeet.png)\n\n## Message Format\n\n| event                        | format                                                   | example                                                  |\n| ---------------------------- | -------------------------------------------------------- | -------------------------------------------------------- |\n| server start                 | `[TIME] ▶️ TYPE LISTEN_IP LISTEN_PORT`                   | `[03:32:54 AM] ▶️ TCP 127.0.0.1 1338`                    |\n| connection open              | `[TIME] ⚪ REMOTE_IP REMOTE_PORT`                         | `[03:32:54 AM] ⚪️ TCP 127.0.1.1 1338`                    |\n| connection close             | `[TIME] ⚫️️ REMOTE_IP REMOTE_PORT`                       | `[03:32:54 AM] ⚫️️️ TCP 127.0.1.1 1338`                  |\n| data recieved                | `[TIME] ✔ REMOTE_IP REMOTE_PORT [BYTES] \"MESSAGE\"`       | `[03:33:00 AM] ✔ (127.0.0.1 57619) [8] \"hello!\\r\\n\"`     |\n| http signature _(http only)_ | `[TIME] ✔ REMOTE_IP REMOTE_PORT HTTP_VERSION METHOD URL` | `[03:32:33 AM] ✔ (127.0.0.1 49575) HTTP/1.1 POST /`      |\n| http headers _(http only)_   | `[TIME] ✔ REMOTE_IP REMOTE_PORT KEY: VALUE`              | `[03:32:33 AM] ✔ (127.0.0.1 49575) Host: localhost:8080` |\n\n## Sample Output\n\n###### TCP\n\n```plain\n[03:32:54 AM] ▶️ TCP 127.0.0.1 1338\n[03:32:57 AM] ⚪ (127.0.0.1 57619)\n[03:33:00 AM] ✔ (127.0.0.1 57619) [8] \"hello!\\r\\n\"\n[03:33:08 AM] ⚫️️️ (127.0.0.1 57619)\n```\n\n###### UDP\n\n```plain\n[03:32:41 AM] ▶️ UDP4 127.0.0.1 1337\n[03:32:45 AM] ✔ (127.0.0.1 45464) [6] \"hello\\n\"\n[03:32:46 AM] ✔ (127.0.0.1 45464) [6] \"world\\n\"\n```\n\n###### HTTP\n\n```plain\n[03:32:27 AM] ▶️ HTTP 127.0.0.1 8080\n[03:32:31 AM] ⚪ (127.0.0.1 49574)\n[03:32:31 AM] ✔ (127.0.0.1 49574) HTTP/1.1 POST /\n[03:32:31 AM] ✔ (127.0.0.1 49574) Host: localhost:8080 Content-Length: 36 Content-Type: application/json; charset=utf-8 Accept-Encoding: gzip, deflate, compress Accept: application/json User-Agent: HTTPie/0.8.0\n[03:32:31 AM] ✔ (127.0.0.1 49574) [36] {\"name\": \"ahmad\", \"city\": \"toronto\"}\n[03:32:31 AM] ⚫️️️ (127.0.0.1 49574)\n\n[03:32:33 AM] ⚪ (127.0.0.1 49575)\n[03:32:33 AM] ✔ (127.0.0.1 49575) HTTP/1.1 POST /\n[03:32:33 AM] ✔ (127.0.0.1 49575) Host: localhost:8080 Content-Length: 23 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Accept-Encoding: gzip, deflate, compress Accept: */* User-Agent: HTTPie/0.8.0\n[03:32:33 AM] ✔ (127.0.0.1 49575) [23] name=ahmad\u0026city=toronto\n[03:32:33 AM] ⚫️️️ (127.0.0.1 49575)\n```\n\n## Install\n\n```bash\nnpm install parakeet\n```\n\n## Usage\n\n```plain\n\n  Usage: parakeet [options] [command]\n\n\n  Commands:\n\n    http   start HTTP echo server\n    tcp    start TCP echo server\n    udp    start UDP echo server\n\n  Options:\n\n    -h, --help               output usage information\n    -V, --version            output the version number\n    -p, --port \u003cnumber\u003e      port to listen on\n    -a, --address \u003caddress\u003e  network address to listen on\n\n```\n\n---\n\u003e Author: [Ahmad Nassri](https://www.ahmadnassri.com/) \u0026bull; \n\u003e Github: [@ahmadnassri](https://github.com/ahmadnassri) \u0026bull; \n\u003e Twitter: [@AhmadNassri](https://twitter.com/AhmadNassri)\n\n[license-url]: LICENSE\n[license-image]: https://img.shields.io/github/license/ahmadnassri/parakeet.svg?style=for-the-badge\u0026logo=circleci\n\n[circle-url]: https://circleci.com/gh/ahmadnassri/workflows/parakeet\n[circle-image]: https://img.shields.io/circleci/project/github/ahmadnassri/parakeet/master.svg?style=for-the-badge\u0026logo=circleci\n\n[npm-url]: https://www.npmjs.com/package/parakeet\n[npm-image]: https://img.shields.io/npm/v/parakeet.svg?style=for-the-badge\u0026logo=npm\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmadnassri%2Fparakeet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahmadnassri%2Fparakeet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmadnassri%2Fparakeet/lists"}