[{"data":1,"prerenderedAt":142},["ShallowReactive",2],{"project-46514587":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":9,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":27,"sentiment":9,"stance_mix":28,"scored_comments":29,"aspects":31,"strip":33,"post_text":35,"what":36,"said":77,"maker_in_thread":91,"shape":96,"grid":98,"attempts":103,"same_week":104,"maker_shows":133,"maker_hidden":134,"reader_version":135,"card":136},"46514587","Tt","P2P terminal sharing over WebRTC","title","Show HN: Tt – P2P terminal sharing over WebRTC",null,"artpar",1767717517,2026,13,2,2589,4366,60,"shown","dev_tools","terminal sharing","cli",[20,23,24,25,26],"webrtc","peer to peer","xterm.js","end to end encryption","quiet",{"positive":29,"neutral":30,"mixed":30,"critical":30},1,0,{"idea":32},{"positive":29,"critical":30},[34,30],5,"Made this to use my laptop terminal session on mobile without data going through a server.\n\ntt start -p mypassword → get a URL (qrcode) → open in browser → enter password → connected.\n\nDirect webrtc datachannel between your machine and browser.\n\nSignaling server is a cloudflare worker, exchanges ~2KB of sdp\u002Fice metadata then gets out of the way. Password never transmitted - argon2id derives 256-bit key locally on both ends. All terminal i\u002Fo gets nacl secretbox encryption before hitting the datachannel. double encrypted with dtls underneath but I wanted the relay to see nothing useful even duri",{"problem":37,"audience":43,"pricing":9,"motivation":48,"time_to_build":9,"stack":52,"openness":76,"stage":76,"team_size":76},{"value":38,"source":39,"evidence":40},"Accessing a laptop terminal session from a phone without routing data through a server","maker",[41],{"id":42},"post",{"value":44,"source":45,"evidence":46},"Developers who want remote access to their terminal from a mobile browser","inferred",[47],{"id":42},{"value":49,"source":39,"evidence":50},"Maker wanted to check on Claude Code runs from their phone without data going through a server",[51],{"id":42},[53,57,61,64,68,72],{"value":54,"source":39,"evidence":55},"Go",[56],{"id":42},{"value":58,"source":39,"evidence":59},"pion\u002Fwebrtc",[60],{"id":42},{"value":25,"source":39,"evidence":62},[63],{"id":42},{"value":65,"source":39,"evidence":66},"Cloudflare Workers (signaling)",[67],{"id":42},{"value":69,"source":39,"evidence":70},"argon2id",[71],{"id":42},{"value":73,"source":39,"evidence":74},"NaCl secretbox",[75],{"id":42},"unknown",{"praise":78,"objections":87,"requests":88,"questions":89,"alternatives":90},[79],{"value":80,"source":81,"evidence":82},"Cool project and clean WebRTC use","commenter",[83],{"id":84,"by":85,"text":86},"46515361","Sean-Der","That's super cool! Nice work. I love all the 'free stuff' you get with WebRTC. My porch is just on the edge of WiFi\u002F5G and WebRTC (or mosh) feels much nicer.",[],[],[],[],{"comments":29,"answered":30,"key":92},[93],{"id":94,"text":95},"46515681","Thanks! And wow, getting a kind word from a Pion maintainer means a lot. Your library made this whole thing possible. The datachannel API is incredibly clean to work with.…",{"commenters":14,"max_depth":14,"maker_replies":29,"first_comment_mins":97,"lifespan_hours":29},46,[99,101],[84,30,34,100,85,30],"project\u002Fpositive\u002Fidea",[94,30,30,102,10,29],"commenter\u002Fpositive\u002Fnone",[],[105,110,114,118,123,128],{"id":106,"name":107,"points":108,"category":109},"46454693","OpenWorkers",500,"infrastructure",{"id":111,"name":112,"points":113,"category":19},"46491749","taws",390,{"id":115,"name":116,"points":117,"category":19},"46511469","Prism.Tools",380,{"id":119,"name":120,"points":121,"category":122},"46499646","DoNotNotify",347,"productivity",{"id":124,"name":125,"points":126,"category":127},"46488654","how browsers work",302,"learning_science",{"id":129,"name":130,"points":131,"category":132},"46501137","Tailsnitch",280,"security_privacy",3,false,"v2",{"id":137,"name":5,"line":6,"ai":134,"cat":19,"year":12,"points":13,"comments":14,"rec":27,"s":9,"top":17,"kw":138,"maker":10,"domain":139,"tier":18,"attempts":30,"strip":140,"url":-1,"mix":141,"praise":80,"objection":-1,"sub":20},46514587,[20,23,24,25,26],"","50",[29,30,30,30],1794036689691]