{"id":32059709,"url":"https://github.com/kaushikgopal/ff-container-traffic-control","last_synced_at":"2026-01-31T16:17:12.661Z","repository":{"id":315468644,"uuid":"1059607290","full_name":"kaushikgopal/ff-container-traffic-control","owner":"kaushikgopal","description":"Firefox addon (extension) that helps you define rules which will control which container a website opens in.","archived":false,"fork":false,"pushed_at":"2025-10-23T16:04:32.000Z","size":875,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-23T18:09:31.331Z","etag":null,"topics":["firefox","firefox-addon","firefox-extension","privacy","security"],"latest_commit_sha":null,"homepage":"https://addons.mozilla.org/en-US/firefox/addon/ctc/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kaushikgopal.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":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-09-18T17:14:38.000Z","updated_at":"2025-10-23T16:04:36.000Z","dependencies_parsed_at":"2025-09-18T21:18:35.044Z","dependency_job_id":"c8cea330-39ed-4938-9be7-f22dcd1252c3","html_url":"https://github.com/kaushikgopal/ff-container-traffic-control","commit_stats":null,"previous_names":["kaushikgopal/ff-container-traffic-control"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kaushikgopal/ff-container-traffic-control","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaushikgopal%2Fff-container-traffic-control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaushikgopal%2Fff-container-traffic-control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaushikgopal%2Fff-container-traffic-control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaushikgopal%2Fff-container-traffic-control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaushikgopal","download_url":"https://codeload.github.com/kaushikgopal/ff-container-traffic-control/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaushikgopal%2Fff-container-traffic-control/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28947573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T14:26:55.697Z","status":"ssl_error","status_checked_at":"2026-01-31T14:26:52.545Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["firefox","firefox-addon","firefox-extension","privacy","security"],"created_at":"2025-10-18T19:01:42.242Z","updated_at":"2026-01-31T16:17:12.656Z","avatar_url":"https://github.com/kaushikgopal.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"200\" alt=\"CTC icon\" src=\"./icons/icon.png\" /\u003e\n\u003c/div\u003e\n\n# Container Traffic Control\n\nContainer Traffic Control (CTC) is a Firefox extension that automatically manages which container websites open in, based on rules you define. Works with Firefox's [Multi-Account Containers](https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/).\n\n# Why Use Container Traffic Control?\n\nOther [container](https://github.com/kintesh/containerise) [extensions](https://github.com/mcortt/Conductor/tree/main) exist, but they often lack control when you need it most. You end up fighting the setup rather than using containers effortlessly.\n\nThis extension uses a rule-based mechanism designed for how containers are actually used in practice.\n\n### General Concept\n\n[Firefox Containers](https://support.mozilla.org/en-US/kb/how-use-firefox-containers) let you open two Gmail tabs in the same window with different profiles—one for work, one for personal.\n\n### Example 1: Multiple GitHub Profiles\n\nYou have work and personal GitHub accounts. Your work account uses SSO (Okta), and you want `github.com/company-name/*` links to open in your Work container while `github.com/username/*` opens in Personal.\n\nWhen you click a GitHub link from email or Slack, your options without CTC are:\n- Right-click → open in specific container\n- Create new tab in that container → copy/paste the link\n\nThis gets tedious fast.\n\n### Example 2: YouTube Premium\n\nYou have multiple Google profiles with separate containers. You subscribe to YouTube Premium on your personal account, so you want all YouTube links to open there (no ads), regardless of where you click them—work email, personal email, Slack, etc.\n\nCTC automatically routes all YouTube links to your Personal container.\n\n### Example 3: Google Docs Account Routing\n\nYou want `https://docs.google.com/document/u/0/*` to open in Personal and `https://docs.google.com/document/u/1/*` to open in Work.\n\nCTC supports both simple URL patterns and regex, giving you precise control over routing.\n\nThese are the primary use cases. CTC also handles subtle scenarios like open/restricted containers and seamless redirects when switching containers.\n\n# Features\n\n- Intuitive Rule setup for Containers (explained below)\n- uses Firefox's native add-on sync across all platforms\n- quick export/import of settings\n\n\n## Intuitive Rule setup\n\n1. CTC lists all your existing containers\n2. Mark each container as \"open\" (accepts these URLs + any others) or \"restricted\" (only these URLs)\n3. Add URL patterns—simple strings like `github.com` or regex like `/.*\\.github\\.com/`\n\nNow use Firefox normally. CTC acts as traffic control, routing links to the right containers automatically.\n\n\u003cimg width=\"1452\" height=\"1146\" alt=\"screenshot_20250928_002931@2x\" src=\"https://github.com/user-attachments/assets/1e68dcaf-29f5-49eb-9017-9ffa0521d2a5\" /\u003e\n\u003cimg width=\"1628\" height=\"2841\" alt=\"screenshot_20250928_002932@2x\" src=\"https://github.com/user-attachments/assets/696217c6-56f2-4aaf-a441-660c74f460c8\" /\u003e\n\n\n# Installation \u0026 Development\n\nInstall from [addons.mozilla.org](https://addons.mozilla.org/en-US/firefox/addon/ctc/) directly\n\n## Manual Loading\n\nFirefox → `about:debugging` → \"This Firefox\" → \"Load Temporary Add-on\" → select `manifest.json`\n\n## Debugging\n\n`about:debugging` → \"Container Traffic Control\" → \"Inspect\" (console logs in DevTools Console; storage in Storage tab)\n\nOptions → “Enable debug logging” checkbox flips verbose console output on demand; it is unchecked by default to keep consoles quiet.\n\nFor detailed development guidance, see [AGENTS.md](AGENTS.md).\n\n### Available Commands\n\n```bash\nmake help    # Show all available commands\nmake build   # Build extension package (default)\nmake test    # Run unit tests for rule engine\nmake lint    # Validate extension code and manifest\nmake run     # Run extension in Firefox for development\nmake clean   # Remove build artifacts\n```\n\n### Quick Start\n\n1. Clone this repository\n2. Install web-ext: `brew install web-ext`\n3. Build and test: `make build \u0026\u0026 make test`\n4. Run the extension: `make run`\n\n## On testing\n\n```bash\nmake test  # Run rule engine tests\n```\n\nTests cover pattern matching, rule evaluation, container switching, priority handling, and edge cases. Located in `test/rule-engine-test.js` (runnable as `node test/rule-engine-test.js`). No external dependencies.\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md).\n\n## License\n\nThis project is licensed under the Apache 2.0 License. See the [LICENSE](LICENSE) file for details.\n\nFor attribution notices and copyright information, see the [NOTICE](NOTICE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaushikgopal%2Fff-container-traffic-control","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaushikgopal%2Fff-container-traffic-control","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaushikgopal%2Fff-container-traffic-control/lists"}