Torrent Client

I also use BitChe to find torrents. It then downloads it for Tixati to take over. This fails for some sites as the link is not so obvious and I have to manually go to the page and click the link. So a built in torrent search engine to make it seamless
 
I also use BitChe to find torrents. It then downloads it for Tixati to take over. This fails for some sites as the link is not so obvious and I have to manually go to the page and click the link. So a built in torrent search engine to make it seamless
Will give that a look.

Made the fatal mistake of updating the qt bindings so fighting with that.
 
I'm currently in the process of writing a new torrent client. What are some of your pet peeves with existing clients, and what features would you like to see in a new one?

Here's a sneak peek of the UI. I've only been working on it for about a week or two so far.

I am mostly doing it for my use, but if there's enough interest, I'll eventually release it once it's feature-rich.

View attachment 1832239

Integration with something like real debrid would be sweet, this would allow downloading of the file even on networks that block the usual p2p traffic since all it cares about is the actual file.
 
Integration with something like real debrid would be sweet, this would allow downloading of the file even on networks that block the usual p2p traffic since all it cares about is the actual file.
Will check this, never used real debrid myself,
 
Integration with something like real debrid would be sweet, this would allow downloading of the file even on networks that block the usual p2p traffic since all it cares about is the actual file.
I've added this integration to my to-do list.
 
I have a semish working state of peer to peer empheral chat going trying to see the issue with the decryption

