{"id":31701650,"url":"https://github.com/arya2004/fynewire","last_synced_at":"2026-01-20T18:09:37.434Z","repository":{"id":317802251,"uuid":"1031609952","full_name":"arya2004/fynewire","owner":"arya2004","description":"packet sniffer with AI-powered filtering with Gemini","archived":false,"fork":false,"pushed_at":"2025-10-03T20:14:01.000Z","size":70,"stargazers_count":1,"open_issues_count":5,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-12T20:15:53.109Z","etag":null,"topics":["c","golang","hacktoberfest","hacktoberfest-accepted","hacktoberfest-starter","hacktoberfest2025"],"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/arya2004.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2025-08-04T04:24:36.000Z","updated_at":"2025-10-03T20:14:05.000Z","dependencies_parsed_at":"2025-10-03T06:23:57.913Z","dependency_job_id":null,"html_url":"https://github.com/arya2004/fynewire","commit_stats":null,"previous_names":["arya2004/fynewire"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/arya2004/fynewire","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arya2004%2Ffynewire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arya2004%2Ffynewire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arya2004%2Ffynewire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arya2004%2Ffynewire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arya2004","download_url":"https://codeload.github.com/arya2004/fynewire/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arya2004%2Ffynewire/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28608157,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T16:10:39.856Z","status":"ssl_error","status_checked_at":"2026-01-20T16:10:39.493Z","response_time":117,"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":["c","golang","hacktoberfest","hacktoberfest-accepted","hacktoberfest-starter","hacktoberfest2025"],"created_at":"2025-10-08T21:06:35.464Z","updated_at":"2026-01-20T18:09:37.415Z","avatar_url":"https://github.com/arya2004.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FyneWire\n\nA cross-platform, modular desktop packet sniffer and analyzer written in Go, featuring a modern Fyne GUI, AI-powered filtering via Google Gemini, and high-speed packet decoding with gopacket.\n\n---\n\n## Features\n\n* 🚦 **Live packet capture** from any local interface using libpcap (via cgo)\n* 🖥️ **Native GUI** (Fyne) – fast, cross-platform, and beautiful\n* 📋 **Protocol decoding** with [gopacket](https://github.com/google/gopacket) (Ethernet, IPv4/6, TCP, UDP, etc.)\n* 🧠 **AI-powered filtering**: enter natural language prompts (“only DNS”, “TCP SYN floods”) and see only matching packets (via Google Gemini)\n* 🔌 **Plugin architecture**: filter and enrich packets using the [Strategy](https://en.wikipedia.org/wiki/Strategy_pattern) and [Decorator](https://en.wikipedia.org/wiki/Decorator_pattern) patterns\n* 🧪 **Unit and UI tests** – including headless Fyne test driver for CI\n* 🤖 **GitHub Actions CI**: builds, vets, and tests on push\n\n---\n\n## Building and Running\n\n### Prerequisites\n\nYou will need the following installed to build and run FyneWire:\n\n* **Go 1.21+**: Download from [go.dev](https://go.dev/doc/install).\n* **A C Compiler**: Such as GCC, Clang, or the Xcode Command Line Tools.\n    * On macOS: `xcode-select --install`\n    * On Debian/Ubuntu: `sudo apt-get install build-essential`\n* **`libpcap` Development Libraries**: This is required for packet capture.\n    * On macOS: `brew install libpcap`\n    * On Debian/Ubuntu: `sudo apt-get install libpcap-dev`\n    * On Fedora/RHEL: `sudo dnf install libpcap-devel`\n* **Google Gemini API Key** (Optional): Required only for the AI filtering feature. You can get a key from [Google AI Studio](https://ai.google.dev/).\n\n### Installation and Execution\n\n1.  **Clone the repository:**\n    ```bash\n    git clone [https://github.com/arya2004/fynewire.git](https://github.com/arya2004/fynewire.git)\n    cd fynewire\n    ```\n\n2.  **Build the application:**\n    The `make` command compiles the required C library and builds the Go application.\n    ```bash\n    make\n    ```\n\n3.  **Run the application:**\n    Packet sniffing requires elevated privileges.\n    ```bash\n    sudo ./fynewire\n    ```\n    \n    * To use the **AI filtering features**, you must set your API key as an environment variable first. Use the `-E` flag with `sudo` to preserve the variable.\n        ```bash\n        export GEMINI_API_KEY=\"your-api-key\"\n        sudo -E ./fynewire\n        ```\n\n---\n\n## Design Overview\n\n* **Multi-layered**: C only exposes raw capture; all parsing/logic is in Go.\n* **Strategy pattern**: Swap filtering logic (pass-through, Gemini/AI, or custom code) at runtime.\n* **Decorator pattern**: Enrich packets (GeoIP, TLS SNI, etc.) by stacking decorators with zero copy.\n* **gopacket**: Efficient protocol parsing in pure Go.\n* **Fyne**: Responsive, cross-platform UI. Data binding keeps lists live.\n* **cgo**: Clean, minimal, and cross-platform for direct libpcap access.\n\n---\n\n## Testing \u0026 CI\n\n* **Unit tests**: Run with `go test ./...`\n* **GUI tests**: Headless mode via Fyne’s test driver.\n* **Continuous Integration**: [GitHub Actions](.github/workflows/ci.yml) builds and tests on every push.\n\n---\n\n## Contributing\n\n1. Fork and branch!\n2. Run `make vet` and `go test ./...` before opening PRs.\n3. For new features, keep C glue minimal; extend Go strategies or decorators.\n4. For Gemini/AI features, be mindful of API quotas and errors.\n\n---\n\n## License\n\n[MIT](LICENSE)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farya2004%2Ffynewire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farya2004%2Ffynewire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farya2004%2Ffynewire/lists"}