{"id":37799928,"url":"https://github.com/njyeung/reels","last_synced_at":"2026-05-18T03:01:06.071Z","repository":{"id":331795572,"uuid":"1128752739","full_name":"njyeung/reels","owner":"njyeung","description":"instagram reels in your terminal","archived":false,"fork":false,"pushed_at":"2026-05-04T08:02:41.000Z","size":404555,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-04T09:46:29.788Z","etag":null,"topics":["brainrot","cli","doomscrolling","go","instagram","instagram-api","instagram-downloader","instagram-reels","instagram-reels-automation","instgram-client","reels","reels-downloader","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","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/njyeung.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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-01-06T05:22:59.000Z","updated_at":"2026-05-04T08:02:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/njyeung/reels","commit_stats":null,"previous_names":["njyeung/reels"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/njyeung/reels","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njyeung%2Freels","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njyeung%2Freels/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njyeung%2Freels/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njyeung%2Freels/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/njyeung","download_url":"https://codeload.github.com/njyeung/reels/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njyeung%2Freels/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33163413,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T22:39:12.733Z","status":"online","status_checked_at":"2026-05-18T02:00:06.436Z","response_time":71,"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":["brainrot","cli","doomscrolling","go","instagram","instagram-api","instagram-downloader","instagram-reels","instagram-reels-automation","instgram-client","reels","reels-downloader","tui"],"created_at":"2026-01-16T15:25:18.489Z","updated_at":"2026-05-18T03:01:06.064Z","avatar_url":"https://github.com/njyeung.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@reels/tui\"\u003e\u003cimg src=\"https://img.shields.io/endpoint?url=https://proud-sun-d44c.nickjyeung.workers.dev\u0026logo=npm\" alt=\"npm\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://aur.archlinux.org/packages/reels-bin\"\u003e\u003cimg src=\"https://img.shields.io/aur/version/reels-bin\" alt=\"AUR\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/njyeung/homebrew-tap\"\u003e\u003cimg src=\"https://img.shields.io/badge/brew-njyeung/tap-orange?logo=homebrew\" alt=\"Homebrew\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/njyeung/reels/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/njyeung/reels\" alt=\"Latest Release\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/njyeung/reels\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/njyeung/reels\" alt=\"Stars\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/github/last-commit/njyeung/reels\" alt=\"Last Commit\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/macOS-supported-blue?logo=apple\" alt=\"macOS\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Linux-supported-blue?logo=linux\" alt=\"Linux\"\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/njyeung/reels\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/njyeung/reels\" alt=\"Go Report Card\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/njyeung/reels\" alt=\"License\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/banner.svg\" alt=\"REELS TUI\" width=\"100%\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/demo_popos.gif\" width=\"35%\" /\u003e\n  \u003cimg src=\"assets/demo_macos.gif\" width=\"35%\"\u003e\n  \u003cimg src=\"assets/demo_arch.gif\" width=\"26%\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/subtitle.svg\" alt=\"Doomscrollbrainrotmaxxing in the terminal\" width=\"500\"\u003e\n\u003c/p\u003e\n\n---\n\n## Prerequisites\n\n### Terminal\nYou need a terminal that supports the **Kitty graphics protocol**:\n- [Kitty](https://sw.kovidgoyal.net/kitty/) (most performant)\n- [WezTerm](https://wezfurlong.org/wezterm/)\n- [Konsole](https://konsole.kde.org/)\n\n### Chrome (LINUX ARM64 ONLY)\nChrome is automatically downloaded on first run if no system Chrome/Chromium is found; No action is needed for most platforms. The exception is Linux ARM64, where Chrome For Testing isn't available yet ([coming Q2 2026!](https://blog.chromium.org/2026/03/bringing-chrome-to-arm64-linux-devices.html)). If you are on Linux ARM64, you'll need to install Chrome, Chromium, or Brave manually before running Reels.\n\n## Usage\n\n```bash\nreels\n```\n\n### Flags\n- `--headed` - Run browser in headed mode (visible browser window)\n- `--login` - Open browser window to log in to Instagram\n\n### Controls\n\n| reels.conf bind | Default | Action |\n|-----------------|---------|--------|\n| `key_next` | `j` | Next reel (scrolls panels when open) |\n| `key_previous` | `k` | Previous reel (scrolls panels when open) |\n| `key_seek_backward` | `h` | Seek backward by 5 seconds |\n| `key_seek_forward` | `l` | Seek forward by 5 seconds |\n| `key_like` | `space` | Like/unlike |\n| `key_repost` | `r` | Repost/unrepost current reel |\n| `key_select` | `space` | Select friend in share/friends panel. Overrides any other bind while either panel is open |\n| `key_pause` | `p` | Pause/resume current reel |\n| `key_save` | `b` | Save/Unsave (bookmark) current reel |\n| `key_navbar` | `e` | Toggle navbar, a condensed version of the help menu |\n| `key_comments_open` | `c` | Open comments |\n| `key_comments_close` | `C` | Close comments |\n| `key_share_open` | `s` | Open share panel. Allows you to share reels with instagram's suggested top friends. |\n| `key_share_close` | `S` | Close Share panel \u0026 sends to friends' DMs (if any are selected) |\n| `key_friends_open` | `d` | Open DM friends panel to view reels shared by friends |\n| `key_friends_close` | `D` | Close DM friends panel / exit friend mode |\n| `key_copy_link` | `y` | Copy reel link to clipboard |\n| `key_mute` | `m` | Mute current reel |\n| `key_vol_up` | `]` | Volume up |\n| `key_vol_down` | `[` | Volume down |\n| `key_reel_size_inc` | `=` | Enlarge video |\n| `key_reel_size_dec` | `-` | Shrink video |\n| `key_help_open` | `?` | Help panel shows the current keybinds |\n| `key_help_close`| `?` | Close help panel |\n| `key_quit` | `q` | Quit |\n| `key_quit` | `ctrl+c` | Quit |\n\nAll keybinds are configurable in `reels.conf`. Each action supports multiple binds. Open/close pairs (like `key_comments_open` and `key_comments_close`) can be bound to the same key to toggle.\n\n## Installation\n\n### npm (macOS ARM64 / Linux x86_64 \u0026 ARM64)\n\n```bash\nnpm install -g @reels/tui\nreels\n```\n\n### Homebrew (macOS ARM64 / Linux x86_64 \u0026 ARM64)\n\n```bash\nbrew tap njyeung/tap\nbrew install reels\nreels\n```\n\n### AUR (Arch Linux x86_64 \u0026 ARM64)\n\n```bash\nyay -S reels-bin\nreels\n```\n\n### Pre-built Binaries\n\nDownload the latest release from [GitHub Releases](https://github.com/njyeung/reels/releases):\n\n| Platform | Binary |\n|----------|--------|\n| Linux (x86_64) | `reels-linux-amd64` |\n| Linux (ARM64) | `reels-linux-arm64` |\n| macOS (Apple Silicon) | `reels-darwin-arm64` |\n\n### Building from Source (For Developers)\n\nRequires Go 1.25+ and FFmpeg 8+ development libraries.\n\nPre-built binaries ship with FFmpeg statically linked. For development, dynamically linking against a system FFmpeg makes building and iteration faster (simply `go build -o reels`). You can still build using docker, but I highly recommend installing the correct versions of FFmpeg following the directions below:\n\n**macOS:** Requires `ffmpeg-full` from [Homebrew](https://brew.sh) (`brew install ffmpeg-full`), [MacPorts](https://ports.macports.org/port/ffmpeg/), or FFmpeg 8+ built from [source](https://github.com/ffmpeg/ffmpeg). The standard `brew install ffmpeg` is missing required framework link flags.\n\n**Linux:** Requires FFmpeg 8+ development libraries from your package manager (e.g. `sudo pacman -S ffmpeg` on Arch, `sudo apt install ffmpeg` on Debian/Ubuntu). This usually works fine as long as your packages are updated.\n\n```bash\n# brew install ffmpeg-full      on macOS\n# sudo apt install ffmpeg       on Linux\n# ffmpeg -version               should be 8+\ngit clone https://github.com/njyeung/reels.git\ncd reels\ngo build -o reels .\n```\n\n## File Paths\n\n- Settings: `~/.config/reels/reels.conf`\n- Cache: `~/.cache/reels/`\n- Chrome Data: `~/.local/shared/reels/`\n- Logs: `~/.local/state/reels/reels.log`\n\n`Debugging tip: If Reels TUI persistently fails with an error, try rm -rf ~/.local/shared/reels/`\n\n## Default settings\n\n```\n# Default config (created on first run)\n\nshow_navbar = true\nretina_scale = 2    # auto detects 2 on macOS, 1 on Linux by default\nreel_width = 270\nreel_height = 480\nreel_size_step = 30\nvolume = 1\ngif_cell_height = 5\npanel_shrink_steps = 4  # how many reel_size_steps to shrink when opening a panel\n\n# Configurable keybinds (multiple binds per action supported)\nkey_next = j\nkey_previous = k\nkey_pause = p\nkey_mute = m\nkey_like = space\nkey_repost = r\nkey_navbar = e\nkey_vol_up = ]\nkey_vol_down = [\nkey_reel_size_inc = =\nkey_reel_size_dec = -\nkey_copy_link = y\nkey_save = b\nkey_seek_forward = l\nkey_seek_backward = h\nkey_share_open = s\nkey_share_close = S\nkey_select = space\nkey_friends_open = d\nkey_friends_close = D\nkey_comments_open = c\nkey_comments_close = C\nkey_help_open = ?\nkey_help_close = ?\nkey_quit = q\nkey_quit = ctrl+c\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnjyeung%2Freels","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnjyeung%2Freels","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnjyeung%2Freels/lists"}