{"id":47692651,"url":"https://github.com/johnwatso/swiftminer","last_synced_at":"2026-05-29T06:01:19.227Z","repository":{"id":345612779,"uuid":"1184095956","full_name":"johnwatso/SwiftMiner","owner":"johnwatso","description":"Native macOS app for automatic Twitch Drops farming. Multi-account Twitch Drops miner built with Swift 6 and SwiftUI. Secure, fast, and AFK ready","archived":false,"fork":false,"pushed_at":"2026-05-25T11:08:39.000Z","size":14409,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-25T11:14:31.011Z","etag":null,"topics":["afk","automation","macos","multi-account","native-macos","swift","swiftui","twitch","twitch-drops","twitch-drops-miner"],"latest_commit_sha":null,"homepage":"https://johnwatso.github.io/SwiftMiner/","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/johnwatso.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-17T08:47:59.000Z","updated_at":"2026-05-25T11:08:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/johnwatso/SwiftMiner","commit_stats":null,"previous_names":["johnwatso/swiftminer"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/johnwatso/SwiftMiner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnwatso%2FSwiftMiner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnwatso%2FSwiftMiner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnwatso%2FSwiftMiner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnwatso%2FSwiftMiner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnwatso","download_url":"https://codeload.github.com/johnwatso/SwiftMiner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnwatso%2FSwiftMiner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33639055,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["afk","automation","macos","multi-account","native-macos","swift","swiftui","twitch","twitch-drops","twitch-drops-miner"],"created_at":"2026-04-02T15:51:26.624Z","updated_at":"2026-05-29T06:01:19.213Z","avatar_url":"https://github.com/johnwatso.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/readme/TM Icon.png\" width=\"120\" alt=\"SwiftMiner icon\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eSwiftMiner — Native macOS Twitch Drops Automation\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  Automated Twitch Drops farming for macOS. Secure, native, and multi-account ready.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-macOS%2026+-blue\" alt=\"Platform badge\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/swift-6.0-orange\" alt=\"Swift badge\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/architecture-Universal%20(Apple%20Silicon%20%2B%20Intel)-black\" alt=\"Architecture badge\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"License badge\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/status-active%20development-orange\" alt=\"Status badge\"\u003e\n\u003c/p\u003e\n\n**SwiftMiner** is a high-performance, native macOS application designed to automate **Twitch Drops farming** across multiple accounts simultaneously. Built with Swift 6 and SwiftUI, it provides a lightweight, background-ready solution for claiming Twitch rewards without the need for browser automation or heavy external dependencies.\n\nIt is written in Swift using SwiftUI and standard macOS frameworks. Each account runs in its own isolated miner, and the app provides a single interface to monitor progress, claim state, and activity.\n\nIt can be used for a single account or multiple accounts.\n\n## Acknowledgements\n\nSwiftMiner was developed using [TwitchDropsMiner](https://github.com/DevilXD/TwitchDropsMiner) as a reference for expected behavior and edge cases.\n\nThat project established a working model for automating Twitch Drops progression. SwiftMiner implements a similar idea as a native macOS application, with a focus on multi-account management and a consolidated interface.\n\nRelease builds are produced with [ShipHook](https://github.com/maxhewett/ShipHook), which handles the build, signing, notarization, Sparkle appcast, and release publishing flow.\n\n## Overview\n\nSwiftMiner monitors active Twitch Drop campaigns and selects streams to watch based on:\n\n- Campaign priority\n- Time remaining\n- Account eligibility\n\nEach account progresses independently. The app handles stream selection, progress tracking, and claiming completed Drops.\n\n## Why This Exists\n\nI wanted something that runs natively on macOS without relying on browser automation or external tooling.\n\nExisting solutions worked, but they were difficult to manage across multiple accounts. I often needed to run miners for friends who do not have their own systems running 24/7, which made coordination and visibility awkward.\n\nSwiftMiner provides a single interface to manage multiple accounts, with release builds that are signed and notarized for macOS.\n\n## What SwiftMiner Does\n\n- Watches Twitch streams to farm Drops automatically\n- Prioritizes campaigns based on time remaining and configured order\n- Runs each account as an independent miner\n- Tracks in-progress, claimable, and completed Drops in one view\n- Automatically claims Drops when they complete\n- Supports multiple accounts running in parallel\n- Provides both a main window and a menu bar interface\n- Uses Twitch device-code login, with no embedded browser\n- Ships signed and notarized release builds for macOS\n- Supports Sparkle update checks, automatic updates, and unattended updates\n- Runs as a native macOS app built with Swift and SwiftUI\n\n## Preview\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"Documentation/Images/1_Overview UI Example.png\" alt=\"SwiftMiner overview screen\"\u003e\n  \u003cimg src=\"Documentation/Images/2_Miners UI Example.png\" alt=\"SwiftMiner miners screen\"\u003e\n  \u003cimg src=\"Documentation/Images/3_Drops UI Example.png\" alt=\"SwiftMiner drops screen\"\u003e\n\u003c/p\u003e\n\n## How It Works\n\n- Each account runs its own miner engine\n- The engine fetches active campaigns and eligibility from Twitch\n- Campaigns are prioritized based on time remaining and user preference\n- A stream is selected for the active campaign\n- Watch progress is tracked via Twitch APIs\n- Completed Drops are claimed automatically\n\nThe app sits on top of these engines and presents their state in a single interface.\n\n## Install\n\nDownload the latest release from [GitHub Releases](https://github.com/johnwatso/SwiftMiner/releases).\n\n1. Download the latest `.zip`\n2. Move `SwiftMiner.app` to `/Applications`\n3. Open the app and add an account\n4. Allow notifications if you want claim alerts\n\n\u003e [!TIP]\n\u003e **Security Prompt:** On first update or when enabling automatic updates, macOS may prompt for **\"App Management\"** permissions. This is expected and required for **Sparkle** to perform unattended/auto updates. You should allow this if you want the app to stay up-to-date automatically in the background.\n\nRelease builds support both Apple Silicon (`arm64`) and Intel (`x86_64`).\n\nRelease builds are signed and notarized through ShipHook, and SwiftMiner includes Sparkle support for update prompts, automatic background checks, and unattended updates when macOS allows them.\n\n\u003e [!NOTE]\n\u003e Intel support depends on Apple's toolchain. If future macOS SDKs drop Intel support, SwiftMiner will move to Apple Silicon only.\n\n## Releases vs. Development Builds\n\nThe latest GitHub release is the most stable version.\n\nBuilding from the current `main` branch includes newer changes that have not been released yet. These builds may contain bugs, incomplete features, or breaking changes.\n\n## Requirements\n\n- macOS 26+\n- Internet access\n\n## Project Layout\n\n```text\nSources/\n  SwiftMiner/       macOS app: UI, onboarding, dashboard, menu bar\n  SwiftMinerCore/   mining engine, Twitch services, models, aggregation\nTests/              unit tests\nDocumentation/      architecture and implementation notes\nscripts/            build and release automation\n```\n\n## Architecture\n\nSwiftMiner is a native Xcode project split between the macOS app and `SwiftMinerCore`, which contains the mining engine, Twitch services, models, and account state.\n\n## Notes and Risk\n\n\u003e [!CAUTION]\n\u003e This tool automates Twitch Drop viewing.\n\u003e\n\u003e Twitch's policies around automation are not always clearly defined, so there is some risk when using it.\n\u003e\n\u003e Proceed with caution and use at your own discretion.\n\n\u003c!-- markdownlint-disable-next-line MD028 --\u003e\n\u003e [!WARNING]\n\u003e If the same account is used to watch a stream elsewhere (e.g. in a browser or another device),\n\u003e Twitch may prioritise that session instead.\n\u003e \n\u003e This can stall drop progress or cause the miner to switch streams.\n\n\u003c!-- markdownlint-disable-next-line MD028 --\u003e\n\u003e [!WARNING]\n\u003e Twitch may change how Drops or third-party automation is handled at any time. Accounts could be affected. Use with that in mind.\n\n\u003c!-- markdownlint-disable-next-line MD028 --\u003e\n\u003e [!NOTE]\n\u003e Only one active stream per account contributes to drop progress.\n\n\u003c!-- markdownlint-disable-next-line MD028 --\u003e\n\u003e [!NOTE]\n\u003e SwiftMiner is intended for personal use on your own machines.\n\n\u003c!-- markdownlint-disable-next-line MD028 --\u003e\n\u003e [!NOTE]\n\u003e Performance depends on system resources, network conditions, and the number of accounts being managed.\n\n## Issues\n\nPlease raise a GitHub issue if something breaks, behaves unexpectedly, or needs attention.\n\nSwiftMiner depends on Twitch's private behavior for Drops, watch progress, and claiming. Changes on Twitch's side can break the app without warning. To reduce downtime, enable automatic updates or unattended updates where possible so fixes are installed as soon as they are released.\n\n## Related Docs\n\n- [Architecture Overview](Documentation/ARCHITECTURE.md)\n- [Engine Architecture](Documentation/EngineArchitecture.md)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnwatso%2Fswiftminer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnwatso%2Fswiftminer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnwatso%2Fswiftminer/lists"}