Code:
time=2025-07-15T10:26:52.108+02:00 level=INFO msg="Starting BEP 10 Extension Isolated Test"
time=2025-07-15T10:26:52.209+02:00 level=INFO msg="Ephemeral encryption extension initialized" peer=Alice component=bep10_ephemeral_encryption
time=2025-07-15T10:26:52.387+02:00 level=INFO msg="Ephemeral encryption extension initialized" peer=Bob component=bep10_ephemeral_encryption
time=2025-07-15T10:26:52.387+02:00 level=INFO msg="Created extensions" alice_id=f1dd8340 bob_id=f9668e20
time=2025-07-15T10:26:52.387+02:00 level=INFO msg="Handshake Phase"
time=2025-07-15T10:26:52.387+02:00 level=INFO msg="Got public keys" alice_key_len=459 bob_key_len=459
time=2025-07-15T10:26:52.387+02:00 level=INFO msg="Direct Key Exchange"
time=2025-07-15T10:26:52.387+02:00 level=DEBUG msg="Initiating key exchange" peer=Alice component=bep10_ephemeral_encryption peer="[249 102 142 32 131 203 236 228 242 59 163 10 133 24 114 135 196 130 92 57]"
time=2025-07-15T10:26:52.388+02:00 level=INFO msg="Alice created key exchange message" size=257
time=2025-07-15T10:26:52.388+02:00 level=DEBUG msg="Initiating key exchange" peer=Bob component=bep10_ephemeral_encryption peer="[241 221 131 64 45 21 52 138 42 86 47 241 243 0 117 70 192 170 188 226]"
time=2025-07-15T10:26:52.388+02:00 level=INFO msg="Bob created key exchange message" size=257
time=2025-07-15T10:26:52.388+02:00 level=DEBUG msg="Handling key exchange" peer=Bob component=bep10_ephemeral_encryption peer="[241 221 131 64 45 21 52 138 42 86 47 241 243 0 117 70 192 170 188 226]" payload_len=256
time=2025-07-15T10:26:52.391+02:00 level=INFO msg="Key exchange completed" peer=Bob component=bep10_ephemeral_encryption peer="[241 221 131 64 45 21 52 138 42 86 47 241 243 0 117 70 192 170 188 226]"
time=2025-07-15T10:26:52.392+02:00 level=INFO msg="Bob handled Alice's key exchange" response_size=257
time=2025-07-15T10:26:52.392+02:00 level=DEBUG msg="Handling key exchange" peer=Alice component=bep10_ephemeral_encryption peer="[249 102 142 32 131 203 236 228 242 59 163 10 133 24 114 135 196 130 92 57]" payload_len=256
time=2025-07-15T10:26:52.393+02:00 level=INFO msg="Key exchange completed" peer=Alice component=bep10_ephemeral_encryption peer="[249 102 142 32 131 203 236 228 242 59 163 10 133 24 114 135 196 130 92 57]"
time=2025-07-15T10:26:52.393+02:00 level=INFO msg="Alice handled Bob's key exchange" response_size=257
time=2025-07-15T10:26:52.393+02:00 level=DEBUG msg="Handling key exchange" peer=Alice component=bep10_ephemeral_encryption peer="[249 102 142 32 131 203 236 228 242 59 163 10 133 24 114 135 196 130 92 57]" payload_len=256
time=2025-07-15T10:26:52.396+02:00 level=INFO msg="Key exchange completed" peer=Alice component=bep10_ephemeral_encryption peer="[249 102 142 32 131 203 236 228 242 59 163 10 133 24 114 135 196 130 92 57]"
time=2025-07-15T10:26:52.396+02:00 level=INFO msg="Alice handled Bob's response" response_size=257
time=2025-07-15T10:26:52.396+02:00 level=DEBUG msg="Handling key exchange" peer=Bob component=bep10_ephemeral_encryption peer="[241 221 131 64 45 21 52 138 42 86 47 241 243 0 117 70 192 170 188 226]" payload_len=256
time=2025-07-15T10:26:52.398+02:00 level=INFO msg="Key exchange completed" peer=Bob component=bep10_ephemeral_encryption peer="[241 221 131 64 45 21 52 138 42 86 47 241 243 0 117 70 192 170 188 226]"
time=2025-07-15T10:26:52.398+02:00 level=INFO msg="Bob handled Alice's response" response_size=257
time=2025-07-15T10:26:52.499+02:00 level=INFO msg="Session Status"
time=2025-07-15T10:26:52.499+02:00 level=INFO msg="Session status" alice_has_session_with_bob=true bob_has_session_with_alice=true
time=2025-07-15T10:26:52.499+02:00 level=INFO msg="Alice session stats" stats="map[peer_keys:1 sessions:map[f9668e2083cbece4f23ba30a85187287c4825c39:map[age:102.6299ms created:2025-07-15 10:26:52.396971 +0200 SAST m=+0.309170801 expires_in:4m59.8973701s last_used:2025-07-15 10:26:52.396971 +0200 SAST m=+0.309170801 nonce_counter:0]] total_sessions:1]"
time=2025-07-15T10:26:52.500+02:00 level=INFO msg="Bob session stats" stats="map[peer_keys:1 sessions:map[f1dd83402d15348a2a562ff1f3007546c0aabce2:map[age:100.9664ms created:2025-07-15 10:26:52.3986345 +0200 SAST m=+0.310834301 expires_in:4m59.8990336s last_used:2025-07-15 10:26:52.3986345 +0200 SAST m=+0.310834301 nonce_counter:0]] total_sessions:1]"
time=2025-07-15T10:26:52.500+02:00 level=INFO msg="Encrypted Message Exchange"
time=2025-07-15T10:26:52.500+02:00 level=INFO msg="Alice encrypted message" original_size=45 encrypted_size=74
time=2025-07-15T10:26:52.500+02:00 level=ERROR msg="Bob failed to decrypt Alice's message" error="failed to decrypt data: cipher: message authentication failed"
time=2025-07-15T10:26:52.500+02:00 level=INFO msg="Bob encrypted message" original_size=33 encrypted_size=62
time=2025-07-15T10:26:52.500+02:00 level=ERROR msg="Alice failed to decrypt Bob's message" error="failed to decrypt data: cipher: message authentication failed"
time=2025-07-15T10:26:52.500+02:00 level=INFO msg="Bidirectional Key Exchange"
time=2025-07-15T10:26:52.500+02:00 level=DEBUG msg="Initiating key exchange" peer=Bob component=bep10_ephemeral_encryption peer="[241 221 131 64 45 21 52 138 42 86 47 241 243 0 117 70 192 170 188 226]"
time=2025-07-15T10:26:52.500+02:00 level=INFO msg="Bob created key exchange message" size=257
time=2025-07-15T10:26:52.500+02:00 level=DEBUG msg="Handling key exchange" peer=Alice component=bep10_ephemeral_encryption peer="[249 102 142 32 131 203 236 228 242 59 163 10 133 24 114 135 196 130 92 57]" payload_len=256
time=2025-07-15T10:26:52.502+02:00 level=INFO msg="Key exchange completed" peer=Alice component=bep10_ephemeral_encryption peer="[249 102 142 32 131 203 236 228 242 59 163 10 133 24 114 135 196 130 92 57]"
time=2025-07-15T10:26:52.502+02:00 level=INFO msg="Alice handled Bob's key exchange" response_size=257
time=2025-07-15T10:26:52.502+02:00 level=DEBUG msg="Handling key exchange" peer=Bob component=bep10_ephemeral_encryption peer="[241 221 131 64 45 21 52 138 42 86 47 241 243 0 117 70 192 170 188 226]" payload_len=256
time=2025-07-15T10:26:52.504+02:00 level=INFO msg="Key exchange completed" peer=Bob component=bep10_ephemeral_encryption peer="[241 221 131 64 45 21 52 138 42 86 47 241 243 0 117 70 192 170 188 226]"
time=2025-07-15T10:26:52.504+02:00 level=INFO msg="Bob handled Alice's response" response_size=257
 
POC Layout for a built in PVR, the aim is for zero external dependencies.

View attachment 1833078

Obviously we will only be wanting to watch those shows about open source and such.

An option so I could use this for anime/movies etc is adding your account ala AnimeBytes/IPTorrents and then I wouldn’t need Sonarr, Jackett and all the other kak on my server. Client would search for those ISO’s when available :/
 
The stack currently is rust and qt and rust / tauri (poc above)

I haven’t decided whether I’ll open source it as of yet.

Let us know how you find Tauri; wasn’t a fan the last time I tried building something with it
 
Top
Sign up to the MyBroadband newsletter
X