{"id":13611647,"url":"https://github.com/snappdevelopment/Kommute","last_synced_at":"2025-04-13T05:33:17.143Z","repository":{"id":63750139,"uuid":"531371506","full_name":"snappdevelopment/Kommute","owner":"snappdevelopment","description":"Monitor your android apps network traffic for debugging","archived":false,"fork":false,"pushed_at":"2024-05-20T21:31:12.000Z","size":21189,"stargazers_count":44,"open_issues_count":10,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-21T00:11:21.414Z","etag":null,"topics":["android","compose","debugging","kommute","kotlin","network","observer"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/snappdevelopment.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2022-09-01T05:09:43.000Z","updated_at":"2024-05-29T22:37:07.830Z","dependencies_parsed_at":"2024-02-21T20:43:15.931Z","dependency_job_id":"1d1cfee1-6e8e-40b3-a526-c0943f0cad38","html_url":"https://github.com/snappdevelopment/Kommute","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snappdevelopment%2FKommute","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snappdevelopment%2FKommute/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snappdevelopment%2FKommute/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snappdevelopment%2FKommute/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snappdevelopment","download_url":"https://codeload.github.com/snappdevelopment/Kommute/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248670513,"owners_count":21142896,"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","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":["android","compose","debugging","kommute","kotlin","network","observer"],"created_at":"2024-08-01T19:01:59.567Z","updated_at":"2025-04-13T05:33:12.127Z","avatar_url":"https://github.com/snappdevelopment.png","language":"Kotlin","funding_links":[],"categories":["Kotlin"],"sub_categories":[],"readme":"# \u003cimg src=\"screenshots/kommuteIcon.png\" height=\"25\"\u003e Kommute \n\n![](https://img.shields.io/maven-central/v/com.sebastianneubauer/kommute) ![](https://img.shields.io/badge/Kotlin-2.0.20-orange) ![](https://img.shields.io/badge/SDK-21+-brightgreen) ![](https://img.shields.io/badge/Android_Weekly-Issue_557-yellow)\n\u003cbr /\u003e\u003cbr /\u003e\nKommute is an Android library to observe your apps network traffic while debugging.\n\u003cbr /\u003e\u003cbr /\u003e\n\n\u003cp float=\"left\"\u003e\n\u003cimg src=\"screenshots/kommute1.png\" height=\"450\"\u003e\n\u003cimg src=\"screenshots/kommute2.png\" height=\"450\"\u003e\n\u003cimg src=\"screenshots/kommuteGif.gif\" height=\"450\"\u003e\n\u003c/p\u003e\n\n## About\n\nKommute lets you observe the network traffic of your app for debugging purposes. It shows all connections from your OkHttp calls and displays various information like headers, request and response bodies.\n\nKommute uses Androids Bubble Api to show the network traffic in a hovering bubble, which makes it easily accessible while navigating through your app.\nThe network traffic can be observed as long as the app lives, even while it is in the background.\n\n## Download\n\nKommute is a debug tool. It comes with a `no-op` version, which should be used in release builds. See `maven-central` tag at the top for latest version.\n\n```groovy\ndependencies {\n    debugImplementation 'com.sebastianneubauer:kommute:latest-version'\n    releaseImplementation 'com.sebastianneubauer:kommute-no-op:latest-version'\n}\n```\n\n## How to use\n\nAdd Kommutes Interceptor to your OkHttp instance.\n\n```kotlin\nval kommuteInterceptor = Kommute.getInstance().getInterceptor()\n\nval httpClient = OkHttpClient.Builder()\n        .addInterceptor(kommuteInterceptor)\n        .build()\n```\n\nGet the Kommute instance and call `start` to show its notification. For example in your apps `onCreate` method.\nMake sure your app has notifications enabled on Android 13+.\n\n```kotlin\nKommute.getInstance().start(context)\n```\n\nClick the expand icon on the notification to open Kommutes Bubble.\n\nThe consumer app needs to enable `coreLibraryDesugaring`. More info [here](https://developer.android.com/studio/write/java8-support).\n\n## Images and Gifs\n\nLike regular API calls, Kommute can show calls to image and gif links and display the returned image/gif. To enable this behaviour, your image loading library needs to use the same OkHttpClient you use for networking. The following example shows the setup with [Coil](https://coil-kt.github.io/coil/).\n\nGet your pre-built OkHttpClient, which has Kommutes Interceptor applied and remove its cache. Then add it to your ImageLoader. See [DiskCache](https://coil-kt.github.io/coil/upgrading/#disk-cache) and [Custom OkHttpClient](https://coil-kt.github.io/coil/recipes/#using-a-custom-okhttpclient) for more info.\n\n```kotlin\nval okHttpClient = getOkHttpClient().newBuilder().cache(null).build()\n\nImageLoader.Builder(context)\n        .okHttpClient(okHttpClient) //add your OkHttpClient\n        .components {               //add support for gifs\n            if (SDK_INT \u003e= 28) {\n                add(ImageDecoderDecoder.Factory())\n            } else {\n                add(GifDecoder.Factory())\n            }\n        }\n        .build()\n```\n\nAfter providing the Imageloader through the [ImageLoadingFactory](https://coil-kt.github.io/coil/getting_started/#image-loaders), it is ready to use with Coils ImageRequest or AsyncImage.\n\nNote: If your ImageLoader uses a cache, subsequent requests to the same image might not be shown in Kommute.\n\n## Minimum Requirements\n\n- Min SDK 21\n- Compile SDK 34\n- JDK 17\n- coreLibraryDesugaring enabled\n\n## Tech Stack\n\n- MVVM Architecture\n- Coroutines/Flow\n- Compose UI\n- Compose Navigation\n- Android Bubble Api\n- Manual DI\n- OkHttp Interceptor\n- Turbine (Unit tests)\n- Detekt (Linting)\n- API validation\n- GitHub Actions\n- Gradle version catalog\n- [JsonTree](https://github.com/snappdevelopment/JsonTree)\n\n## Attribution\n\n\u003ca href=\"https://www.flaticon.com/free-icons/ui\" title=\"icon\"\u003eIcon created by Afian Rochmah Afif - Flaticon\u003c/a\u003e\n\n## License\n\n```\nKommute\nCopyright © 2023 SNAD\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and \nlimitations under the License.\n```\nSee [LICENSE](LICENSE.md) to read the full text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnappdevelopment%2FKommute","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnappdevelopment%2FKommute","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnappdevelopment%2FKommute/lists"}