{"id":13553288,"url":"https://github.com/tholian-network/stealth","last_synced_at":"2025-10-06T13:44:15.578Z","repository":{"id":41282850,"uuid":"164353966","full_name":"tholian-network/stealth","owner":"tholian-network","description":":rocket: Stealth - Secure, Peer-to-Peer, Private and Automateable Web Browser/Scraper/Proxy","archived":false,"fork":false,"pushed_at":"2023-10-05T18:22:25.000Z","size":20839,"stargazers_count":1084,"open_issues_count":30,"forks_count":321,"subscribers_count":38,"default_branch":"X0","last_synced_at":"2025-05-23T09:28:01.825Z","etag":null,"topics":["anonymity","browser-automation","privacy-protection","web-browser","web-filter","web-proxy","web-scraper"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tholian-network.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE_GPL3.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":"cookiengineer"}},"created_at":"2019-01-06T23:19:15.000Z","updated_at":"2025-05-17T13:16:53.000Z","dependencies_parsed_at":"2024-01-14T04:48:32.351Z","dependency_job_id":"ca2b93de-f095-4226-85fb-6b816c61e109","html_url":"https://github.com/tholian-network/stealth","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tholian-network/stealth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tholian-network%2Fstealth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tholian-network%2Fstealth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tholian-network%2Fstealth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tholian-network%2Fstealth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tholian-network","download_url":"https://codeload.github.com/tholian-network/stealth/tar.gz/refs/heads/X0","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tholian-network%2Fstealth/sbom","scorecard":{"id":882113,"data":{"date":"2025-08-11","repo":{"name":"github.com/tholian-network/stealth","commit":"c6a2091d09514602fbf89036153bd201d4c28d58"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/covert-check.yml:1","Warn: no topLevel permission defined: .github/workflows/covert-scan.yml:1","Warn: no topLevel permission defined: .github/workflows/eslint-lint.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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE_GPL3.txt:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE_GPL3.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'X0'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-check.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-check.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-check.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-check.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-check.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-check.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-check.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-check.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-check.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-check.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-check.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-check.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-check.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-check.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-check.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-check.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-check.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-check.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-scan.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-scan.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-scan.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-scan.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-scan.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-scan.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-scan.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-scan.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-scan.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-scan.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-scan.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-scan.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-scan.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-scan.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-scan.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-scan.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/covert-scan.yml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/covert-scan.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eslint-lint.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/eslint-lint.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eslint-lint.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/eslint-lint.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eslint-lint.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/eslint-lint.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eslint-lint.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/eslint-lint.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eslint-lint.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/eslint-lint.yml/X0?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eslint-lint.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/tholian-network/stealth/eslint-lint.yml/X0?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating node:lts-alpine to node:lts-alpine@sha256:1b2479dd35a99687d6638f5976fd235e26c5b37e8122f786fcd5fe231d63de5b","Warn: npmCommand not pinned by hash: .github/workflows/covert-check.yml:18","Warn: npmCommand not pinned by hash: .github/workflows/covert-check.yml:38","Warn: npmCommand not pinned by hash: .github/workflows/covert-check.yml:58","Warn: npmCommand not pinned by hash: .github/workflows/covert-scan.yml:21","Warn: npmCommand not pinned by hash: .github/workflows/covert-scan.yml:44","Warn: npmCommand not pinned by hash: .github/workflows/covert-scan.yml:67","Warn: npmCommand not pinned by hash: .github/workflows/eslint-lint.yml:30","Warn: npmCommand not pinned by hash: .github/workflows/eslint-lint.yml:42","Warn: npmCommand not pinned by hash: .github/workflows/eslint-lint.yml:18","Info:   0 out of  24 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   9 npmCommand 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-24T08:36:02.832Z","repository_id":41282850,"created_at":"2025-08-24T08:36:02.832Z","updated_at":"2025-08-24T08:36:02.832Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278621844,"owners_count":26017253,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"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":["anonymity","browser-automation","privacy-protection","web-browser","web-filter","web-proxy","web-scraper"],"created_at":"2024-08-01T12:02:21.432Z","updated_at":"2025-10-06T13:44:15.556Z","avatar_url":"https://github.com/tholian-network.png","language":"JavaScript","readme":"\n# Tholian® Stealth - Secure, Peer-to-Peer, Private and Automatable Web Browser/Scraper/Proxy\n\nTholian® Stealth is the automateable Web Browser for the Web of Truth and Knowledge.\n\nIts design goals are increased Privacy, increased Automation, adaptive Semantic\nUnderstanding and efficient Bandwidth Usage, no matter the cost.\n\nStealth empowers its Users, not Website Developers that could (,will ,and did) abuse\ntechnologies to compromise the freedom and rights of Web Browser End-Users.\n\n\n## Implemented Features\n\nStealth is both a Web Scraper, Web Service and Web Proxy that can serve its own\nUser Interface (\"Browser UI\") that is implemented using Web Technologies.\n\n- It is secure by default, without compromise. It only supports `DNS via HTTPS`,\n  and uses explicitly `https://` first, and falls back to `http://` only when\n  necessary and only when the website was not MITM-ed.\n\n- It is peer-to-peer and all its features can be reused by standardized network\n  protocols in order to share resources and reduce bandwidth everywhere. It can\n  be used as a `SOCKS Proxy`, as an adblocking `DNS Proxy`, and even as a peer-to-peer\n  `DNS Resolver` or as a peer-to-peer `HTTP/S Proxy` that acts as a transparent\n  reverse caching proxy for its networked external clients.\n\n- It always prioritizes efficient bandwidth use and optimizes for sharing local\n  resources with Trusted Peers. Sites continue to be readable, even when being\n  completely offline.\n\n- It is multicast [DNS-based Service Discovery](https://dns-sd.org) compatible,\n  so it's able to discover other (local) Peers without any centralized network\n  service which could be potentially blocked and/or compromised.\n\n- It uses `Blockers` that is on feature-parity with AdBlock Plus, AdGuard, Pi-Hole,\n  uBlock Origin and uMatrix (in the sense of \"all of the above\").\n\n- It uses `Optimizers` to render only the good parts of HTML and CSS. These ensure that\n  no Client or Peer ever receives any malicious or unwanted content. All Optimizers are\n  applied across all `Site Modes`, and the `Site Modes` decide what content or media is\n  included.\n\n- It uses `Site Modes` that decide what to load, with incrementally allowed features\n  (or media types). By default, Stealth will load nothing. The Site Mode next to the\n  address bar decides what is being loaded.\n\n- It uses `Site Beacons` that label data on a Site for automated extraction purposes\n  which help to train Stealth to understand similar Sites on the Web more easily.\n  This is similar to the \"Reader Mode\" in other Browsers, but allows integrations with\n  third-party databases and both exports/imports from/to third-party software in an\n  automated manner.\n\n- It never requests anything unnecessary. The cache is persistent and time sensitive\n  until the user tells it to `refresh` the Site manually or the manually configured\n  Internet History lifetime has expired.\n\n- It uses trust-based `Peers` to share the local cache. Peers can receive, interchange,\n  and synchronize their downloaded contents. This is especially helpful in rural areas,\n  where internet bandwidth is sparse; and redundant downloads can be saved.\n\n- It can act as a Content-Auditing and Content-Filtering Web Proxy for other Web Browsers,\n  which allows corporate-like setups with a shared peer-to-peer Cache and a local Archive\n  of the Web. Simply point your SOCKS4/5 or HTTP/S client to `http://stealth-service:65432/proxy.pac`.\n\n- It offers intelligent solutions for Error scenarios. In case a Site is not available\n  anymore, the `stealth:fix-request` Page allows to download the Site automagically from\n  trusted Peers or from the [Web Archive](https://web.archive.org).\n\n- This ain't your Mama's Web Browser. It completely disables ECMAScript in order to improve\n  Privacy. Stealth also does not support any Web API that could potentially send data to\n  malicious Sites.\n\n- Stealth can be scripted as a Web Scraper inside `node.js`. The [Browser](./browser/source)\n  is completely headless, so every single interaction that the [Browser UI](./browser/design)\n  reflects can be implemented in a programmable manner, even remotely through trusted Peers\n  using Stealth's peer-to-peer network services.\n\n\n## Upcoming Features\n\n- Stealth will receive an easy-to-follow Wizard for synchronizing cached content with other\n  Peers in a Wi-Fi / Meshnet setup, so that users can easily select which Sites to backup\n  and synchronize to other Peers.\n\n- Stealth in combination with a connected Radar instance will allow to discover global Peers,\n  and will allow to share and reuse `Beacons` and `Echoes` that help to automate even more\n  tasks on the Web.\n\n- Stealth will allow peer-to-peer TLS encryption by using intermediary certificates which are\n  shipped with each release and allow to download cached content in a trustless manner by\n  implementing a TLS-based notary mechanism for signing and validating the correctness of\n  content (additionally to the encrypted transport layer).\n\n\n## Quickstart\n\nIf you don't wanna deal with the native build toolchain, this\nis how to get started as quickly as possible:\n\n- Install [node.js](https://nodejs.org/en/download) latest (minimum version `12`).\n- Install [Ungoogled Chromium](https://github.com/Eloston/ungoogled-chromium/releases) latest (minimum version `70`).\n- (Only MacOS) Alternatively Install `Safari` latest (minimum version `12`).\n- (Only Linux) Alternatively Install `electron` latest (minimum version `8`).\n- (Only Linux) Alternatively Install `gjs` and `WebKit2 GTK` latest (minimum version `4`).\n\n```bash\ngit clone https://github.com/tholian-network/stealth.git;\n\n# Make everything\nnode ./make.mjs;\n\n# Start Stealth Service (optional debug flag)\nnode ./stealth/stealth.mjs serve --debug=true;\n\n# Open as Progressive Web App\nnode ./browser/browser.mjs;\n\n# Alternatively open Stealth's Browser UI in a Web Browser\n# gio open \"http://localhost:65432\"\n```\n\n**IMPORTANT**: On mobile phones, Stealth can be used as a Web App by visiting the URL and\nadding it to the Home Screen. It will behave like an offline-ready App, and allow to visit\ndownloaded Sites from the Cache; given that the Stealth Service is reachable via Wi-Fi or LAN\nfrom your mobile phone.\n\n\n## Releases\n\nAt this point in Development, Stealth is implemented as a headless node.js Browser/Scraper/Proxy\nwhich serves its own HTML5-based User Interface.\n\nAt a later point in time, Stealth will be released as a bundle of a node.js fork and with a WebKit\nfork called [RetroKit](https://github.com/tholian-network/retrokit.git).\n\nAs Stealth is implemented in node.js, RetroKit only functions as a WebView for rendering, and its\npurpose is to be a WebView with a reduced attack surface, so it removes a lot of APIs that could\notherwise be used for tracking and exploitation.\n\nAs of today, it is heavily recommended to use [Ungoogled Chromium](https://ungoogled-software.github.io)\nas a Webview if you want to run Stealth via [browser/browser.mjs](/browser/browser.mjs).\n\n(Links will be inserted here once the Stealth releases are ready for the public)\n\n\n## Stealth Guide (for Hackers?)\n\nThe [Guide](/guide/README.md) is currently meant for Developers that are new to the Project.\nIt explains all necessary topics to quickly get started to hack around with Stealth and modify\nit to fit your needs.\n\nA User's Guide probably will arrive at a later point in time, as Stealth currently has no\npublic release yet.\n\n\n## Community\n\nThere's a Telegram Chat available where most technical discussions happen.\nYou can join it via [t.me/tholian_beta](https://t.me/tholian_beta) or search for `Tholian Beta`.\n\n\n## Roadmap\n\nThe current roadmap is reflected by unimplemented [/issues](./issues) in this\nGitHub repository.\n\nA high-level overview is available at our Website's [Roadmap](https://tholian.network/roadmap.html),\nwhich also lists other projects that will be built in order to integrate Stealth\nwith larger featuresets.\n\nAs this project in its current form is highly experimental software, those features\ncan change very rapidly; and lead to at least partial refactors of the codebase as\nwell.\n\nIf you have Problems, Suggestions or Ideas that would fit into Stealth, please open\nup an Issue and we'll be happy to talk about it :)\n\n\n## License\n\nPrivate Usage of [Stealth](/stealth), including its [Browser](/browser) and the\n[Covert Testsuite](/covert) is licensed under [GNU GPL 3](./LICENSE_GPL3.txt).\n\nCommercial Usage of [Stealth](/stealth), including its [Browser](/browser) and the\n[Covert Testsuite](/covert) is only allowed under under a custom available license.\n\nIf you want to commercially use the technology behind Stealth, please contact us on\n[https://tholian.network](https://tholian.network) for a license.\n\n`(c) 2019-2021 Tholian(r) Network`\n\n","funding_links":["https://github.com/sponsors/cookiengineer"],"categories":["JavaScript","others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftholian-network%2Fstealth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftholian-network%2Fstealth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftholian-network%2Fstealth/lists"}