{"id":20826700,"url":"https://github.com/cedrickchee/min-torrent","last_synced_at":"2025-06-16T05:35:41.096Z","repository":{"id":64307142,"uuid":"233844687","full_name":"cedrickchee/min-torrent","owner":"cedrickchee","description":"Yet another minimalistic torrent client","archived":false,"fork":false,"pushed_at":"2020-02-06T16:12:20.000Z","size":995,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T04:22:37.085Z","etag":null,"topics":["bittorent","bittorent-client","cli","golang"],"latest_commit_sha":null,"homepage":"","language":"Go","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/cedrickchee.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}},"created_at":"2020-01-14T13:12:56.000Z","updated_at":"2025-02-21T15:52:10.000Z","dependencies_parsed_at":"2023-01-15T11:00:57.673Z","dependency_job_id":null,"html_url":"https://github.com/cedrickchee/min-torrent","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedrickchee%2Fmin-torrent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedrickchee%2Fmin-torrent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedrickchee%2Fmin-torrent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedrickchee%2Fmin-torrent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cedrickchee","download_url":"https://codeload.github.com/cedrickchee/min-torrent/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248147156,"owners_count":21055486,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bittorent","bittorent-client","cli","golang"],"created_at":"2024-11-17T23:09:48.125Z","updated_at":"2025-04-10T02:52:42.671Z","avatar_url":"https://github.com/cedrickchee.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MinTorrent\n\n[![CircleCI](https://circleci.com/gh/cedrickchee/min-torrent.svg?style=svg)](https://circleci.com/gh/cedrickchee/min-torrent)\n\nMinTorrent is a minimalistic, zero dependency torrent client, written in Go (golang).\n\nDemo of the CLI downloading torrent:\n\n![Demo](./docs/examples/download-archlinux-demo.gif)\n\n**BitTorrent protocol**\n\nThis BitTorrent client implemented the [original BitTorrent protocol spec](https://www.bittorrent.org/beps/bep_0003.html) from 2001.\n\n**Features**\n\n- Simple, 'no-nonsense' torrent leeching (doesn't support seeding yet)\n- Supports `.torrent` files (doesn't support magnet links yet)\n- HTTP trackers (no UDP trackers)\n\nAlso:\n- Single binary\n- Cross platform\n- Tiny runtime footprint — designed for running on servers and in the future, on resource-constrained environments such as embedded devices.\n\n## Installation\n\n```sh\ngo get github.com/cedrickchee/min-torrent\n```\n\nTODO: provide prebuild binaries (compiled downloads).\n\n## Basic usage\n\n```sh\nmin-torrent \u003ctorrent_file_path.torrent\u003e \u003coutput_file_path\u003e\n\n# Example: downloading Arch Linux ISO from\n# https://www.archlinux.org/download/\nmin-torrent archlinux-2020.01.01-x86_64.iso.torrent archlinux.iso\n```\n\n## Development\n\n### Running on embedded devices/microcontroller boards\n\nThat's the plan! However, this is still work-in-progress.\n\nI believe, if we compile the program using [TinyGo](https://tinygo.org/), we can run on several different microcontroller boards such as the Arduino Uno and the Rasberry Pi.\n\n## Limitations\n\n- No support for DHT, uTP, PEX and various extensions.\n\n---\n\n## Why I started this project?\n\nIn 2019, I was motivated to learn a new programming language after I've been writing JavaScript for a over a decade. I decided to learn a statically typed and compiled programming language and I choose Go.\n\nI started this project to relearn Go and to practice systems programming. My project idea was inspired by several blog posts and tutorials below (credits to them):\n\n- [A BitTorrent client in Go – Part 1: Torrent file and announcement](https://halfbyte.io/a-bittorrent-client-in-go-part-1-torrent-file-and-announcement/)\n- [How to make your own bittorrent client](https://allenkim67.github.io/programming/2016/05/04/how-to-make-your-own-bittorrent-client.html)\n- [Building a BitTorrent client from the ground up in Go](https://blog.jse.li/posts/torrent/)\n- [A BitTorrent client in Python 3.5](https://markuseliasson.se/article/bittorrent-in-python/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcedrickchee%2Fmin-torrent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcedrickchee%2Fmin-torrent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcedrickchee%2Fmin-torrent/lists"}