[{"data":1,"prerenderedAt":457},["ShallowReactive",2],{"project-47164270":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":46,"post_text":48,"what":49,"said":93,"maker_in_thread":203,"shape":213,"grid":218,"attempts":420,"same_week":421,"maker_shows":34,"maker_hidden":449,"reader_version":450,"card":451},"47164270","Terminal Phone","E2EE Walkie Talkie from the Command Line","title","Show HN: Terminal Phone – E2EE Walkie Talkie from the Command Line","https:\u002F\u002Fgitlab.com\u002Fhere_forawhile\u002Fterminalphone","gitlab.com","smalltorch",1772102445,2026,322,85,126,4366,3,"legend","security_privacy","encrypted voice messaging","cli",[24,25,26,27,28],"tor hidden service","e2ee voice messages","bash walkie talkie","onion address","openssl","mixed",0.026,{"positive":32,"neutral":33,"mixed":34,"critical":35},8,13,2,10,33,{"idea":38,"design":41,"performance":42,"privacy":44,"execution":45},{"positive":39,"critical":40},6,0,{"positive":40,"critical":39},{"positive":40,"critical":43},1,{"positive":43,"critical":34},{"positive":40,"critical":43},[47,18,18,18,18,18,47,43,47,43,43,40,40,43,43,40,40,18,40,18,40,40,18,47,47,18,47,40,40,43,47,43,18,18,43,40,40,47,40,18],5,"TerminalPhone is a single, self-contained Bash script that provides anonymous, end-to-end encrypted voice and text communication between two parties over the Tor network. It operates as a walkie-talkie: you record a voice message, and it is compressed, encrypted, and transmitted to the remote party as a single unit. You can also send encrypted text messages during a call. No server infrastructure, no accounts, no phone numbers. Your Tor hidden service .onion address is your identity.",{"problem":50,"audience":56,"pricing":56,"motivation":57,"time_to_build":56,"stack":66,"openness":90,"stage":91,"team_size":92},{"value":51,"source":52,"evidence":53},"Anonymous encrypted voice and text communication without servers or accounts","maker",[54],{"id":55},"post",null,{"value":58,"source":52,"evidence":59},"Built to explore anonymous voice over Tor and to see the encrypted bits itself",[60,63],{"id":61,"by":11,"text":62},"47164702","The library is openssl and that comes with all these ciphers available. No other reason than because we can! I wish AES-GCM was available...but openssl can't do it on its own…",{"id":64,"by":11,"text":65},"47166430","To expound on the other questions. To receive a call, you either need to be online and actively listening for calls, or optionally, you can enable auto listening. When another…",[67,74,78,82],{"value":68,"source":52,"evidence":69},"Bash",[70,73],{"id":71,"by":11,"text":72},"47165570","The base64 encoding adds about 30% overhead. It's not ideal but it was a limitation of bash. Passing raw binary does not work in bash (or I couldn't get it to work).",{"id":61,"by":11,"text":62},{"value":75,"source":52,"evidence":76},"Tor hidden services",[77],{"id":55},{"value":79,"source":52,"evidence":80},"OpenSSL",[81],{"id":61,"by":11,"text":62},{"value":83,"source":84,"evidence":85},"Opus audio codec","commenter",[86],{"id":87,"by":88,"text":89},"47164492","Pinkert","Using a v3 onion address as both the cryptographic identity and the NAT traversal layer is such a clean architectural choice. No STUN\u002FTURN servers, no hole punching, you just…","open_source","launched","unknown",{"praise":94,"objections":110,"requests":143,"questions":170,"alternatives":179},[95,103],{"value":96,"source":84,"evidence":97},"Onion address as identity is an elegant design",[98,99],{"id":87,"by":88,"text":89},{"id":100,"by":101,"text":102},"47167908","codingrot17","Neat concept — using a .onion address as identity is elegant because it sidesteps the whole \"how do you bootstrap trust\" problem that kills most P2P communication tools. The…",{"value":104,"source":84,"evidence":105},"Walkie-talkie model suits Tor latency",[106,109],{"id":107,"by":11,"text":108},"47164636","The real world delay is about 2-3 seconds your spot on. I initially started with a full duplex version but it was absolutely terrible. Walkie talkie kinda forces the recieve,…",{"id":100,"by":101,"text":102},[111,121,128,136],{"value":112,"source":84,"evidence":113},"Too many cipher options in the curated list",[114,118],{"id":115,"by":116,"text":117},"47164652","lxgr","> 21 curated ciphers are available Why!? That sounds like approximately 20 too many.",{"id":119,"by":116,"text":120},"47165120","> No other reason than because we can! Then maybe your scientists should spend some time to stop and consider whether they should ;) But seriously, I'd just limit this to one…",{"value":122,"source":84,"evidence":123},"Base64 encoding adds overhead and is an odd choice",[124],{"id":125,"by":126,"text":127},"47165281","Tepix","Interesting to implement this as a shell script. Still: Using a line based protocol and base64 encoding the audio data? Not my first choice. The README doesn't mention it, but I…",{"value":129,"source":84,"evidence":130},"Encryption layered over Tor seems redundant",[131,132],{"id":125,"by":126,"text":127},{"id":133,"by":134,"text":135},"47167410","john_strinlai",">No other reason than because we can! great attitude for approximately everything except, perhaps, cryptography. especially since the initial encryption is mostly redundant, i…",{"value":137,"source":84,"evidence":138},"Shared secret instead of PKI limits use",[139],{"id":140,"by":141,"text":142},"47165569","mrexcess","Looks awesome in many ways. The use of a shared secret instead of PKI limits the real-world applications pretty severely, but adding PKI support doesn't seem too difficult. If…",[144,151,166],{"value":145,"source":84,"evidence":146},"Group call support",[147],{"id":148,"by":149,"text":150},"47166895","chasd00","Forgive my ignorance, but can this be setup for a group like how a group can all be on the same frequency with walkie talkies? Or it is strictly one to one. Either way, it’s a…",{"value":152,"source":84,"evidence":153},"Reduce latency with streaming or single-hop Tor",[154,158,162],{"id":155,"by":156,"text":157},"47172200","medi8r","Why not stream anyway? adding to the latency by turning it to audio messages sounds more frustrating. At some point a message would be better. Modulo cool project love show HN etc.",{"id":159,"by":160,"text":161},"47167608","jetbalsa","there are ways to help with lag a bit, you can choose the number of hops a HS uses when meeting up. but of course that comes with downsides",{"id":163,"by":164,"text":165},"47185407","nullc","Since you're not realtime you could also have a configurable playback speed on the rx side or processing that removes gaps to make it go faster. This would improve the latency…",{"value":167,"source":84,"evidence":168},"PKI support",[169],{"id":140,"by":141,"text":142},[171,175],{"value":172,"source":84,"evidence":173},"Whether both parties must be online at the same time",[174],{"id":125,"by":126,"text":127},{"value":176,"source":84,"evidence":177},"Which cipher and key exchange are used and how authentication works",[178],{"id":100,"by":101,"text":102},[180,190,196],{"value":181,"source":84,"evidence":182},"Veilid network for lower latency",[183,187],{"id":184,"by":185,"text":186},"47170470","observationist","Could you use tor to establish a better realtime link using a different protocol like Veilid while maintaining the relative anonymity and security?",{"id":188,"by":185,"text":189},"47171614","Sorry if I was unclear, this stuff does get tangled, lol. I was talking about setting up a parallel veilid connection - a private route exchange between the two ends that goes…",{"value":191,"source":52,"evidence":192},"Mumble over Tor",[193],{"id":194,"by":11,"text":195},"47170863","The problem is the UDP packets from the application will ultimately be in a TCP wrapper over tor. Which will add even more latency. I know you can set up mumble over Tor but it's…",{"value":197,"source":84,"evidence":198},"letscage",[199],{"id":200,"by":201,"text":202},"47174997","m00dy","I tried using https:\u002F\u002Fletscage.com for this. Almost same design but in rust",{"comments":204,"answered":33,"key":205},22,[206,207,210],{"id":107,"text":108},{"id":208,"text":209},"47164831","It's not streamed. It gets recorded, compressed, (voice effects if you want), encrypted on device, then piped through, reverse process, auto played on reciever end. Also, once…",{"id":211,"text":212},"47166020","Thats a great idea.",{"commenters":214,"max_depth":215,"maker_replies":204,"first_comment_mins":216,"lifespan_hours":217},40,7,21,103,[219,221,225,227,231,232,235,237,241,243,244,246,248,249,250,254,256,258,261,262,264,265,269,272,275,278,280,282,285,287,288,290,292,294,297,300,304,307,310,312,315,318,322,325,328,330,333,335,339,341,342,344,346,349,351,353,356,358,360,363,366,368,372,374,376,378,381,383,386,388,390,392,394,396,397,399,404,408,411,414,417],[87,40,47,220,88,40],"project\u002Fpositive\u002Fidea",[222,40,40,223,224,40],"47164618","other\u002Fneutral\u002Fnone","idiotsecant",[107,40,40,226,11,43],"project\u002Fneutral\u002Fperformance",[228,40,18,229,230,40],"47164725","project\u002Fneutral\u002Fdesign","ale42",[208,40,40,229,11,43],[233,40,18,229,234,40],"47165727","iamnothere",[211,40,40,236,11,43],"maker\u002Fpositive\u002Fnone",[238,40,18,239,240,40],"47167027","maker\u002Fneutral\u002Fnone","bzmrgonz",[242,40,40,229,11,43],"47180208",[159,40,18,226,160,40],[245,40,40,226,11,43],"47195483",[184,40,18,247,185,40],"project\u002Fneutral\u002Fidea",[194,40,40,226,11,43],[188,40,47,220,185,40],[251,40,43,252,253,40],"47165174","project\u002Fcritical\u002Fperformance","nunobrito",[155,40,43,255,156,40],"project\u002Fcritical\u002Fdesign",[257,43,47,220,234,40],"47165687",[259,43,40,223,260,40],"47173126","xnyan",[115,34,43,255,116,40],[61,34,40,263,11,43],"project\u002Fneutral\u002Fprivacy",[119,34,43,255,116,40],[266,34,40,267,268,40],"47166241","commenter\u002Fneutral\u002Fprivacy","Bender",[270,34,40,267,271,40],"47174933","inigyou",[273,34,40,274,268,40],"47201946","commenter\u002Fneutral\u002Fnone",[276,34,40,267,277,40],"47170281","fc417fc802",[279,34,40,267,116,40],"47171955",[281,34,40,274,277,40],"47172365",[283,34,43,284,260,40],"47173208","project\u002Fcritical\u002Fprivacy",[286,34,43,255,271,40],"47165398",[133,34,43,255,134,40],[289,34,40,267,268,40],"47166231",[291,34,40,274,116,40],"47168191",[293,34,40,267,268,40],"47170458",[295,34,40,223,296,40],"47173906","sadeshmukh",[298,18,40,223,299,40],"47165957","aitchnyu",[301,302,18,263,303,40],"47164402",4,"marcosqanil",[305,302,40,306,11,43],"47164538","maker\u002Fneutral\u002Fprivacy",[308,302,40,274,309,40],"47164680","deadbabe",[311,302,40,223,11,43],"47164787",[313,302,18,226,314,40],"47166899","clouedoc",[316,302,40,317,11,43],"47167234","project\u002Fpositive\u002Fperformance",[319,302,40,320,321,40],"47170087","other\u002Fneutral\u002Fidea","rsync",[323,302,40,324,277,40],"47170463","other\u002Fcritical\u002Fdesign",[326,302,40,327,321,40],"47171420","commenter\u002Fneutral\u002Fidea",[329,302,40,274,277,40],"47172578",[331,47,18,263,332,40],"47164512","rustyhancock",[334,47,40,263,11,43],"47164749",[336,47,47,337,338,40],"47164994","project\u002Fpositive\u002Fprivacy","kortilla",[340,39,40,247,11,43],"47221618",[163,215,47,220,164,40],[343,215,40,317,11,43],"47186276",[140,32,18,345,141,40],"project\u002Fmixed\u002Fdesign",[347,32,40,348,11,43],"47186292","project\u002Fpositive\u002Fdesign",[148,350,47,220,149,40],9,[352,350,40,267,240,40],"47166993",[354,350,40,267,355,40],"47167032","cl3misch",[357,350,40,267,11,43],"47167075",[359,350,40,247,11,43],"47166995",[361,35,43,255,362,40],"47164547","oybng",[364,35,18,229,365,40],"47167769","nebezb",[200,367,18,247,201,40],11,[369,370,47,220,371,40],"47166392",12,"sailorganymede",[373,370,40,223,11,43],"47166734",[125,33,43,375,126,40],"project\u002Fcritical\u002Fexecution",[71,33,40,377,11,43],"maker\u002Fneutral\u002Fexecution",[379,33,18,377,380,40],"47165960","extraduder_ire",[382,33,40,377,11,43],"47180858",[384,33,18,377,385,40],"47178028","snthpy",[387,33,40,377,11,43],"47180958",[389,33,43,284,268,40],"47166276",[391,33,40,274,126,40],"47191356",[393,33,40,267,268,40],"47201919",[395,33,40,267,126,40],"47215199",[64,33,40,306,11,43],[398,33,18,377,277,40],"47171060",[400,401,47,402,403,40],"47166662",14,"project\u002Fpositive\u002Fnone","ProofHouse",[405,406,40,223,407,40],"47165735",15,"sourcegrift",[409,406,40,223,410,40],"47173131","zie",[100,412,18,413,101,40],16,"project\u002Fmixed\u002Fprivacy",[415,412,40,274,416,40],"47168221","driftbyte62",[418,412,40,419,11,43],"47168702","maker\u002Fneutral\u002Fdesign",[],[422,427,431,436,440,445],{"id":423,"name":424,"points":425,"category":426},"47224295","I built a sub-500ms latency voice agent from scratch",570,"ai",{"id":428,"name":429,"points":430,"category":426},"47195123","Now I Get It",305,{"id":432,"name":433,"points":434,"category":435},"47220809","Govbase",219,"productivity",{"id":437,"name":438,"points":439,"category":426},"47212576","Timber",207,{"id":441,"name":442,"points":443,"category":444},"47180083","RetroTick",195,"dev_tools",{"id":446,"name":447,"points":443,"category":448},"47197218","Stacked Game of Life","learning_science",false,"v2",{"id":452,"name":5,"line":6,"ai":449,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":453,"top":18,"kw":454,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":455,"url":9,"mix":456,"praise":96,"objection":112,"sub":21},47164270,0.03,[24,25,26,27,28],"5333335151100110030300355350015133100503",[32,33,34,35],1794036694518]