{"id":20279049,"url":"https://github.com/t-vk/tvoip","last_synced_at":"2026-03-02T07:03:10.577Z","repository":{"id":107367371,"uuid":"102383647","full_name":"T-vK/tvoip","owner":"T-vK","description":"Terminal-based P2P VoIP application (TeamSpeak-/Skype-like voice chatting over LAN or Internet)","archived":false,"fork":false,"pushed_at":"2017-09-10T20:33:56.000Z","size":46,"stargazers_count":39,"open_issues_count":1,"forks_count":12,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-11T06:17:46.188Z","etag":null,"topics":["audio","call","chat","cli","communication","console","lan","nodejs","p2p","skype","talk","teamspeak","terminal","voice","voip"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/T-vK.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-09-04T17:02:03.000Z","updated_at":"2024-10-31T21:26:41.000Z","dependencies_parsed_at":"2023-05-17T06:30:49.696Z","dependency_job_id":null,"html_url":"https://github.com/T-vK/tvoip","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/T-vK/tvoip","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/T-vK%2Ftvoip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/T-vK%2Ftvoip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/T-vK%2Ftvoip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/T-vK%2Ftvoip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/T-vK","download_url":"https://codeload.github.com/T-vK/tvoip/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/T-vK%2Ftvoip/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29994619,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T01:47:34.672Z","status":"online","status_checked_at":"2026-03-02T02:00:07.342Z","response_time":60,"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":["audio","call","chat","cli","communication","console","lan","nodejs","p2p","skype","talk","teamspeak","terminal","voice","voip"],"created_at":"2024-11-14T13:27:52.757Z","updated_at":"2026-03-02T07:03:10.555Z","avatar_url":"https://github.com/T-vK.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terminal-based P2P VoIP communication\n\n## Todo list\n\n- [x] Get a microphone input stream\n- [x] Get a custom version of the `speaker` module which allows specifiying the output device. ([See here](https://github.com/T-vK/node-speaker/tree/select-audio-device))\n- [x] Get a speaker output stream\n- [x] Pipe a microphone input stream the the speaker output \n    - [x] On Ubuntu 16.04 LTS\n    - [x] On Raspbian stretch\n    - [x] On Fedora 26\n- [x] Pipe a microphone input stream over the network into another node process and pipe it from there to a speaker \n- [x] The above + the other way around (send+receive audio on both nodes at the same time)\n- [x] Allow connecter to reconnect to listener, after connector disconnected or crashed.\n- [x] Allow connecter to reconnect to listener, after listener disconnected or crashed. (Untested)\n- [x] Test it on Linux\n- [ ] Test it on Mac OS X (can't; don't own a device)\n- [ ] Test it on Windows \n\nOn Linux it should work fine. At least for me it does.\n\n## Description\ntvoip is a simple terminal-based P2P VoIP application. Unlike Skype or similar applications:\n\n - tvoip is completely open source\n - does not require a server, an account or even the Internet in general\n - does not come with a GUI\n - and is completely controlled through your terminal/console\n\n## Usage\n\n```\n  Usage: node index.js [options]\n\n\n  Options:\n\n    -V, --version                   output the version number\n    -c, --connect \u003chost:port\u003e       Connect to a host, (Supports IP:port and hostname:port.)\n    -l, --listen \u003cport\u003e             Automatically accept connections on this port.\n    -i, --input [device-name]       Input device, (Leave empty to use the default recording device.)\n    -o, --output [device-name]      Output device, (Leave empty to use the default playback device.)\n    -a, --mic-channels \u003ccount\u003e      Number of channels 1=mono; 2=stereo (Leave empty to use 1.)\n    -b, --speaker-channels \u003ccount\u003e  Number of channels 1=mono; 2=stereo (Leave empty to use 2.)\n    -d, --debug \u003cbool\u003e              true to enable debug, false to disable debug. (Leave empty to not use debug.)\n    -g, --log \u003cfile\u003e                Log to file\n    -h, --help                      output usage information\n\n  Examples:\n\n    node index.js --listen 3333 --input hw:0,0 --output hw:1,1\n    node index.js --connect 192.168.1.101:3333 --input hw:0,0 --output hw:1,1\n    \n```\n(The format for the input/output device comes from ALSA. Please refer to `arecord` and `aplay` and this [stackoverflow question](https://superuser.com/questions/53957/what-do-alsa-devices-like-hw0-0-mean-how-do-i-figure-out-which-to-use).)\n\n\n## Installation\n\n### Dependencies (for the audio backend)\n\n#### If you are on Linux:\nYou will need ALSA.  \n\n - Debian, Ubuntu, Raspbian etc.:\n    The packages are usually called `libasound2-dev`, `alsa-base` and `alsa-utils` on debian-like systems (`sudo apt-get install libasound2-dev alsa-base alsa-utils`).  \n - Fedora and possibly other rpm based distros:\n    You find them as `alsa-lib-devel` `alsa-utils` and `alsa-lib` (`sudo dnf install alsa-lib-devel alsa-utils alsa-lib`)\n - Other\n    Please use your favourite search engine to find out and report back if you got it to work. :)\n\n#### If you are on Mac OS X:\nYou will need SoX. Please go here: [SoX](https://sourceforge.net/projects/sox/files/sox/)\n\n#### If you are on Windows:\nYou will need SoX. Please go here: [SoX](https://sourceforge.net/projects/sox/files/sox/)\n\n### General dependencies \n\n - First you need to install a recent version of [NodeJS](https://nodejs.org/en/download/). \n - Secondly you need git. [You can get it here](https://git-scm.com/downloads)\n - Finally you need node-gyp (installation differs for Linux, OS X and Win). [Follow these steps.](https://github.com/nodejs/node-gyp)\n\n### Actual installation of tvoip\n\n - From your terminal/command line:\n    - Clone this repository recursively: `git clone --recursive https://github.com/T-vK/tvoip.git`\n    - Enter the project's directory: `cd tvoip`\n    - Install and compile the dependencies: `npm i`\n\n### Questions, Feature requests, Pull Requests, Problems?\n\nPlease open an issue [right here](https://github.com/T-vK/tvoip/issues) on Github.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ft-vk%2Ftvoip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ft-vk%2Ftvoip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ft-vk%2Ftvoip/lists"}