{"id":27353603,"url":"https://github.com/i-ky/voicepipe","last_synced_at":"2026-01-23T03:58:22.106Z","repository":{"id":235249294,"uuid":"790379402","full_name":"i-ky/voicepipe","owner":"i-ky","description":"A simple communication device for use with development containers","archived":false,"fork":false,"pushed_at":"2024-09-28T21:58:05.000Z","size":9,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-19T22:06:04.383Z","etag":null,"topics":["codespace","codespaces","containerization","dev-container","dev-containers","devcontainer","devcontainers","modularization"],"latest_commit_sha":null,"homepage":"","language":"C++","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/i-ky.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":"2024-04-22T19:17:14.000Z","updated_at":"2024-09-28T21:58:09.000Z","dependencies_parsed_at":"2025-04-12T21:06:33.467Z","dependency_job_id":"f25c9a11-4350-4c8b-a2fd-a41f0e4b067a","html_url":"https://github.com/i-ky/voicepipe","commit_stats":null,"previous_names":["i-ky/voicepipe"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/i-ky/voicepipe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i-ky%2Fvoicepipe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i-ky%2Fvoicepipe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i-ky%2Fvoicepipe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i-ky%2Fvoicepipe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/i-ky","download_url":"https://codeload.github.com/i-ky/voicepipe/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i-ky%2Fvoicepipe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28679497,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T03:51:37.438Z","status":"ssl_error","status_checked_at":"2026-01-23T03:51:13.517Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["codespace","codespaces","containerization","dev-container","dev-containers","devcontainer","devcontainers","modularization"],"created_at":"2025-04-12T21:06:30.459Z","updated_at":"2026-01-23T03:58:22.101Z","avatar_url":"https://github.com/i-ky.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# voicepipe [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/i-ky/voicepipe)\n\n[A simple communication device](https://en.wikipedia.org/wiki/Speaking_tube)\nfor use with\n[development containers](https://containers.dev).\n\n## summary\n\nDevelopment containers are great.\nBut there is an issue which can be seen in the following picture:\n![dev container vs. production container depiction](https://containers.dev/img/dev-container-stages.png)\nIt's not to scale!\nStuff required to _run_ the application is only a fraction (both in numbers and in size) of the stuff required to _develop_ it.\nAll those compilers, SDKs, build tools, debuggers, productivity tools, etc.\nwhen put into a _single container_ may at some point start to interfere with one another.\nTools that are useful, say, 1% of the time will still sit there increasing image build time and size.\nAbundance of things means more frequent upgrades and hence more frequent image rebuilds.\nMoreover, upgrading any one thing will require rebuilding half of the image\ndue to how [build cache](https://docs.docker.com/build/cache/) works.\nThis means that you are about to spend O(N\u003csup\u003e2\u003c/sup\u003e) time rebuilding your dev container\n(where N is the number of things installed into it).\n\nThe solution is to split development environment into _multiple containers_,\neach responsible for its own compiler, SDK, build tool, debugger, etc.\nEach can be built and run independently.\nAll is needed is a voicepipe.\nOne container will shout commands into it.\nOn the other side a different container will run the command and send the results back.\n\n## disclaimer\n\nIt has been developed and tested on Linux.\nWhether it works on other systems is an open question.\nYour feedback (both positive and negative) is highly appreciated!\n\n## prerequisites\n\nYou will need `make` and C++ compiler.\n\n## compile\n\nSimply:\n```bash\nmake\n```\nIt should produce `voicepipe-client` and `voicepipe-server` executables in the project root directory.\n\n## install\n\nCopy `voicepipe-client` executable into the container where you want to shout commands into a voicepipe.\nCreate symlinks pointing to it named after the commands you want to offload into a different container.\nMake sure those symlinks are in `PATH`.\n\nCopy `voicepipe-server` executable into the containers that are responsible for running the commands.\nSet it as container's [`ENTRYPOINT`](https://docs.docker.com/reference/dockerfile/#entrypoint).\n\n## configure\n\n## use\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fi-ky%2Fvoicepipe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fi-ky%2Fvoicepipe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fi-ky%2Fvoicepipe/lists"}