{"id":49760870,"url":"https://github.com/ganbarovemin/streamly","last_synced_at":"2026-05-24T21:00:55.272Z","repository":{"id":357003073,"uuid":"1234585802","full_name":"GanbarovEmin/streamly","owner":"GanbarovEmin","description":"Native macOS media client for cinematic discovery, user-controlled sources, local-first playback, subtitles and Sparkle updates.","archived":false,"fork":false,"pushed_at":"2026-05-22T13:10:26.000Z","size":43586,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-22T15:45:04.743Z","etag":null,"topics":["apple-silicon","local-first","macos","media-player","sparkle","streaming","swift","swiftui","torrentio"],"latest_commit_sha":null,"homepage":"https://ganbarovemin.github.io/streamly/","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GanbarovEmin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":null,"dco":null,"cla":null}},"created_at":"2026-05-10T11:32:48.000Z","updated_at":"2026-05-22T13:11:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/GanbarovEmin/streamly","commit_stats":null,"previous_names":["ganbarovemin/streamly"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/GanbarovEmin/streamly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GanbarovEmin%2Fstreamly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GanbarovEmin%2Fstreamly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GanbarovEmin%2Fstreamly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GanbarovEmin%2Fstreamly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GanbarovEmin","download_url":"https://codeload.github.com/GanbarovEmin/streamly/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GanbarovEmin%2Fstreamly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33450402,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-24T19:21:36.376Z","status":"ssl_error","status_checked_at":"2026-05-24T19:21:10.562Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["apple-silicon","local-first","macos","media-player","sparkle","streaming","swift","swiftui","torrentio"],"created_at":"2026-05-11T06:27:27.154Z","updated_at":"2026-05-24T21:00:55.264Z","avatar_url":"https://github.com/GanbarovEmin.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"landing/assets/icons/streamly-logo-primary.png\" width=\"160\" alt=\"Streamly logo\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eStreamly\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA native Apple Silicon cinema center for discovery, release selection, local-first library management and playback.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/GanbarovEmin/streamly/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/badge/download-latest%20DMG-7C3AED?style=for-the-badge\" alt=\"Download latest DMG\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://ganbarovemin.github.io/streamly/\"\u003e\u003cimg src=\"https://img.shields.io/badge/website-streamly-2563FF?style=for-the-badge\" alt=\"Streamly website\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-macOS%2013%2B-111827?style=for-the-badge\u0026logo=apple\u0026logoColor=white\" alt=\"macOS 13+\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/architecture-Apple%20Silicon-111827?style=for-the-badge\" alt=\"Apple Silicon\"\u003e\n\u003c/p\u003e\n\n![Streamly hero banner](docs/assets/hero-banner.png)\n\nStreamly brings the core desktop movie-night flow into one focused macOS app: browse movies and series, open cinematic detail pages, compare ranked user-controlled releases, start playback, resume progress, manage a local library and keep settings private on this Mac.\n\nThis is a public beta. The app is already built around the real release pipeline and downloadable DMG distribution, but Developer ID signing/notarization and some provider polish remain active release work.\n\n## Why Streamly\n\n| Product promise | What the user gets |\n| --- | --- |\n| Native macOS | SwiftUI interface, keyboard-friendly desktop navigation and Apple Silicon focused packaging. |\n| Cinema-first browsing | Home shelves, catalogs, search, posters, logos, cast, trailers, seasons and episode detail pages. |\n| Fast decisions | Releases are normalized and ranked by quality, seeders and source metadata so the best option is obvious. |\n| Local-first privacy | Library, progress, settings, cache, diagnostics and credentials stay local by default. |\n| User-controlled sources | Streamly does not host or bundle media. Users choose and configure their own sources. |\n\n## How It Works\n\n1. Browse the Home, Movies or Series surfaces.\n2. Inspect a title page with artwork, overview, cast, seasons, episodes, trailers and similar titles.\n3. Choose the recommended release or open the full release list when you want a specific quality/source.\n4. Watch through the local playback path and come back later from Continue Watching, History or Library.\n\n## Current Beta Features\n\n- Cinemeta/Stremio metadata with TMDB fallback.\n- Movie and series catalogs, search, detail pages and recommendations.\n- Episode-aware series release lookup for compatible Stremio/Torrentio IDs.\n- Torrentio source-provider integration for normalized release discovery.\n- Release ranking by quality, seeders, codec, HDR and source metadata.\n- Local files, magnet links and `.torrent` references.\n- Native torrent streaming through the bundled libtorrent runtime.\n- AVFoundation local playback and an mpv-capable playback bridge.\n- Continue Watching, watch history, user lists, favorites and ratings.\n- Embedded, local and online subtitle workflows.\n- Local diagnostics export with privacy-aware redaction.\n- Sparkle/GitHub Releases update foundation.\n\n## Screenshots\n\n| Home | Search |\n| --- | --- |\n| ![Home screen](docs/screenshots/home.png) | ![Search screen](docs/screenshots/search.png) |\n\n| Movie Detail | Series Detail |\n| --- | --- |\n| ![Movie detail screen](docs/screenshots/movie-detail.png) | ![Series detail screen](docs/screenshots/series-detail.png) |\n\n| Player | Settings |\n| --- | --- |\n| ![Player screen](docs/screenshots/player.png) | ![Settings screen](docs/screenshots/settings.png) |\n\n## Installation\n\n1. Download the latest `.dmg` from [GitHub Releases](https://github.com/GanbarovEmin/streamly/releases/latest).\n2. Open the DMG and drag `Streamly.app` to `Applications`.\n3. Launch Streamly from `Applications`.\n4. If macOS blocks the unsigned beta build, open **System Settings -\u003e Privacy \u0026 Security** and choose **Open Anyway** for Streamly.\n\nDetailed install, local data and uninstall steps live in [docs/installation.md](docs/installation.md).\n\n## System Requirements\n\n- macOS 13.0 or newer.\n- Apple Silicon Mac: M1, M2, M3, M4 or newer.\n- Internet connection for metadata, source lookup and updates.\n- Disk space for image cache, torrent cache, subtitles, diagnostics and temporary playback data.\n\nTorrent playback currently depends on the bundled macOS arm64 libtorrent runtime and is expected to work best on modern macOS releases.\n\n## Privacy And Legal\n\nStreamly is local-first:\n\n- No telemetry is enabled by default.\n- Library, watch history, settings, cache and diagnostics are stored locally.\n- Credentials and source-provider secrets are stored through macOS Keychain where supported.\n- Diagnostics export is user-created and local.\n\nStreamly does not host, provide, sell, bundle or distribute media content. Streamly does not bypass DRM, paywalls, captchas or technical access controls. Users are responsible for the sources they configure and for complying with applicable law and content rights.\n\nSee [Privacy](docs/privacy.md), [Legal](docs/legal.md) and [Security](SECURITY.md).\n\n## Architecture\n\nStreamly is a SwiftPM macOS app with separated service layers:\n\n```text\nCineFlowApp          App entry point\nCineFlowUI           SwiftUI screens, view models and navigation\nCineFlowDesignSystem Visual tokens and reusable UI primitives\nCineFlowCore         Shared models, protocols and app environment\nCineFlowMetadata     Cinemeta/TMDB discovery and metadata mapping\nCineFlowSources      Source providers, Torrentio and credential policy\nCineFlowTorrent      Torrent engine abstraction and native libtorrent bridge\nCineFlowPlayback     AVFoundation/mpv playback services\nCineFlowSubtitles    Subtitle matching, loading and cache workflows\nCineFlowDatabase     GRDB repositories and local persistence\nCineFlowUpdater      Sparkle and GitHub Releases update services\nCineFlowDiagnostics  Local logs and diagnostics export\n```\n\nThe public app, Swift package and executable product are named `Streamly`. Some internal source targets still use `CineFlow*` implementation names until a separate module rename is safe.\n\n## Build Locally\n\n```bash\nswift build\nswift test\nswift run Streamly\n```\n\nRelease packaging scripts live under `script/`:\n\n```bash\nbash script/build_release.sh\nbash script/create_dmg.sh\n```\n\n## Links\n\n- [Website](https://ganbarovemin.github.io/streamly/)\n- [Latest Release](https://github.com/GanbarovEmin/streamly/releases/latest)\n- [Documentation](docs/README.md)\n- [Changelog](CHANGELOG.md)\n- [Installation](docs/installation.md)\n- [Updates](docs/updates.md)\n- [Privacy](docs/privacy.md)\n- [Legal](docs/legal.md)\n- [Contributing](CONTRIBUTING.md)\n\n## License\n\nStreamly is released under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fganbarovemin%2Fstreamly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fganbarovemin%2Fstreamly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fganbarovemin%2Fstreamly/lists"}