{"id":13448404,"url":"https://github.com/octobox/octobox","last_synced_at":"2026-05-01T02:01:15.285Z","repository":{"id":37271433,"uuid":"76692542","full_name":"octobox/octobox","owner":"octobox","description":"📮 Untangle your GitHub Notifications","archived":false,"fork":false,"pushed_at":"2026-04-28T10:58:28.000Z","size":24323,"stargazers_count":4461,"open_issues_count":60,"forks_count":341,"subscribers_count":61,"default_branch":"main","last_synced_at":"2026-04-28T12:33:45.134Z","etag":null,"topics":["github","github-notifications","inbox","notifications","octobox","rails","ruby","triage"],"latest_commit_sha":null,"homepage":"https://octobox.io","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/octobox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"docs/SUPPORT.md","governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"octobox","open_collective":"octobox"}},"created_at":"2016-12-16T23:29:16.000Z","updated_at":"2026-04-28T10:58:33.000Z","dependencies_parsed_at":"2024-01-17T12:35:37.530Z","dependency_job_id":"c7afa8ab-9410-438e-9d95-103176462a43","html_url":"https://github.com/octobox/octobox","commit_stats":{"total_commits":3616,"total_committers":122,"mean_commits":"29.639344262295083","dds":0.5779867256637168,"last_synced_commit":"06a633476b15f191ba4ecb896cf0e0efde5d2180"},"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/octobox/octobox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octobox%2Foctobox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octobox%2Foctobox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octobox%2Foctobox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octobox%2Foctobox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/octobox","download_url":"https://codeload.github.com/octobox/octobox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octobox%2Foctobox/sbom","scorecard":{"id":114154,"data":{"date":"2025-08-04","repo":{"name":"github.com/octobox/octobox","commit":"2169e4ef48f391894c0a83e05ab60b048444d6c3"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":6.5,"checks":[{"name":"Code-Review","score":0,"reason":"Found 1/13 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#security-policy"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#fuzzing"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:28","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:29","Info: jobLevel 'contents' permission set to 'read': .github/workflows/publish.yml:13","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/docker-build.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#token-permissions"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: GNU Affero General Public License v3.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#license"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish.yml:8"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":4,"reason":"dependency not pinned by hash detected -- score normalized to 4","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/octobox/octobox/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/octobox/octobox/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/octobox/octobox/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/octobox/octobox/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/octobox/octobox/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/octobox/octobox/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/octobox/octobox/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-build.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/octobox/octobox/docker-build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/octobox/octobox/publish.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:33: pin your Docker image by updating ruby:3.4.5-alpine to ruby:3.4.5-alpine@sha256:e284f39a2103a564dca9771a81bfecb455b04cd3be4149b133ed7e508ef1b65f","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   4 out of   5 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":9,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 17 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-vc8w-jr9v-vj7f"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-15T22:58:01.165Z","repository_id":37271433,"created_at":"2025-08-15T22:58:01.165Z","updated_at":"2025-08-15T22:58:01.165Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32394476,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T14:34:11.604Z","status":"ssl_error","status_checked_at":"2026-04-28T14:32:37.009Z","response_time":56,"last_error":"SSL_read: 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":["github","github-notifications","inbox","notifications","octobox","rails","ruby","triage"],"created_at":"2024-07-31T05:01:44.574Z","updated_at":"2026-05-01T02:01:15.279Z","avatar_url":"https://github.com/octobox.png","language":"Ruby","funding_links":["https://github.com/sponsors/octobox","https://opencollective.com/octobox"],"categories":["Ruby","Happy Exploring 🤘","Apps","github"],"sub_categories":["Development"],"readme":"# [Octobox](https://octobox.io) \u0026#128238; Untangle your GitHub Notifications.\n\nOctobox helps you manage your GitHub notifications efficiently so you can spend less time managing and more time getting things done.\n\n- **Don't lose track** - Octobox adds an extra \"archived\" state to each notification so you can mark it as \"done\". If anything happens on an archived thread, issue or PR, Octobox will move it back into your inbox.\n\n- **Starred notifications** - Let's be honest, you probably don't have a 'favourite' issue but Octobox lets you highlight important notifications with a star so you can come back and find them easily.\n\n- **Enhanced notifications** - Like notifications, but better. With issue/pull-request status, CI status, labels and more shown alongside basic title, organisation, repo and type information.\n\n- **Filter all the things** - Filter notifications by repository, organisation, type, action, state, CI status and reason and keep notifications from bots alongside your regular labels, author and assignees.\n\n- **Search with prefix filters** - No more Jedi mind tricks. Combine a wide range of powerful search filters help you get straight to the notification you're looking for and focus on just what you need.\n\n- **Built for keyboard warriors** - Navigate, triage and manage your notifications like a pro using Gmail-inspired keyboard shortcuts for every function, no mouse required.\n\n- **Open for everyone** - Octobox developers use Octobox to develop Octobox. 100% developed and managed in the open on GitHub under a FLOSS license.\n\n![Screenshot of  Octobox](app/assets/images/screenshot.png)\n\n[![View performance data on Skylight](https://badges.skylight.io/typical/eLvcBBdLmV6k.svg)](https://oss.skylight.io/app/applications/eLvcBBdLmV6k)\n[![Docker](https://img.shields.io/docker/pulls/octoboxio/octobox.svg)](https://hub.docker.com/r/octoboxio/octobox/)\n[![Gitter](https://img.shields.io/gitter/room/octobox/octobox.svg)](https://gitter.im/octobox/octobox)\n[![OpenCollective](https://opencollective.com/octobox/backers/badge.svg)](#backers)\n[![OpenCollective](https://opencollective.com/octobox/sponsors/badge.svg)](#sponsors)\n[![Open Source Helpers](https://www.codetriage.com/andrew/github-inbox/badges/users.svg)](https://www.codetriage.com/andrew/github-inbox)\n[![license](https://img.shields.io/github/license/octobox/octobox.svg)](LICENSE.txt)\n\n## Why is this a thing?\n\nIf you manage any active projects on GitHub, you probably find [GitHub Notifications](https://github.com/notifications) pretty lacking.\n\nNotifications are marked as read and disappear from the list as soon as you load the page or view the email of the notification. This makes it very hard to keep on top of which notifications you still need to follow up on. Most open source maintainers and GitHub staff end up using a complex combination of filters and labels in Gmail to manage their notifications from their inbox. If, like me, you try to avoid email, then you might want something else.\n\nOctobox adds an extra \"archived\" state to each notification so you can mark it as \"done\". If new activity happens on the thread/issue/pr, the next time you sync the app the relevant item will be unarchived and moved back into your inbox.\n\n## Table of Contents\n\n- [Octobox 📮 Untangle your GitHub Notifications.](#octobox--untangle-your-github-notifications)\n\t- [Why is this a thing?](#why-is-this-a-thing)\n\t- [Table of Contents](#table-of-contents)\n\t- [Getting Started](#getting-started)\n\t\t- [Install](#install)\n\t\t- [Desktop usage](#desktop-usage)\n\t\t- [Web extension](#web-extension)\n\t- [Requirements](#requirements)\n\t- [Viewing comment threads](#viewing-comment-threads)\n\t- [Keyboard shortcuts](#keyboard-shortcuts)\n\t- [API Documentation](#api-documentation)\n\t- [Backers](#backers)\n\t- [Sponsors](#sponsors)\n\t- [Contribute](#contribute)\n\t\t- [Note on Patches/Pull Requests](#note-on-patchespull-requests)\n\t\t- [Vulnerability disclosure](#vulnerability-disclosure)\n\t\t- [Code of Conduct](#code-of-conduct)\n\t- [Copyright](#copyright)\n\n## Getting Started\n\n### Install\n\nYou can also host Octobox yourself! See [the installation guide](docs/INSTALLATION.md)\nfor installation instructions and details regarding deployment to Heroku, Docker, and more.\n\n### Desktop usage\n\nYou can run Octobox locally as a desktop app too if you'd like, using [Nativefier](https://www.npmjs.com/package/nativefier):\n\n```bash\nnpm install -g nativefier\nnativefier \"https://octobox.io\" # Or your own self-hosted URL\n```\n\nThis will build a local application (.exe, .app, etc) and put it in your current folder, ready to use.\n\n### Web extension\n\nYou can also install the cross-browser [Octobox Web Extension](https://github.com/tfrommen/octobox-web-extension). It is available for [Google Chrome](https://chromewebstore.google.com/detail/octobox/dpbajpnhgagfneijghelgldegjblinkc) and [Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/octobox-web-extension/), but you can also use it with other browsers that support web extensions.\n\n## Requirements\n\n[Web notifications](https://github.com/settings/notifications) must be enabled in your GitHub settings for Octobox to work. To receive vulnerability notifications, you must enable them as well.\n\n\u003cimg width=\"739\" alt=\"screenshot 2018-11-12 at 14 32 38\" src=\"/docs/assets/notification-settings.png\"\u003e\n\n## Viewing comment threads\n\nOctobox's thread view support is currently in public beta. To enable it select 'on octobox' from the 'Open notifications' menu in `/settings`.\n\nThreads need to be synchronised in order to view them in Octobox. Some notifications will still show the `:link-external:` icon from the notification window if they do not have an associated thread or have yet to synchronise one.\n\n## Keyboard shortcuts\n\nYou can use keyboard shortcuts to navigate and perform certain actions:\n\n - `a` - Select/deselect all\n - `r` or `.` - Refresh list\n - `j` - Move down the list\n - `k` - Move up the list\n - `s` - Star current notification\n - `x` - Mark/unmark current notification\n - `y` or `e` - Archive current/marked notification(s)\n - `m` - Mute current/marked notification(s)\n - `d` - Mark current/marked notification(s) as read here and on GitHub\n - `o` or `Enter` - Open current notification in a new window\n\nPress `?` for the help menu.\n\n## API Documentation\n\nOctobox provides a REST API for managing notifications, users, and pinned searches. The complete API specification is available as an OpenAPI document:\n\n- **[OpenAPI Specification](https://github.com/octobox/octobox/blob/main/openapi.yaml)** - Complete API reference with examples\n- **[Interactive API Explorer](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/octobox/octobox/main/openapi.yaml)** - Try the API directly in your browser\n\nThe API supports Bearer token authentication and covers all major Octobox functionality including notification management, user settings, and pinned search operations.\n\n## Backers\nThank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/octobox#backer)]\n\n\u003ca href=\"https://opencollective.com/octobox#backers\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/octobox/backers.svg?width=890\"\u003e\u003c/a\u003e\n\n## Sponsors\n\nSupport this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/octobox#sponsor)]\n\n\u003ca href=\"https://opencollective.com/octobox/sponsor/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/octobox/sponsor/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/octobox/sponsor/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/octobox/sponsor/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/octobox/sponsor/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/octobox/sponsor/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/octobox/sponsor/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/octobox/sponsor/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/octobox/sponsor/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/octobox/sponsor/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/octobox/sponsor/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/octobox/sponsor/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/octobox/sponsor/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/octobox/sponsor/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/octobox/sponsor/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/octobox/sponsor/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/octobox/sponsor/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/octobox/sponsor/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/octobox/sponsor/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/octobox/sponsor/9/avatar.svg\"\u003e\u003c/a\u003e\n\n## Testing\n\nRun the full test suite with:\n\n```bash\nbundle exec rails test\n```\n\n### System tests (browser tests)\n\nSystem tests run in a real browser using [Playwright](https://playwright.dev/) via `capybara-playwright-driver`. They test interactive behavior like keyboard shortcuts, checkbox selection, and AJAX actions.\n\nOne-time setup:\n\n```bash\nnpx playwright install chromium\n```\n\nRun system tests:\n\n```bash\nbundle exec rails test:system\n```\n\nTo watch tests in a visible browser window:\n\n```bash\nHEADLESS=false bundle exec rails test:system\n```\n\n## Contribute\n\nPlease do! The source code is hosted at [GitHub](https://github.com/octobox/octobox). If you want something, [open an issue](https://github.com/octobox/octobox/issues/new) or a pull request.\n\nIf you need want to contribute but don't know where to start, take a look at the issues tagged as [\"Help Wanted\"](https://github.com/octobox/octobox/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22).\n\nYou can also help triage issues. This can include reproducing bug reports, or asking for vital information such as version numbers or reproduction instructions. If you would like to start triaging issues, one easy way to get started is to [subscribe to Octobox on CodeTriage](https://www.codetriage.com/octobox/octobox).\n\nFinally, this is an open source project. If you would like to become a maintainer, we will consider adding you if you contribute frequently to the project. Feel free to ask.\n\nFor other updates, follow the project on Twitter: [@octoboxio](https://twitter.com/octoboxio).\n\n### Note on Patches/Pull Requests\n\n * Fork the project.\n * Make your feature addition or bug fix.\n * Add tests for it. This is important so we don't break it in a future version unintentionally.\n * Send a pull request. Bonus points for topic branches.\n\n### Vulnerability disclosure\n\nWe support and encourage security research on Octobox under the terms of our [vulnerability disclosure policy](docs/VULNERABILITY_DISCLOSURE_POLICY.md).\n\n### Code of Conduct\n\nPlease note that this project is released with a [Contributor Code of Conduct](docs/CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.\n\n## Copyright\n\n[GNU Affero License](LICENSE.txt) © 2021 [Andrew Nesbitt](https://github.com/andrew).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctobox%2Foctobox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foctobox%2Foctobox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctobox%2Foctobox/lists"}